From b0eb31c1a2347229754ce0e7ce2b588cc099546a Mon Sep 17 00:00:00 2001
From: Alexander Gauggel <agauggel@uni-koblenz.de>
Date: Sat, 26 Jun 2021 15:12:15 +0200
Subject: [PATCH] [#82] Make lens dirt energy conserving

---
 .../resources/shaders/bloomFlaresComposite.comp     | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/projects/voxelization/resources/shaders/bloomFlaresComposite.comp b/projects/voxelization/resources/shaders/bloomFlaresComposite.comp
index fdc8884d..57174b73 100644
--- a/projects/voxelization/resources/shaders/bloomFlaresComposite.comp
+++ b/projects/voxelization/resources/shaders/bloomFlaresComposite.comp
@@ -41,7 +41,14 @@ float getLensDirtWeight(vec2 uv){
     
     uv.x                        *= targetAspectRatio / dirtAspectRatio;
     float   dirt                = texture(sampler2D(dirtTexture, radialLUTSampler), uv).r;
-    float   dirtStrength        = 0.75;
+    float   dirtStrength        = 0.4f;
+    
+    // manually looked up in gimp, must be adjusted when changing dirt texture
+    float dirtMean = 0.132;
+    // make sure no energy is lost
+    // otherwise bloom is darkened when the dirt increases
+    dirt /= dirtMean;   
+    
     return mix(1, dirt, dirtStrength);
 }
 
@@ -62,8 +69,8 @@ void main()
     vec3 main_color   = imageLoad(colorBuffer, pixel_coord).rgb;
 
     // composite blur and lens features
-    float bloom_weight = 0.15f;
-    float lens_weight  = 0.15f;
+    float bloom_weight = 0.06f;
+    float lens_weight  = 0.02f;
     float main_weight = 1 - (bloom_weight + lens_weight);
 
     lens_color *= starburst(UV);
-- 
GitLab