diff options
| author | hachem <im@hachem.wtf> | 2025-08-16 15:36:25 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2025-08-16 15:36:25 +0200 |
| commit | 46ab589e5e1351f3081b5b4c76350967ef2f88a8 (patch) | |
| tree | adf56c5041a82a17864ddd04d5a82ec1cbc18313 /src/Engine/Engine.cpp | |
| parent | 4172869e54093eee6e1595ebe0fa55c9fe98aef7 (diff) | |
[fix]: First optimization
Diffstat (limited to 'src/Engine/Engine.cpp')
| -rw-r--r-- | src/Engine/Engine.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/Engine/Engine.cpp b/src/Engine/Engine.cpp index ac0e891..799a516 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_ObjectsUBO = UniformBuffer::Create(objUBOSize, 3); + + m_SimulationUBO = UniformBuffer::Create(sizeof(int) * 2 + sizeof(float) * 2, 4); auto result = QuadVAO(); m_QuadVAO = result.first; @@ -97,6 +99,7 @@ namespace Donut UploadCameraUBO(cam); UploadDiskUBO(); UploadObjectsUBO(m_Objects); + UploadSimulationUBO(); m_Texture->BindAsImage(0, false); uint32_t groupsX = static_cast<uint32_t>(std::ceil(cw / 16.0f)); @@ -173,6 +176,25 @@ namespace Donut m_DiskUBO->Bind(2); } + void Engine::UploadSimulationUBO() + { + struct UBOData + { + int maxStepsMoving; + int maxStepsStatic; + float earlyExitDistance; + int padding; + } data; + + data.maxStepsMoving = m_MaxStepsMoving; + data.maxStepsStatic = m_MaxStepsStatic; + data.earlyExitDistance = m_EarlyExitDistance; + data.padding = 0; + + m_SimulationUBO->SetData(&data, sizeof(data)); + m_SimulationUBO->Bind(4); + } + void Engine::UpdatePhysics(float deltaTime) { for (auto& obj : m_Objects) |
