From 2d618974d14672e6ec38612e76aca70e619f7242 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Fri, 6 Apr 2018 23:54:24 +0200 Subject: UI: Perf: Port color widgets to batch. This is more for completeness than perf. Shader is tiny bit more complex but we get less overdraw and drawcalls. --- .../shaders/gpu_shader_2D_widget_base_frag.glsl | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 source/blender/gpu/shaders/gpu_shader_2D_widget_base_frag.glsl (limited to 'source/blender/gpu/shaders/gpu_shader_2D_widget_base_frag.glsl') diff --git a/source/blender/gpu/shaders/gpu_shader_2D_widget_base_frag.glsl b/source/blender/gpu/shaders/gpu_shader_2D_widget_base_frag.glsl new file mode 100644 index 00000000000..929674ab446 --- /dev/null +++ b/source/blender/gpu/shaders/gpu_shader_2D_widget_base_frag.glsl @@ -0,0 +1,34 @@ +uniform vec3 checkerColorAndSize; + +noperspective in vec4 finalColor; +noperspective in float butCo; + +out vec4 fragColor; + +vec4 do_checkerboard() +{ + float size = checkerColorAndSize.z; + vec2 phase = mod(gl_FragCoord.xy, size * 2.0); + + if ((phase.x > size && phase.y < size) || + (phase.x < size && phase.y > size)) + { + return vec4(checkerColorAndSize.xxx, 1.0); + } + else { + return vec4(checkerColorAndSize.yyy, 1.0); + } +} + +void main() +{ + fragColor = finalColor; + + if (butCo > 0.5) { + fragColor = mix(do_checkerboard(), fragColor, fragColor.a); + } + + if (butCo > 0.0) { + fragColor.a = 1.0; + } +} \ No newline at end of file -- cgit v1.2.3 From 2a0dca42521227b7fccbdc4e451cd2a15de37650 Mon Sep 17 00:00:00 2001 From: Germano Date: Mon, 9 Apr 2018 13:45:17 -0300 Subject: UI: Fix widget shader on certain compiler. There was a crash with `Intel(R) HD Graphics 4000`. Thanks to @fclem for the help and review. --- source/blender/gpu/shaders/gpu_shader_2D_widget_base_frag.glsl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'source/blender/gpu/shaders/gpu_shader_2D_widget_base_frag.glsl') diff --git a/source/blender/gpu/shaders/gpu_shader_2D_widget_base_frag.glsl b/source/blender/gpu/shaders/gpu_shader_2D_widget_base_frag.glsl index 929674ab446..f660cae8d12 100644 --- a/source/blender/gpu/shaders/gpu_shader_2D_widget_base_frag.glsl +++ b/source/blender/gpu/shaders/gpu_shader_2D_widget_base_frag.glsl @@ -25,7 +25,8 @@ void main() fragColor = finalColor; if (butCo > 0.5) { - fragColor = mix(do_checkerboard(), fragColor, fragColor.a); + vec4 checker = do_checkerboard(); + fragColor = mix(checker, fragColor, fragColor.a); } if (butCo > 0.0) { -- cgit v1.2.3