diff options
Diffstat (limited to 'src/render_helpers/shaders')
| -rw-r--r-- | src/render_helpers/shaders/border.frag | 4 | ||||
| -rw-r--r-- | src/render_helpers/shaders/clipped_surface.frag | 5 | ||||
| -rw-r--r-- | src/render_helpers/shaders/close_prelude.frag | 1 | ||||
| -rw-r--r-- | src/render_helpers/shaders/mod.rs | 1 | ||||
| -rw-r--r-- | src/render_helpers/shaders/open_prelude.frag | 1 | ||||
| -rw-r--r-- | src/render_helpers/shaders/resize_prelude.frag | 4 |
6 files changed, 13 insertions, 3 deletions
diff --git a/src/render_helpers/shaders/border.frag b/src/render_helpers/shaders/border.frag index adbc124b..fe121037 100644 --- a/src/render_helpers/shaders/border.frag +++ b/src/render_helpers/shaders/border.frag @@ -5,6 +5,7 @@ uniform float niri_tint; #endif uniform float niri_alpha; +uniform float niri_scale; uniform vec2 niri_size; varying vec2 niri_v_coords; @@ -56,7 +57,8 @@ float rounding_alpha(vec2 coords, vec2 size, vec4 corner_radius) { } float dist = distance(coords, center); - return 1.0 - smoothstep(radius - 0.5, radius + 0.5, dist); + float half_px = 0.5 / niri_scale; + return 1.0 - smoothstep(radius - half_px, radius + half_px, dist); } void main() { diff --git a/src/render_helpers/shaders/clipped_surface.frag b/src/render_helpers/shaders/clipped_surface.frag index 7bee28b1..f0c6e7f8 100644 --- a/src/render_helpers/shaders/clipped_surface.frag +++ b/src/render_helpers/shaders/clipped_surface.frag @@ -20,6 +20,8 @@ varying vec2 v_coords; uniform float tint; #endif +uniform float niri_scale; + uniform vec2 geo_size; uniform vec4 corner_radius; uniform mat3 input_to_geo; @@ -45,7 +47,8 @@ float rounding_alpha(vec2 coords, vec2 size) { } float dist = distance(coords, center); - return 1.0 - smoothstep(radius - 0.5, radius + 0.5, dist); + float half_px = 0.5 / niri_scale; + return 1.0 - smoothstep(radius - half_px, radius + half_px, dist); } void main() { diff --git a/src/render_helpers/shaders/close_prelude.frag b/src/render_helpers/shaders/close_prelude.frag index db42190b..4d6abc71 100644 --- a/src/render_helpers/shaders/close_prelude.frag +++ b/src/render_helpers/shaders/close_prelude.frag @@ -18,4 +18,5 @@ uniform float niri_clamped_progress; uniform float niri_random_seed; uniform float niri_alpha; +uniform float niri_scale; diff --git a/src/render_helpers/shaders/mod.rs b/src/render_helpers/shaders/mod.rs index 12e9d4ed..b4824931 100644 --- a/src/render_helpers/shaders/mod.rs +++ b/src/render_helpers/shaders/mod.rs @@ -55,6 +55,7 @@ impl Shaders { .compile_custom_texture_shader( include_str!("clipped_surface.frag"), &[ + UniformName::new("niri_scale", UniformType::_1f), UniformName::new("geo_size", UniformType::_2f), UniformName::new("corner_radius", UniformType::_4f), UniformName::new("input_to_geo", UniformType::Matrix3x3), diff --git a/src/render_helpers/shaders/open_prelude.frag b/src/render_helpers/shaders/open_prelude.frag index db42190b..4d6abc71 100644 --- a/src/render_helpers/shaders/open_prelude.frag +++ b/src/render_helpers/shaders/open_prelude.frag @@ -18,4 +18,5 @@ uniform float niri_clamped_progress; uniform float niri_random_seed; uniform float niri_alpha; +uniform float niri_scale; diff --git a/src/render_helpers/shaders/resize_prelude.frag b/src/render_helpers/shaders/resize_prelude.frag index 5c052277..519b1ee4 100644 --- a/src/render_helpers/shaders/resize_prelude.frag +++ b/src/render_helpers/shaders/resize_prelude.frag @@ -25,6 +25,7 @@ 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; @@ -47,5 +48,6 @@ float niri_rounding_alpha(vec2 coords, vec2 size) { } float dist = distance(coords, center); - return 1.0 - smoothstep(radius - 0.5, radius + 0.5, dist); + float half_px = 0.5 / niri_scale; + return 1.0 - smoothstep(radius - half_px, radius + half_px, dist); } |
