Skip to content

Commit e2dc4c8

Browse files
0x041Etasarren
authored andcommitted
change shader to only redraw corner portions of the window when using rounded corners
(cherry picked from commit b2298e6)
1 parent 9f4dbfe commit e2dc4c8

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

src/backend/gl/shaders.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,15 @@ const char blit_shader_glsl[] = GLSL(330,
166166
return vec2(l, l / (max(d.x, d.y) + 1e-8));
167167
}
168168

169+
float rect_sdf_corner_only(vec2 point, vec2 half_size){
170+
vec2 d = abs(point) - half_size + vec2(corner_radius);
171+
if(d.x>0.0 && d.y>0.0){
172+
return length(d)-corner_radius;
173+
}
174+
175+
return -1.0;
176+
}
177+
169178
vec4 default_post_processing(vec4 c) {
170179
vec4 border_color = texture(tex, vec2(0.0, 0.5));
171180
if (invert_color) {
@@ -205,7 +214,7 @@ const char blit_shader_glsl[] = GLSL(330,
205214
// Add a small number to sdf.y to avoid 0/0
206215
if (rect_distance > 0.0f) {
207216
c = (1.0f - clamp(rect_distance, 0.0f, sdf.y) / (sdf.y + 1e-8)) * rim_color;
208-
} else {
217+
} else if(rect_sdf_corner_only(texcoord-outer_size/2.0f,inner_size/2.0f) > 0.0f) {
209218
float factor = clamp(rect_distance + border_width, 0.0f, sdf.y) / (sdf.y + 1e-8);
210219
c = (1.0f - factor) * c + factor * border_color;
211220
}

0 commit comments

Comments
 (0)