[Bf-blender-cvs] [3cd32c376db] blender-v2.82-release: Fix T66956 EEVEE: NaN produced by bad geometry mess with the DoF

Clément Foucault noreply at git.blender.org
Thu Jan 23 15:43:47 CET 2020


Commit: 3cd32c376db32d4072c34b5b6a04943876d8db38
Author: Clément Foucault
Date:   Thu Jan 23 15:05:16 2020 +0100
Branches: blender-v2.82-release
https://developer.blender.org/rB3cd32c376db32d4072c34b5b6a04943876d8db38

Fix T66956 EEVEE: NaN produced by bad geometry mess with the DoF

Sanitize the source of the depth of field.

===================================================================

M	source/blender/draw/engines/eevee/shaders/effect_dof_frag.glsl

===================================================================

diff --git a/source/blender/draw/engines/eevee/shaders/effect_dof_frag.glsl b/source/blender/draw/engines/eevee/shaders/effect_dof_frag.glsl
index ca4940ceffb..5277bfa32bb 100644
--- a/source/blender/draw/engines/eevee/shaders/effect_dof_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/effect_dof_frag.glsl
@@ -41,6 +41,12 @@ float max_v4(vec4 v)
   return max(max(v.x, v.y), max(v.z, v.w));
 }
 
+vec4 safe_color(vec4 c)
+{
+  /* Clamp to avoid black square artifacts if a pixel goes NaN. */
+  return clamp(c, vec4(0.0), vec4(1e20)); /* 1e20 arbitrary. */
+}
+
 #define THRESHOLD 1.0
 
 #ifdef STEP_DOWNSAMPLE
@@ -57,10 +63,10 @@ void main(void)
   ivec4 uvs = ivec4(gl_FragCoord.xyxy) * 2 + ivec4(0, 0, 1, 1);
 
   /* custom downsampling */
-  vec4 color1 = texelFetch(colorBuffer, uvs.xy, 0);
-  vec4 color2 = texelFetch(colorBuffer, uvs.zw, 0);
-  vec4 color3 = texelFetch(colorBuffer, uvs.zy, 0);
-  vec4 color4 = texelFetch(colorBuffer, uvs.xw, 0);
+  vec4 color1 = safe_color(texelFetch(colorBuffer, uvs.xy, 0));
+  vec4 color2 = safe_color(texelFetch(colorBuffer, uvs.zw, 0));
+  vec4 color3 = safe_color(texelFetch(colorBuffer, uvs.zy, 0));
+  vec4 color4 = safe_color(texelFetch(colorBuffer, uvs.xw, 0));
 
   /* Leverage SIMD by combining 4 depth samples into a vec4 */
   vec4 depth;



More information about the Bf-blender-cvs mailing list