Skip to content

Commit 0585e31

Browse files
pijuliusyshui
authored andcommitted
backend/glx: fix anti-alising of rounded corner
Closes #1261 Signed-off-by: Yuxuan Shui <[email protected]> Co-authored-by: Istvan Petres <[email protected]>
1 parent 5f24750 commit 0585e31

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050

5151
* Fix ghosting artifacts that sometimes occur when window manager is restarted (#1081)
5252
* Fix a bug where rounded corner is disabled after making a window fullscreen and back (#1216)
53+
* Fix ugly looking rounded corners (#1261)
5354

5455
## Build changes
5556

src/backend/gl/shaders.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ const char masking_glsl[] = GLSL(330,
9595
if (mask_corner_radius != 0) {
9696
vec2 inner_size = mask_size - vec2(mask_corner_radius) * 2.0f;
9797
float dist = mask_rectangle_sdf(maskcoord - mask_size / 2.0f,
98-
inner_size / 2.0f) - mask_corner_radius;
98+
inner_size / 2.0f) - mask_corner_radius + 1.0f;
9999
if (dist > 0.0f) {
100100
mask.r *= (1.0f - clamp(dist, 0.0f, 1.0f));
101101
}
@@ -161,8 +161,12 @@ const char blit_shader_glsl[] = GLSL(330,
161161

162162
vec2 outer_size = effective_size;
163163
vec2 inner_size = outer_size - vec2(corner_radius) * 2.0f;
164+
// +1.0 so the last 1-pixel ring of the rounded rectangle will transition
165+
// smoothly from 1 to 0 for anti-aliasing. If we don't do this, everything
166+
// inside the corner radius will be solid, and we will have an extra 1-pixel
167+
// feathering outside the corner radius, which makes it look bad.
164168
float rect_distance = rectangle_sdf(texcoord - outer_size / 2.0f,
165-
inner_size / 2.0f) - corner_radius;
169+
inner_size / 2.0f) - corner_radius + 1.0f;
166170
if (rect_distance > 0.0f) {
167171
c = (1.0f - clamp(rect_distance, 0.0f, 1.0f)) * rim_color;
168172
} else {

0 commit comments

Comments
 (0)