diff options
author | Campbell Barton <ideasman42@gmail.com> | 2017-04-13 07:13:46 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2017-04-13 07:13:46 +0300 |
commit | c0a9e388b34298daa6c9f1e9c8f68fde85e319a8 (patch) | |
tree | 358818bbd7162d24adc48909e48551b27fa30592 /source/blender/draw/modes/shaders/edit_mesh_overlay_mix_frag.glsl | |
parent | 64660b902c3fb52fe5a3cb5bf232f90283db8732 (diff) |
GLSL: rename edit_overlay -> edit_mesh_overlay
Avoid confusion with overlays with non-mesh types
Diffstat (limited to 'source/blender/draw/modes/shaders/edit_mesh_overlay_mix_frag.glsl')
-rw-r--r-- | source/blender/draw/modes/shaders/edit_mesh_overlay_mix_frag.glsl | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_mix_frag.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_mix_frag.glsl new file mode 100644 index 00000000000..f567a3a5cbd --- /dev/null +++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_mix_frag.glsl @@ -0,0 +1,24 @@ + +out vec4 FragColor; + +uniform sampler2D wireColor; +uniform sampler2D wireDepth; +uniform sampler2D sceneDepth; +uniform float alpha; + +void main() +{ + ivec2 uv = ivec2(gl_FragCoord.xy); + float wire_depth = texelFetch(wireDepth, uv, 0).r; + float scene_depth = texelFetch(sceneDepth, uv, 0).r; + vec4 wire_color = texelFetch(wireColor, uv, 0).rgba; + + FragColor = wire_color; + + /* this works because not rendered depth is 1.0 and the + * following test is always true even when no wires */ + if ((wire_depth > scene_depth) && (wire_color.a > 0)) { + /* Note : Using wire_color.a * alpha produce unwanted result */ + FragColor.a = alpha; + } +} |