[Bf-blender-cvs] [0cbe6387e90] blender-v2.91-release: EEVEE: Screen Space Raytrace: Fix unreported banding artifacts

Clément Foucault noreply at git.blender.org
Wed Oct 21 22:56:43 CEST 2020


Commit: 0cbe6387e90cb8ed85c8bd48e8c0ad413eca7f9d
Author: Clément Foucault
Date:   Wed Oct 21 17:57:43 2020 +0200
Branches: blender-v2.91-release
https://developer.blender.org/rB0cbe6387e90cb8ed85c8bd48e8c0ad413eca7f9d

EEVEE: Screen Space Raytrace: Fix unreported banding artifacts

The artifact manifested as lines of different values caused by faillure to
trace the depth buffer correctly.

Adding a ad-hoc value to the step size to mitigate the issue.

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

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

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

diff --git a/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl b/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl
index cad1346609a..225bf9b07db 100644
--- a/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl
+++ b/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl
@@ -173,7 +173,8 @@ vec3 raycast(int index,
   float iter;
   for (iter = 1.0; !hit && (ray_time < max_time) && (iter < MAX_STEP); iter++) {
     /* Minimum stride of 2 because we are using half res minmax zbuffer. */
-    float stride = max(1.0, iter * trace_quality) * 2.0;
+    /* WORKAROUND: Factor is a bit higher than 2 to avoid some banding. To investigate. */
+    float stride = max(1.0, iter * trace_quality) * (2.0 + 0.05);
     float lod = log2(stride * 0.5 * trace_quality) * lod_fac;
     ray_time += stride;



More information about the Bf-blender-cvs mailing list