aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-04-27 13:12:21 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-04-27 13:12:21 +0400
commitc1c43c53932314848ae42a43e12c0b3300e3d1a8 (patch)
tree6cde924ea61c5a49c89f13fdb126a0f770e846f2 /src
parent5899010c9646585dd539d4bb28acb32e4e7f2351 (diff)
downloadniri-c1c43c53932314848ae42a43e12c0b3300e3d1a8.tar.gz
niri-c1c43c53932314848ae42a43e12c0b3300e3d1a8.tar.bz2
niri-c1c43c53932314848ae42a43e12c0b3300e3d1a8.zip
Fix size_curr_geo in resize shader
Diffstat (limited to 'src')
-rw-r--r--src/render_helpers/resize.rs3
-rw-r--r--src/render_helpers/shaders/mod.rs1
-rw-r--r--src/render_helpers/shaders/resize-epilogue.frag2
-rw-r--r--src/render_helpers/shaders/resize-prelude.frag1
4 files changed, 6 insertions, 1 deletions
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;