Shadow buffer
This commit is contained in:
@@ -39,21 +39,36 @@ void HydraDeferredPipeline::Render()
|
||||
{
|
||||
_UpdateUBO();
|
||||
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, m_frame_buffer_id);
|
||||
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
|
||||
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // we're not using the stencil buffer now
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
HydraECS* ecs = GetEngine()->ECS();
|
||||
std::shared_ptr<HydraRenderSystem> render_system = ecs->GetSystem<HydraRenderSystem>();
|
||||
|
||||
GetEngine()->Renderer()->BeginFrame();
|
||||
HydraRenderSettings render_settings = GetEngine()->RenderSettings();
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
glViewport(0, 0, render_settings.ViewportWidth, render_settings.ViewportHeight);
|
||||
|
||||
float clear_colour[4] = {0, 0, 0, 0};
|
||||
float depth_value = 1;
|
||||
|
||||
glClearNamedFramebufferfv(m_frame_buffer_id, GL_COLOR, 0, clear_colour);
|
||||
glClearNamedFramebufferfv(m_frame_buffer_id, GL_COLOR, 1, clear_colour);
|
||||
glClearNamedFramebufferfv(m_frame_buffer_id, GL_COLOR, 2, clear_colour);
|
||||
glClearNamedFramebufferfv(m_frame_buffer_id, GL_COLOR, 3, clear_colour);
|
||||
glClearNamedFramebufferfv(m_frame_buffer_id, GL_DEPTH, 0, &depth_value);
|
||||
|
||||
float screen_colour[4] = {0.0f, 0.5f, 0.7f, 1.0f};
|
||||
glClearNamedFramebufferfv(0, GL_COLOR, 0, screen_colour);
|
||||
glClearNamedFramebufferfv(0, GL_DEPTH, 0, &depth_value);
|
||||
|
||||
for(uint32_t rs_idx = 0; rs_idx <m_render_stages.size(); rs_idx++)
|
||||
{
|
||||
m_render_stages[rs_idx]->Render(render_system->Entities);
|
||||
}
|
||||
GetEngine()->Renderer()->EndFrame();
|
||||
|
||||
}
|
||||
|
||||
void HydraDeferredPipeline::_UpdateUBO()
|
||||
@@ -126,11 +141,11 @@ void HydraDeferredPipeline::_CreateFrameBuffer()
|
||||
glDrawBuffers(4, draw_buffers);
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
|
||||
tex_buffer_manager->BindTexture(depth_texture.texture_id);
|
||||
tex_buffer_manager->BindTexture(buffer_0_texture.texture_id);
|
||||
tex_buffer_manager->BindTexture(metal_rough_texture.texture_id);
|
||||
tex_buffer_manager->BindTexture(normal_texture.texture_id);
|
||||
tex_buffer_manager->BindTexture(position_texture.texture_id);
|
||||
tex_buffer_manager->BindTexture(depth_texture.texture_id, GL_TEXTURE_2D);
|
||||
tex_buffer_manager->BindTexture(buffer_0_texture.texture_id, GL_TEXTURE_2D);
|
||||
tex_buffer_manager->BindTexture(metal_rough_texture.texture_id, GL_TEXTURE_2D);
|
||||
tex_buffer_manager->BindTexture(normal_texture.texture_id, GL_TEXTURE_2D);
|
||||
tex_buffer_manager->BindTexture(position_texture.texture_id, GL_TEXTURE_2D);
|
||||
|
||||
|
||||
HydraBufferManager* buffer_manager = GetEngine()->BufferManager();
|
||||
|
||||
Reference in New Issue
Block a user