[Bf-blender-cvs] [9d3eec785b4] master: Fix T62220: Solid shading mode - Shadow glitch

Clément Foucault noreply at git.blender.org
Wed Mar 6 16:15:49 CET 2019


Commit: 9d3eec785b492b7e7a545efd62e1c906d4a574ff
Author: Clément Foucault
Date:   Wed Mar 6 16:15:26 2019 +0100
Branches: master
https://developer.blender.org/rB9d3eec785b492b7e7a545efd62e1c906d4a574ff

Fix T62220: Solid shading mode - Shadow glitch

The degenerate triangle threshold was too big. Making it an equal test can
introduce problems in other cases but I could not make it fail.

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

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 14f47556896..00213260df0 100644
--- a/source/blender/draw/engines/workbench/shaders/workbench_shadow_geom.glsl
+++ b/source/blender/draw/engines/workbench/shaders/workbench_shadow_geom.glsl
@@ -34,7 +34,7 @@ in VertexData {
 	vec4 backPosition;
 } vData[];
 
-#define DEGENERATE_THRESHOLD 1e-12
+#define DEGENERATE_TRIS_WORKAROUND
 
 #define len_sqr(a) dot(a, a)
 
@@ -58,10 +58,10 @@ void main()
 	vec3 n1 = cross(v12, v10);
 	vec3 n2 = cross(v13, v12);
 
-#ifdef DEGENERATE_THRESHOLD
+#ifdef DEGENERATE_TRIS_WORKAROUND
 	/* Check if area is null */
 	vec2 faces_area = vec2(len_sqr(n1), len_sqr(n2));
-	bvec2 degen_faces = lessThan(abs(faces_area), vec2(DEGENERATE_THRESHOLD));
+	bvec2 degen_faces = equal(abs(faces_area), vec2(0.0));
 
 	/* Both triangles are degenerate, abort. */
 	if (all(degen_faces)) {
@@ -77,7 +77,7 @@ void main()
 
 	bvec2 backface = greaterThan(facing, vec2(0.0));
 
-#ifdef DEGENERATE_THRESHOLD
+#ifdef DEGENERATE_TRIS_WORKAROUND
 #  ifndef DOUBLE_MANIFOLD
 	/* If the mesh is known to be manifold and we don't use double count,
 	 * only create an quad if the we encounter a facing geom. */



More information about the Bf-blender-cvs mailing list