diff options
Diffstat (limited to 'src/Engine')
| -rw-r--r-- | src/Engine/Engine.cpp | 12 | ||||
| -rw-r--r-- | src/Engine/Engine.h | 17 |
2 files changed, 21 insertions, 8 deletions
diff --git a/src/Engine/Engine.cpp b/src/Engine/Engine.cpp index 245f6fd..37cafd8 100644 --- a/src/Engine/Engine.cpp +++ b/src/Engine/Engine.cpp @@ -36,14 +36,14 @@ namespace Donut m_ComputeProgram = CreateComputeProgram("Assets/Shaders/Geodesic.glsl"); m_CameraUBO = UniformBuffer::Create(128, 1); - m_DiskUBO = UniformBuffer::Create(sizeof(float) * 4, 2); + m_DiskUBO = UniformBuffer::Create(sizeof(float) * 5, 2); // Added density parameter uint32_t objUBOSize = sizeof(int) + 3 * sizeof(float) + 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); + m_SimulationUBO = UniformBuffer::Create(sizeof(int) * 2 + sizeof(float) * 2, 4); // time added to existing float auto result = QuadVAO(); m_QuadVAO = result.first; @@ -177,8 +177,8 @@ namespace Donut float r1 = static_cast<float>(m_SagA.m_Rs * 2.2); float r2 = static_cast<float>(m_SagA.m_Rs * 5.2); float num = 2.0f; - float thickness = 1e9f; - float diskData[4] = { r1, r2, num, thickness }; + float thickness = static_cast<float>(m_SagA.m_Rs * m_DiskThickness); + float diskData[5] = { r1, r2, num, thickness, m_DiskDensity }; m_DiskUBO->SetData(diskData, sizeof(diskData)); m_DiskUBO->Bind(2); @@ -191,13 +191,13 @@ namespace Donut int maxStepsMoving; int maxStepsStatic; float earlyExitDistance; - int padding; + float time; } data; data.maxStepsMoving = m_MaxStepsMoving; data.maxStepsStatic = m_MaxStepsStatic; data.earlyExitDistance = m_EarlyExitDistance; - data.padding = 0; + data.time = static_cast<float>(glfwGetTime()) * m_RotationSpeed; m_SimulationUBO->SetData(&data, sizeof(data)); m_SimulationUBO->Bind(4); diff --git a/src/Engine/Engine.h b/src/Engine/Engine.h index 328435a..a0b25b5 100644 --- a/src/Engine/Engine.h +++ b/src/Engine/Engine.h @@ -100,6 +100,15 @@ namespace Donut void SetMaxStepsStatic(int steps) { m_MaxStepsStatic = steps; } void SetEarlyExitDistance(float distance) { m_EarlyExitDistance = distance; } + float GetDiskThickness() const { return m_DiskThickness; } + void SetDiskThickness(float thickness) { m_DiskThickness = thickness; } + + float GetDiskDensity() const { return m_DiskDensity; } + void SetDiskDensity(float density) { m_DiskDensity = density; } + + float GetRotationSpeed() const { return m_RotationSpeed; } + void SetRotationSpeed(float speed) { m_RotationSpeed = speed; } + void LoadObjectsFromScene(const std::vector<Donut::Object>& objects); void ExportHighResFrame(const std::string& filename, int width = 4096, int height = 3072); void PrintObjectInfo() const; @@ -131,8 +140,12 @@ namespace Donut Camera m_Camera; bool m_Gravity = false; - int m_MaxStepsMoving = 60000; - int m_MaxStepsStatic = 30000; + int m_MaxStepsMoving = 60000; + int m_MaxStepsStatic = 30000; float m_EarlyExitDistance = 5e11f; + + float m_DiskThickness = 0.1; + float m_DiskDensity = 1.2f; + float m_RotationSpeed = 1.0f; }; }; |
