From 7a78a50146abfbac6700683df40e1cfba9bf0a10 Mon Sep 17 00:00:00 2001
From: Alexander Gauggel <agauggel@uni-koblenz.de>
Date: Thu, 12 Aug 2021 17:39:22 +0200
Subject: [PATCH] [#106] Fix motion blur artifacts properly

---
 .../resources/shaders/motionBlurDummy.comp                | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/projects/indirect_dispatch/resources/shaders/motionBlurDummy.comp b/projects/indirect_dispatch/resources/shaders/motionBlurDummy.comp
index a57319b9..a90e142d 100644
--- a/projects/indirect_dispatch/resources/shaders/motionBlurDummy.comp
+++ b/projects/indirect_dispatch/resources/shaders/motionBlurDummy.comp
@@ -14,7 +14,6 @@ layout( push_constant ) uniform constants{
     float minVelocity;
 };
 
-
 void main(){
 
     if(any(greaterThanEqual(gl_GlobalInvocationID.xy, imageSize(outImage))))
@@ -25,6 +24,7 @@ void main(){
     vec2    uv          = vec2(coord) / textureRes;
 
     vec2    motion      = texture(sampler2D(inMotion, textureSampler), uv).rg;
+            motion      *= motionFactor;
     float   velocity    = length(motion);
     
     // early out on little movement
@@ -34,7 +34,11 @@ void main(){
         return;
     }
     
-    motion              *= motionFactor;
+    // TODO: should be configurable by user or computed by velocity tile sizes
+    const float maxBlurDistance = 0.075;
+    if(velocity > maxBlurDistance){
+        motion *= maxBlurDistance / velocity;
+    }
 
     vec3        color       = vec3(0);
     const int   sampleCount = 16;
-- 
GitLab