aboutsummaryrefslogtreecommitdiff
path: root/src/render_helpers/shaders/mod.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-04-13 11:07:23 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-04-13 11:07:23 +0400
commit71be19b234d58f4ec447e921633506beb81a52c0 (patch)
treea6b69d57a3e2edc9d8dac4c969548f227cbf341a /src/render_helpers/shaders/mod.rs
parent4fd9300bdb07e90c26df28461f9bd6591c3d1d41 (diff)
downloadniri-71be19b234d58f4ec447e921633506beb81a52c0.tar.gz
niri-71be19b234d58f4ec447e921633506beb81a52c0.tar.bz2
niri-71be19b234d58f4ec447e921633506beb81a52c0.zip
Implement window resize animations
Diffstat (limited to 'src/render_helpers/shaders/mod.rs')
-rw-r--r--src/render_helpers/shaders/mod.rs24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/render_helpers/shaders/mod.rs b/src/render_helpers/shaders/mod.rs
index 1adbaf82..ebe0d08c 100644
--- a/src/render_helpers/shaders/mod.rs
+++ b/src/render_helpers/shaders/mod.rs
@@ -1,9 +1,11 @@
use smithay::backend::renderer::gles::{GlesPixelProgram, GlesRenderer, UniformName, UniformType};
+use super::primary_gpu_pixel_shader_with_textures::PixelWithTexturesProgram;
use super::renderer::NiriRenderer;
pub struct Shaders {
pub gradient_border: Option<GlesPixelProgram>,
+ pub crossfade: Option<PixelWithTexturesProgram>,
}
impl Shaders {
@@ -26,7 +28,27 @@ impl Shaders {
})
.ok();
- Self { gradient_border }
+ let crossfade = PixelWithTexturesProgram::compile(
+ renderer,
+ include_str!("crossfade.frag"),
+ &[
+ UniformName::new("tex_from_loc", UniformType::_2f),
+ UniformName::new("tex_from_size", UniformType::_2f),
+ UniformName::new("tex_to_loc", UniformType::_2f),
+ UniformName::new("tex_to_size", UniformType::_2f),
+ UniformName::new("amount", UniformType::_1f),
+ ],
+ &["tex_from", "tex_to"],
+ )
+ .map_err(|err| {
+ warn!("error compiling crossfade shader: {err:?}");
+ })
+ .ok();
+
+ Self {
+ gradient_border,
+ crossfade,
+ }
}
pub fn get(renderer: &mut impl NiriRenderer) -> &Self {