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 | 8f906c3139a813b9a829821944b464b3facdad59 (patch) | |
| tree | bb516369660344b254dc504ef28a079920e1d6f9 /src/engine/engine.h | |
| parent | a6655eebe2a69ee427264bd43df5747851ed96df (diff) | |
fix: first optimization
Diffstat (limited to 'src/engine/engine.h')
| -rw-r--r-- | src/engine/engine.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/engine/engine.h b/src/engine/engine.h index 39791c1..0d0fb1b 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -73,6 +73,7 @@ namespace Donut void upload_camera_ubo(const Camera& cam); void upload_objects_ubo(const std::vector<ObjectData>& objs); void upload_disk_ubo(); + void upload_simulation_ubo(); void render_scene(); void update_physics(float delta_time); void update_window_dimensions(); @@ -93,6 +94,13 @@ namespace Donut int get_compute_height() const { return m_compute_height; } int get_compute_width() const { return (m_width * m_compute_height) / m_height; } void update_compute_dimensions(); + + int get_max_steps_moving() const { return m_max_steps_moving; } + int get_max_steps_static() const { return m_max_steps_static; } + float get_early_exit_distance() const { return m_early_exit_distance; } + void set_max_steps_moving(int steps) { m_max_steps_moving = steps; } + void set_max_steps_static(int steps) { m_max_steps_static = steps; } + void set_early_exit_distance(float distance) { m_early_exit_distance = distance; } private: Ref<Shader> create_compute_program(const char* path); std::pair<Ref<VertexArray>, Ref<Texture2D>> quad_vao(); @@ -104,6 +112,7 @@ namespace Donut Ref<UniformBuffer> m_camera_ubo; Ref<UniformBuffer> m_disk_ubo; Ref<UniformBuffer> m_objects_ubo; + Ref<UniformBuffer> m_simulation_ubo; int m_width; int m_height; @@ -113,11 +122,15 @@ namespace Donut int m_target_fps = 60; float m_current_fps = 60.0f; float m_last_frame_time = 0.0f; - int m_compute_height = 320; + int m_compute_height = 150; std::vector<ObjectData> m_objects; BlackHole m_sag_a; Camera m_camera; bool m_gravity = false; + + int m_max_steps_moving = 60000; + int m_max_steps_static = 30000; + float m_early_exit_distance = 5e11f; }; }; |
