diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2020-09-01 16:44:53 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2020-09-01 17:08:50 +0300 |
commit | 998b680e5bc745721737f321fc1fad95875ca7bb (patch) | |
tree | 1ae6b70eb42f59d45c33b01c12de169d51674421 /source/blender/gpu/shaders/gpu_shader_2D_widget_base_vert.glsl | |
parent | 31004ef48e9620015961e8de58feac55f54f6dc8 (diff) |
UI: Widget: Add conservative raster to avoid cut widget borders
This avoids incorrect AA when the widget is not perfectly alligned with the
pixel grid.
Diffstat (limited to 'source/blender/gpu/shaders/gpu_shader_2D_widget_base_vert.glsl')
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_2D_widget_base_vert.glsl | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/source/blender/gpu/shaders/gpu_shader_2D_widget_base_vert.glsl b/source/blender/gpu/shaders/gpu_shader_2D_widget_base_vert.glsl index d15f48c8f8a..fb512a1f00e 100644 --- a/source/blender/gpu/shaders/gpu_shader_2D_widget_base_vert.glsl +++ b/source/blender/gpu/shaders/gpu_shader_2D_widget_base_vert.glsl @@ -57,9 +57,14 @@ in float dummy; vec2 do_widget(void) { + /* Offset to avoid loosing pixels (mimics conservative rasterization). */ + const vec2 ofs = vec2(0.5, -0.5); lineWidth = abs(rect.x - recti.x); vec2 emboss_ofs = vec2(0.0, -lineWidth); - vec2 v_pos[4] = vec2[4](rect.xz + emboss_ofs, rect.xw, rect.yz + emboss_ofs, rect.yw); + vec2 v_pos[4] = vec2[4](rect.xz + emboss_ofs + ofs.yy, + rect.xw + ofs.yx, + rect.yz + emboss_ofs + ofs.xy, + rect.yw + ofs.xx); vec2 pos = v_pos[gl_VertexID]; uvInterp = pos - rect.xz; |