diff options
Diffstat (limited to 'source/blender/draw/engines/workbench/shaders/workbench_shadow_caps_geom.glsl')
-rw-r--r-- | source/blender/draw/engines/workbench/shaders/workbench_shadow_caps_geom.glsl | 45 |
1 files changed, 7 insertions, 38 deletions
diff --git a/source/blender/draw/engines/workbench/shaders/workbench_shadow_caps_geom.glsl b/source/blender/draw/engines/workbench/shaders/workbench_shadow_caps_geom.glsl index 272f0621185..4a7b1522426 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_shadow_caps_geom.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_shadow_caps_geom.glsl @@ -2,38 +2,6 @@ # define USE_INVOC_EXT #endif -#ifdef DOUBLE_MANIFOLD -# ifdef USE_INVOC_EXT -# define invoc_len 2 -# else -# define vert_len 6 -# endif -#else -# ifdef USE_INVOC_EXT -# define invoc_len 2 -# else -# define vert_len 6 -# endif -#endif - -#ifdef USE_INVOC_EXT -layout(triangles, invocations = invoc_len) in; -layout(triangle_strip, max_vertices = 3) out; -#else -layout(triangles) in; -layout(triangle_strip, max_vertices = vert_len) out; -#endif - -uniform vec3 lightDirection = vec3(0.57, 0.57, -0.57); - -in VertexData -{ - vec3 pos; /* local position */ - vec4 frontPosition; /* final ndc position */ - vec4 backPosition; -} -vData[]; - vec4 get_pos(int v, bool backface) { return (backface) ? vData[v].backPosition : vData[v].frontPosition; @@ -74,18 +42,19 @@ void main() /* In case of non manifold geom, we only increase/decrease * the stencil buffer by one but do every faces as they were facing the light. */ bool invert = backface; + const bool is_manifold = false; #else const bool invert = false; - if (!backface) { + const bool is_manifold = true; #endif + + if (!is_manifold || !backface) { #ifdef USE_INVOC_EXT - bool do_front = (gl_InvocationID & 1) == 0; - emit_cap(do_front, invert); + bool do_front = (gl_InvocationID & 1) == 0; + emit_cap(do_front, invert); #else emit_cap(true, invert); emit_cap(false, invert); #endif -#ifndef DOUBLE_MANIFOLD -} -#endif + } } |