hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/src/engine/engine.cpp
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2025-08-22 04:48:42 +0200
committerhachem <im@hachem.wtf>2025-08-22 04:48:42 +0200
commit77717ae7c4f7c8f180e5c5e24cf1098c02f3dbf4 (patch)
tree61ef3218a5e1f46e13b10cea3141f2eeee81bd7c /src/engine/engine.cpp
parent2dd07499241638e66ee0df97cba91219f5599151 (diff)
feat: add bloom and blur
Diffstat (limited to 'src/engine/engine.cpp')
-rw-r--r--src/engine/engine.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp
index 435b3e0..9a88e9e 100644
--- a/src/engine/engine.cpp
+++ b/src/engine/engine.cpp
@@ -34,6 +34,7 @@ namespace Donut
m_shader_program = Ref<Shader>(Shader::create("assets/shaders/compute_texture_quad.glsl"));
m_compute_program = create_compute_program("assets/shaders/geodesic.glsl");
+ m_blur_shader = Ref<Shader>(Shader::create("assets/shaders/blur.glsl"));
m_camera_ubo = UniformBuffer::create(128, 1);
m_disk_ubo = UniformBuffer::create(sizeof(float) * 5, 2);
@@ -96,6 +97,24 @@ namespace Donut
RenderCommand::enable_depth_test();
}
+ void Engine::draw_blur_pass()
+ {
+ RenderCommand::set_viewport(0, 0, m_width, m_height);
+
+ m_blur_shader->bind();
+ m_quad_vao->bind();
+
+ m_texture->bind(0);
+ m_blur_shader->set_int("u_ScreenTexture", 0);
+ m_blur_shader->set_float2("u_Resolution", glm::vec2(m_width, m_height));
+ m_blur_shader->set_float("u_BlurStrength", m_blur_strength);
+ m_blur_shader->set_float("u_GlowIntensity", m_glow_intensity);
+
+ RenderCommand::disable_depth_test();
+ RenderCommand::draw_arrays(6);
+ RenderCommand::enable_depth_test();
+ }
+
void Engine::dispatch_compute(const Camera& cam)
{
int cw = get_compute_width();