tessalation started

This commit is contained in:
Confideo-IOM
2026-09-28 15:31:22 +01:00
parent 6e1a531f94
commit 7a1eaa3654
24 changed files with 384 additions and 24 deletions
@@ -30,7 +30,9 @@ void HydraDeferredPipeline::Initialise()
_CreateOutputActor();
_CreateFrameBuffer();
_CreateColourRenderStage();
_CreateLandscapeRenderStage();
_CreateOutputRenderStage();
//_CreateTextureDebugOutputStage();
}
@@ -120,8 +122,8 @@ void HydraDeferredPipeline::_CreateFrameBuffer()
HydraEngine* engine = GetEngine();
HydraTextureBufferManager* tex_buffer_manager = engine->TextureBufferManager();
HydraRenderSettings render_settings = engine->RenderSettings();
glGenFramebuffers(1, &m_frame_buffer_id);
glBindFramebuffer(GL_FRAMEBUFFER, m_frame_buffer_id);
glGenFramebuffers(1, &m_frame_buffer_id);
glBindFramebuffer(GL_FRAMEBUFFER, m_frame_buffer_id);
HydraOutputActor* actor = static_cast<HydraOutputActor*>(GetEngine()->ActorManager()->GetActor(m_output_actor_id));
@@ -207,7 +209,7 @@ void HydraDeferredPipeline::_CreateColourRenderStage()
std::vector<uint32_t> textures;
render_stage->Initialise(shader_path + "deferred_shader.vert",
shader_path + "deferred_shader.frag", "",
shader_path + "deferred_shader.frag", "", "", "",
shader_binding,
m_frame_buffer_id,
textures,
@@ -218,6 +220,54 @@ void HydraDeferredPipeline::_CreateColourRenderStage()
m_render_stages.push_back(render_stage);
}
void HydraDeferredPipeline::_CreateLandscapeRenderStage()
{
HydraRenderStage* render_stage = new HydraRenderStage();
std::string shader_path = std::string(shader_base);
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 per_frame_buffer_id = buffer_manager->FindBuffer("DeferredPerFrameUBO");
HydraShaderBinding shader_binding = {};
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("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("uniform_per_frame");
shader_binding.binding_point.push_back(0);
shader_binding.buffer_id.push_back(per_frame_buffer_id);
shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_UBO_BUFFER);
std::vector<uint32_t> textures;
render_stage->Initialise(shader_path + "landscape_shader.vert",
shader_path + "landscape_shader.frag",
"",
shader_path + "landscape_shader.tesc",
shader_path + "landscape_shader.tese",
shader_binding,
m_frame_buffer_id,
textures,
true,
GL_BACK,
true,
HYDRA_RENDERABLE_TYPE::HYDRA_LANDSCAPE);
m_render_stages.push_back(render_stage);
}
void HydraDeferredPipeline::_CreateOutputRenderStage()
{
@@ -283,7 +333,7 @@ void HydraDeferredPipeline::_CreateOutputRenderStage()
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_path + "deferred_output_shader.frag", "", "", "",
shader_binding,
0,
textures,
@@ -328,7 +378,7 @@ void HydraDeferredPipeline::_CreateTextureDebugOutputStage()
shader_binding.buffer_type.push_back(HYDRA_BUFFER_TYPE::HYDRA_UBO_BUFFER);
render_stage->Initialise(shader_path + "texture_debug_shader.vert",
shader_path + "texture_debug_shader.frag", "",
shader_path + "texture_debug_shader.frag", "", "", "",
shader_binding,
0,
textures,