diff options
Diffstat (limited to 'src/engine/engine.cpp')
| -rw-r--r-- | src/engine/engine.cpp | 20 |
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); } + } |
