diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-01-21 11:08:42 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-01-21 11:08:42 +0300 |
commit | 78d2abd9c16f97be2ab272ee38ba7e398f57a742 (patch) | |
tree | ab83647a2f0477ab7fda9665eecccd6db6da951b /source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl | |
parent | 7bc9a563e65842629a98f0655578e1e4f8c8c960 (diff) |
DRW: Support wire overlay clipping
Diffstat (limited to 'source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl')
-rw-r--r-- | source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl b/source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl index d5c2bdeefea..3c3869db7b4 100644 --- a/source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl +++ b/source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl @@ -1,9 +1,15 @@ uniform mat4 ModelViewProjectionMatrix; +uniform mat4 ModelMatrix; uniform mat3 NormalMatrix; uniform vec2 wireStepParam; +#ifdef USE_WORLD_CLIP_PLANES +uniform vec4 WorldClipPlanes[6]; +uniform int WorldClipPlanesLen; +#endif + vec3 get_edge_sharpness(vec3 wd) { bvec3 do_edge = greaterThan(wd, vec3(0.0)); @@ -76,6 +82,15 @@ void main() gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0); facing = normalize(NormalMatrix * nor).z; + +#ifdef USE_WORLD_CLIP_PLANES + { + vec3 worldPosition = (ModelMatrix * vec4(pos, 1.0)).xyz; + for (int i = 0; i < WorldClipPlanesLen; i++) { + gl_ClipDistance[i] = dot(WorldClipPlanes[i].xyz, worldPosition) + WorldClipPlanes[i].w; + } + } +#endif } #endif /* SELECT_EDGES */ |