diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-06-05 20:35:08 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-06-05 20:35:36 +0300 |
commit | d5ce40a5ed627e9fd37ab094094b2ff5ef286dd2 (patch) | |
tree | 9a9044a73e916eedba2f3ddb2e31048e9babba1a /source/blender/draw/modes/shaders/overlay_face_wireframe_frag.glsl | |
parent | 7ff07ddd01af7923f32cfff087ec1f566cb4a0a8 (diff) |
Wireframe: Add slider to hide edges from coplanar faces
The default behaviour is to show the same amount of edges as 2.7.
The slider makes it possible to show all edges or even less.
Diffstat (limited to 'source/blender/draw/modes/shaders/overlay_face_wireframe_frag.glsl')
-rw-r--r-- | source/blender/draw/modes/shaders/overlay_face_wireframe_frag.glsl | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/source/blender/draw/modes/shaders/overlay_face_wireframe_frag.glsl b/source/blender/draw/modes/shaders/overlay_face_wireframe_frag.glsl index a714de9579a..5dfbb4352e4 100644 --- a/source/blender/draw/modes/shaders/overlay_face_wireframe_frag.glsl +++ b/source/blender/draw/modes/shaders/overlay_face_wireframe_frag.glsl @@ -6,9 +6,14 @@ flat in vec3 ssVec1; flat in vec3 ssVec2; in float facing; +#ifdef LIGHT_EDGES +flat in vec3 edgeSharpness; +#endif + out vec4 fragColor; float min_v3(vec3 v) { return min(v.x, min(v.y, v.z)); } +float max_v3(vec3 v) { return max(v.x, max(v.y, v.z)); } /* In pixels */ const float wire_size = 0.0; /* Expands the core of the wire (part that is 100% wire color) */ @@ -27,10 +32,22 @@ void main() dot(ss_pos, ssVec2) ); - float fac = smoothstep(wire_size, wire_size + wire_smooth, min_v3(abs(dist_to_edge))); +#ifdef LIGHT_EDGES + vec3 fac = abs(dist_to_edge); +#else + float fac = min_v3(abs(dist_to_edge)); +#endif + + fac = smoothstep(wire_size + wire_smooth, wire_size, fac); + float facing_clamped = clamp((gl_FrontFacing) ? facing : -facing, 0.0, 1.0); vec3 final_front_col = mix(rimColor, wireColor, 0.05); fragColor = mix(vec4(rimColor, rim_alpha), vec4(final_front_col, front_alpha), facing_clamped); - fragColor.a *= (1.0 - fac); + +#ifdef LIGHT_EDGES + fragColor.a *= max_v3(fac * edgeSharpness); +#else + fragColor.a *= fac; +#endif } |