hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/src/engine/engine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/engine.cpp')
-rw-r--r--src/engine/engine.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp
index 9a88e9e..451684b 100644
--- a/src/engine/engine.cpp
+++ b/src/engine/engine.cpp
@@ -10,6 +10,7 @@
#include "engine.h"
#include "core/log.h"
+#include "core/hdri_manager.h"
#include "rendering/vertex_buffer.h"
#include "rendering/index_buffer.h"
@@ -36,6 +37,16 @@ namespace Donut
m_compute_program = create_compute_program("assets/shaders/geodesic.glsl");
m_blur_shader = Ref<Shader>(Shader::create("assets/shaders/blur.glsl"));
+ auto& hdri_manager = HDRIManager::get();
+ m_hdri_environment = hdri_manager.get_current_hdri();
+ if (!m_hdri_environment)
+ {
+ hdri_manager.set_current_hdri("assets/hdri/hdr_blue_nebulae_1.hdr");
+ m_hdri_environment = hdri_manager.get_current_hdri();
+ if (!m_hdri_environment)
+ DONUT_WARN("Failed to load default HDRI, using fallback");
+ }
+
m_camera_ubo = UniformBuffer::create(128, 1);
m_disk_ubo = UniformBuffer::create(sizeof(float) * 5, 2);
@@ -117,6 +128,9 @@ namespace Donut
void Engine::dispatch_compute(const Camera& cam)
{
+ auto& hdri_manager = HDRIManager::get();
+ m_hdri_environment = hdri_manager.get_current_hdri();
+
int cw = get_compute_width();
int ch = m_compute_height;
@@ -128,7 +142,10 @@ namespace Donut
upload_objects_ubo(m_objects);
upload_simulation_ubo();
m_texture->bind_as_image(0, false);
-
+
+ if (m_hdri_environment)
+ m_hdri_environment->bind(5);
+
uint32_t groups_x = static_cast<uint32_t>(std::ceil(cw / 16.0f));
uint32_t groups_y = static_cast<uint32_t>(std::ceil(ch / 16.0f));
m_compute_program->dispatch(groups_x, groups_y, 1);
@@ -508,4 +525,5 @@ namespace Donut
RenderCommand::set_viewport(0, 0, original_width, original_height);
}
+
}