[Bf-blender-cvs] [2893417d670] master: Fix T62580 Workbench: Shadow glitch due to degenerate threshold

Clément Foucault noreply at git.blender.org
Tue Jul 9 20:38:48 CEST 2019


Commit: 2893417d670c935993606b860ba9aaec1b1dd6e1
Author: Clément Foucault
Date:   Tue Jul 9 20:38:40 2019 +0200
Branches: master
https://developer.blender.org/rB2893417d670c935993606b860ba9aaec1b1dd6e1

Fix T62580 Workbench: Shadow glitch due to degenerate threshold

Fix by adding a threshold instead of direct null comparison.

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

M	source/blender/draw/engines/workbench/shaders/workbench_shadow_geom.glsl

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

diff --git a/source/blender/draw/engines/workbench/shaders/workbench_shadow_geom.glsl b/source/blender/draw/engines/workbench/shaders/workbench_shadow_geom.glsl
index 8ee70c37949..2c9190bfcf4 100644
--- a/source/blender/draw/engines/workbench/shaders/workbench_shadow_geom.glsl
+++ b/source/blender/draw/engines/workbench/shaders/workbench_shadow_geom.glsl
@@ -37,6 +37,7 @@ in VertexData
 vData[];
 
 #define DEGENERATE_TRIS_WORKAROUND
+#define DEGENERATE_TRIS_AREA_THRESHOLD 4e-17
 
 #define len_sqr(a) dot(a, a)
 
@@ -67,7 +68,7 @@ void main()
 #ifdef DEGENERATE_TRIS_WORKAROUND
   /* Check if area is null */
   vec2 faces_area = vec2(len_sqr(n1), len_sqr(n2));
-  bvec2 degen_faces = equal(abs(faces_area), vec2(0.0));
+  bvec2 degen_faces = lessThan(abs(faces_area), vec2(DEGENERATE_TRIS_AREA_THRESHOLD));
 
   /* Both triangles are degenerate, abort. */
   if (all(degen_faces)) {



More information about the Bf-blender-cvs mailing list