Directional Shdaows, no alpha

This commit is contained in:
Confideo-IOM
2026-08-03 22:34:52 +01:00
parent 299ad1d9c7
commit d074dc71a5
69 changed files with 1353 additions and 406 deletions
@@ -39,27 +39,35 @@ void HydraShadowPipeline::Render()
glEnable(GL_DEPTH_TEST); // Depth testing must be active
glDepthMask(GL_TRUE); // Depth buffer must be writable
glDepthFunc(GL_LESS);
//glEnable(GL_POLYGON_OFFSET_FILL);
//glPolygonOffset(2.5f, 1.0f);
for (HydraID entity_id : shadow_system->Entities)
{
_UpdateUBO(shadow_idx);
// _BindFrameBufferAttachments(entity_id);
HydraShadowSourceComponent shad_comp = GetEngine()->ECS()->GetComponent<HydraShadowSourceComponent>(entity_id);
glBindFramebuffer(GL_FRAMEBUFFER, shad_comp.frame_buffer_id);
glBindTextureUnit(0, 0);
// HydraTextureBuffer tex_buffer = GetEngine()->TextureBufferManager()->GetTexture(shad_comp.shadow_texture_id);
// glBindTextureUnit(tex_buffer.gl_tex_id, 0);
float depth_value = 1.0f;
float clear_colour[] = {0,0,0};
glClearNamedFramebufferfv(shad_comp.frame_buffer_id, GL_DEPTH, 0, &depth_value);
glClearNamedFramebufferfv(shad_comp.frame_buffer_id, GL_COLOR, 0, clear_colour);
for (uint32_t rs_idx = 0; rs_idx < m_render_stages.size(); rs_idx++)
{
m_render_stages[rs_idx]->Render(render_system->Entities, INVALID_HYDRA_ID);
}
glBindFramebuffer(GL_FRAMEBUFFER, 0);
shadow_idx++;
}
// glDisable(GL_POLYGON_OFFSET_FILL);
}
void HydraShadowPipeline::_CreateRenderStage()
@@ -69,17 +77,29 @@ void HydraShadowPipeline::_CreateRenderStage()
HydraBufferManager *buffer_manager = GetEngine()->BufferManager();
HydraID pos_buffer_id = buffer_manager->FindBuffer("PositionsBuffer");
HydraID mat_buffer_id = buffer_manager->FindBuffer("MaterialBuffer");
HydraID tex_buffer_id = buffer_manager->FindBuffer("TextureBuffer");
HydraID shadow_buffer_id = buffer_manager->FindBuffer("ShadowBuffer");
HydraID per_frame_buffer_id = buffer_manager->FindBuffer("ShadowPerFrameUBO");
HydraShaderBinding shader_binding = {};
shader_binding.block_name.push_back("PositionsBuffer");
shader_binding.block_name.push_back("positions_buffer");
shader_binding.binding_point.push_back(1);
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("ShadowMapSets");
shader_binding.block_name.push_back("material_buffer");
shader_binding.binding_point.push_back(2);
shader_binding.buffer_id.push_back(mat_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);
shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER);
shader_binding.block_name.push_back("shadow_map_sets");
shader_binding.binding_point.push_back(5);
shader_binding.buffer_id.push_back(shadow_buffer_id);
shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_SSBO_BUFFER);
@@ -98,6 +118,8 @@ void HydraShadowPipeline::_CreateRenderStage()
0,
textures,
true,
GL_FRONT,
true,
HYDRA_RENDERABLE_TYPE::HYDRA_COLOUR);
m_render_stages.push_back(render_stage);
}