diff options
| author | hachem <im@hachem.wtf> | 2026-08-23 22:39:47 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-08-23 22:39:47 +0200 |
| commit | 4a72c63f74bc055c29f397f54fca8e9613f4474d (patch) | |
| tree | 5b6f96f22a67f4e303ae72b6e9763d25a6dadd16 /src/rendering/scene_renderer.cpp | |
| parent | 6ee03a2ea3c764f0364b2e61beb6812226facd4c (diff) | |
feat: wire the scene into the simulation engine
Diffstat (limited to 'src/rendering/scene_renderer.cpp')
| -rw-r--r-- | src/rendering/scene_renderer.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/rendering/scene_renderer.cpp b/src/rendering/scene_renderer.cpp index c9da332..c2dd9d1 100644 --- a/src/rendering/scene_renderer.cpp +++ b/src/rendering/scene_renderer.cpp @@ -38,6 +38,8 @@ namespace Donut struct SkyboxUBO { glm::mat4 projection; glm::mat4 view; }; static_assert(sizeof(SkyboxUBO) == 128, "SkyboxUBO std140 layout mismatch"); + + constexpr float BH_SCENE_RADIUS = SCENE_UNITS_PER_RS; } auto SceneRenderer::init(RHI::Device& device) -> bool @@ -128,6 +130,8 @@ namespace Donut m_skybox_pipeline = device.create_pipeline(d); } + m_bh_ubo = device.create_buffer(BufferType::Uniform, sizeof(SphereUBO)); + DONUT_INFO("SceneRenderer ready ({} grid verts, {} sphere indices, skybox)", m_grid_vertex_count, m_sphere_index_count); return true; @@ -182,6 +186,23 @@ namespace Donut cmd.bind_index_buffer(m_sphere_ib.get()); cmd.draw_indexed(m_sphere_index_count); } + + SphereUBO bh{}; + bh.view_projection = vp; + bh.transform = glm::scale(glm::mat4(1.0f), glm::vec3(BH_SCENE_RADIUS)); + bh.color = glm::vec3(0.02f); + bh.specular = 0.10f; + bh.light_pos = glm::vec3(10.0f, 20.0f, 10.0f); + bh.camera_pos = cam.position; + bh.is_selected = 1; + bh.outline_color = glm::vec3(0.98f, 0.62f, 0.20f); + bh.outline_width = 0.30f; + m_bh_ubo->update(&bh, sizeof(bh)); + cmd.bind_uniform(0, m_bh_ubo.get()); + cmd.bind_texture(1, cubemap); + cmd.bind_vertex_buffer(m_sphere_vb.get()); + cmd.bind_index_buffer(m_sphere_ib.get()); + cmd.draw_indexed(m_sphere_index_count); } { |
