diff options
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; + } +} |