diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-12-02 16:35:43 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-12-02 16:35:49 +0300 |
commit | 014eb69cf858036816d12a4b92ffe6681978b683 (patch) | |
tree | 05fc4a16f57c6855d5ad209a009a09aa1f8b55d1 /source/blender/draw/engines/overlay/shaders/antialiasing_frag.glsl | |
parent | 3e241af3aec2bf03b0b558ca419ceb08d394a239 (diff) |
Overlay Engine: Make thickwires (linesize > 1.0) using the Wire AA pass
This fixes the limitation of OSX not allowing glLineWidth with size > 1.0.
This however only fix the viewport wire drawing.
Diffstat (limited to 'source/blender/draw/engines/overlay/shaders/antialiasing_frag.glsl')
-rw-r--r-- | source/blender/draw/engines/overlay/shaders/antialiasing_frag.glsl | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/source/blender/draw/engines/overlay/shaders/antialiasing_frag.glsl b/source/blender/draw/engines/overlay/shaders/antialiasing_frag.glsl index 98f69abe89f..46a2afc42fd 100644 --- a/source/blender/draw/engines/overlay/shaders/antialiasing_frag.glsl +++ b/source/blender/draw/engines/overlay/shaders/antialiasing_frag.glsl @@ -2,6 +2,7 @@ uniform sampler2D colorTex; uniform sampler2D depthTex; uniform sampler2D lineTex; +uniform bool doSmoothLines; in vec2 uvs; @@ -26,11 +27,23 @@ out vec4 fragColor; */ float line_coverage(float distance_to_line, float line_kernel_size) { - return smoothstep(LINE_SMOOTH_END, LINE_SMOOTH_START, abs(distance_to_line) - line_kernel_size); + if (doSmoothLines) { + return smoothstep( + LINE_SMOOTH_END, LINE_SMOOTH_START, abs(distance_to_line) - line_kernel_size); + } + else { + return step(-0.5, line_kernel_size - abs(distance_to_line)); + } } vec4 line_coverage(vec4 distance_to_line, float line_kernel_size) { - return smoothstep(LINE_SMOOTH_END, LINE_SMOOTH_START, abs(distance_to_line) - line_kernel_size); + if (doSmoothLines) { + return smoothstep( + LINE_SMOOTH_END, LINE_SMOOTH_START, abs(distance_to_line) - line_kernel_size); + } + else { + return step(-0.5, line_kernel_size - abs(distance_to_line)); + } } vec2 decode_line_dir(vec2 dir) @@ -79,7 +92,7 @@ void neighbor_blend( void main() { ivec2 center_texel = ivec2(gl_FragCoord.xy); - const float line_kernel = 0.0; + float line_kernel = sizePixel * 0.5 - 0.5; fragColor = texelFetch(colorTex, center_texel, 0); |