[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