From 8f906c3139a813b9a829821944b464b3facdad59 Mon Sep 17 00:00:00 2001 From: hachem Date: Sat, 16 Aug 2025 15:36:25 +0200 Subject: fix: first optimization --- src/engine/engine.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/engine/engine.cpp') diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index c2a84a8..c9a23ca 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -39,6 +39,8 @@ namespace Donut + 16 * (sizeof(glm::vec4) + sizeof(glm::vec4)) + 16 * sizeof(float); m_objects_ubo = UniformBuffer::create(obj_ubo_size, 3); + + m_simulation_ubo = UniformBuffer::create(sizeof(int) * 2 + sizeof(float) * 2, 4); auto result = quad_vao(); m_quad_vao = result.first; @@ -97,6 +99,7 @@ namespace Donut upload_camera_ubo(cam); upload_disk_ubo(); upload_objects_ubo(m_objects); + upload_simulation_ubo(); m_texture->bind_as_image(0, false); uint32_t groups_x = static_cast(std::ceil(cw / 16.0f)); @@ -173,6 +176,25 @@ namespace Donut m_disk_ubo->bind(2); } + void Engine::upload_simulation_ubo() + { + struct UBOData + { + int max_steps_moving; + int max_steps_static; + float early_exit_distance; + int padding; + } data; + + data.max_steps_moving = m_max_steps_moving; + data.max_steps_static = m_max_steps_static; + data.early_exit_distance = m_early_exit_distance; + data.padding = 0; + + m_simulation_ubo->set_data(&data, sizeof(data)); + m_simulation_ubo->bind(4); + } + void Engine::update_physics(float delta_time) { for (auto& obj : m_objects) -- cgit v1.3