From c1c43c53932314848ae42a43e12c0b3300e3d1a8 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sat, 27 Apr 2024 13:12:21 +0400 Subject: Fix size_curr_geo in resize shader --- src/render_helpers/resize.rs | 3 +++ src/render_helpers/shaders/mod.rs | 1 + src/render_helpers/shaders/resize-epilogue.frag | 2 +- src/render_helpers/shaders/resize-prelude.frag | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) (limited to 'src/render_helpers') diff --git a/src/render_helpers/resize.rs b/src/render_helpers/resize.rs index f11c1487..26c73236 100644 --- a/src/render_helpers/resize.rs +++ b/src/render_helpers/resize.rs @@ -81,6 +81,8 @@ impl ResizeRenderElement { let geo_to_tex_next = Mat3::from_translation(-tex_next_geo_loc / tex_next_geo_size) * Mat3::from_scale(size_next / tex_next_geo_size * scale); + let curr_geo_size = curr_geo_size * scale; + // Create the shader. Shaders::get(renderer).resize().map(|shader| { Self(PrimaryGpuPixelShaderWithTexturesRenderElement::new( @@ -97,6 +99,7 @@ impl ResizeRenderElement { mat3_uniform("niri_input_to_curr_geo", input_to_curr_geo), mat3_uniform("niri_curr_geo_to_prev_geo", curr_geo_to_prev_geo), mat3_uniform("niri_curr_geo_to_next_geo", curr_geo_to_next_geo), + Uniform::new("niri_curr_geo_size", curr_geo_size.to_array()), mat3_uniform("niri_geo_to_tex_prev", geo_to_tex_prev), mat3_uniform("niri_geo_to_tex_next", geo_to_tex_next), Uniform::new("niri_progress", progress), diff --git a/src/render_helpers/shaders/mod.rs b/src/render_helpers/shaders/mod.rs index 8dc3263f..4c4530c5 100644 --- a/src/render_helpers/shaders/mod.rs +++ b/src/render_helpers/shaders/mod.rs @@ -92,6 +92,7 @@ fn compile_resize_program( UniformName::new("niri_input_to_curr_geo", UniformType::Matrix3x3), UniformName::new("niri_curr_geo_to_prev_geo", UniformType::Matrix3x3), UniformName::new("niri_curr_geo_to_next_geo", UniformType::Matrix3x3), + UniformName::new("niri_curr_geo_size", UniformType::_2f), UniformName::new("niri_geo_to_tex_prev", UniformType::Matrix3x3), UniformName::new("niri_geo_to_tex_next", UniformType::Matrix3x3), UniformName::new("niri_progress", UniformType::_1f), diff --git a/src/render_helpers/shaders/resize-epilogue.frag b/src/render_helpers/shaders/resize-epilogue.frag index b3eafc7c..b857d57e 100644 --- a/src/render_helpers/shaders/resize-epilogue.frag +++ b/src/render_helpers/shaders/resize-epilogue.frag @@ -1,7 +1,7 @@ void main() { vec3 coords_curr_geo = niri_input_to_curr_geo * vec3(niri_v_coords, 1.0); - vec3 size_curr_geo = niri_input_to_curr_geo * vec3(niri_size, 1.0); + vec3 size_curr_geo = vec3(niri_curr_geo_size, 1.0); vec4 color = resize_color(coords_curr_geo, size_curr_geo); diff --git a/src/render_helpers/shaders/resize-prelude.frag b/src/render_helpers/shaders/resize-prelude.frag index 95587702..86423ce9 100644 --- a/src/render_helpers/shaders/resize-prelude.frag +++ b/src/render_helpers/shaders/resize-prelude.frag @@ -8,6 +8,7 @@ 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; -- cgit