Spot works
This commit is contained in:
@@ -13,6 +13,8 @@
|
||||
#include "../ecs/systems/HydraRenderSystem.h"
|
||||
#include "../ecs/systems/HydraDirectionalShadowSourceSystem.h"
|
||||
#include "../ecs/components/HydraDirectionalShadowSourceComponent.h"
|
||||
#include "../ecs/systems/HydraSpotShadowSourceSystem.h"
|
||||
#include "../ecs/components/HydraSpotShadowSourceComponent.h"
|
||||
#include "../mesh/StandardVertex.h"
|
||||
#include "../actor/HydraActorManager.h"
|
||||
#include "../actor/HydraOutputActor.h"
|
||||
@@ -95,12 +97,12 @@ void HydraDeferredPipeline::_UpdateUBO()
|
||||
buffer_manager->UpdateWholeBuffer(m_per_frame_output_ubo, &output_ubo);
|
||||
glBindBuffer(GL_UNIFORM_BUFFER, m_per_frame_output_ubo);
|
||||
|
||||
std::shared_ptr<HydraDirectionalShadowSourceSystem> sys = GetEngine()->ECS()->GetSystem<HydraDirectionalShadowSourceSystem>();
|
||||
std::shared_ptr<HydraSpotShadowSourceSystem> sys = GetEngine()->ECS()->GetSystem<HydraSpotShadowSourceSystem>();
|
||||
HydraID texture_id = 0;
|
||||
if(sys->Entities.size() > 0)
|
||||
{
|
||||
auto it = sys->Entities.begin();
|
||||
HydraDirectionalShadowSourceComponent shad_comp = GetEngine()->ECS()->GetComponent<HydraDirectionalShadowSourceComponent>(*it);
|
||||
HydraSpotShadowSourceComponent shad_comp = GetEngine()->ECS()->GetComponent<HydraSpotShadowSourceComponent>(*it);
|
||||
texture_id = shad_comp.shadow_texture_id;
|
||||
}
|
||||
TextureDebugUBO texture_ubo = {};
|
||||
@@ -233,6 +235,8 @@ void HydraDeferredPipeline::_CreateOutputRenderStage()
|
||||
HydraID tex_buffer_id = buffer_manager->FindBuffer("TextureBuffer");
|
||||
HydraID output_texture_buffer_id = buffer_manager->FindBuffer("DeferredOutputTextureUBO");
|
||||
HydraID light_buffer_id = buffer_manager->FindBuffer("LightBuffer");
|
||||
HydraID directional_shadow_buffer_id = buffer_manager->FindBuffer("DirectionalShadowBuffer");
|
||||
HydraID spot_shadow_buffer_id = buffer_manager->FindBuffer("SpotShadowBuffer");
|
||||
|
||||
HydraShaderBinding shader_binding = {};
|
||||
shader_binding.block_name.push_back("position_buffer");
|
||||
@@ -240,7 +244,6 @@ void HydraDeferredPipeline::_CreateOutputRenderStage()
|
||||
shader_binding.buffer_id.push_back(pos_buffer_id);
|
||||
shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER);
|
||||
|
||||
|
||||
shader_binding.block_name.push_back("texture_buffer");
|
||||
shader_binding.binding_point.push_back(3);
|
||||
shader_binding.buffer_id.push_back(tex_buffer_id);
|
||||
@@ -260,7 +263,17 @@ void HydraDeferredPipeline::_CreateOutputRenderStage()
|
||||
shader_binding.binding_point.push_back(4);
|
||||
shader_binding.buffer_id.push_back(light_buffer_id);
|
||||
shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER);
|
||||
|
||||
shader_binding.block_name.push_back("directional_shadow_buffer");
|
||||
shader_binding.binding_point.push_back(5);
|
||||
shader_binding.buffer_id.push_back(directional_shadow_buffer_id);
|
||||
shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER);
|
||||
|
||||
shader_binding.block_name.push_back("spot_shadow_buffer");
|
||||
shader_binding.binding_point.push_back(6);
|
||||
shader_binding.buffer_id.push_back(spot_shadow_buffer_id);
|
||||
shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER);
|
||||
|
||||
render_stage->Initialise(shader_path + "deferred_output_shader.vert",
|
||||
shader_path + "deferred_output_shader.frag", "",
|
||||
shader_binding,
|
||||
|
||||
Reference in New Issue
Block a user