mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-22 02:01:55 +07:00
54 lines
1.6 KiB
GLSL
54 lines
1.6 KiB
GLSL
precision mediump float;
|
|
|
|
#if defined(DEBUG_FLAGS)
|
|
uniform float niri_tint;
|
|
#endif
|
|
|
|
varying vec2 niri_v_coords;
|
|
uniform vec2 niri_size;
|
|
|
|
uniform mat3 niri_input_to_curr_geo;
|
|
uniform mat3 niri_curr_geo_to_prev_geo;
|
|
uniform mat3 niri_curr_geo_to_next_geo;
|
|
uniform vec2 niri_curr_geo_size;
|
|
|
|
uniform sampler2D niri_tex_prev;
|
|
uniform mat3 niri_geo_to_tex_prev;
|
|
|
|
uniform sampler2D niri_tex_next;
|
|
uniform mat3 niri_geo_to_tex_next;
|
|
|
|
uniform float niri_progress;
|
|
uniform float niri_clamped_progress;
|
|
|
|
uniform vec4 niri_corner_radius;
|
|
uniform float niri_clip_to_geometry;
|
|
|
|
uniform float niri_alpha;
|
|
uniform float niri_scale;
|
|
|
|
float niri_rounding_alpha(vec2 coords, vec2 size) {
|
|
vec2 center;
|
|
float radius;
|
|
|
|
if (coords.x < niri_corner_radius.x && coords.y < niri_corner_radius.x) {
|
|
radius = niri_corner_radius.x;
|
|
center = vec2(radius, radius);
|
|
} else if (size.x - niri_corner_radius.y < coords.x && coords.y < niri_corner_radius.y) {
|
|
radius = niri_corner_radius.y;
|
|
center = vec2(size.x - radius, radius);
|
|
} else if (size.x - niri_corner_radius.z < coords.x && size.y - niri_corner_radius.z < coords.y) {
|
|
radius = niri_corner_radius.z;
|
|
center = vec2(size.x - radius, size.y - radius);
|
|
} else if (coords.x < niri_corner_radius.w && size.y - niri_corner_radius.w < coords.y) {
|
|
radius = niri_corner_radius.w;
|
|
center = vec2(radius, size.y - radius);
|
|
} else {
|
|
return 1.0;
|
|
}
|
|
|
|
float dist = distance(coords, center);
|
|
float half_px = 0.5 / niri_scale;
|
|
return 1.0 - smoothstep(radius - half_px, radius + half_px, dist);
|
|
}
|