diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-04-13 11:07:23 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-04-13 11:07:23 +0400 |
| commit | 71be19b234d58f4ec447e921633506beb81a52c0 (patch) | |
| tree | a6b69d57a3e2edc9d8dac4c969548f227cbf341a /src/render_helpers/shaders/mod.rs | |
| parent | 4fd9300bdb07e90c26df28461f9bd6591c3d1d41 (diff) | |
| download | niri-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.rs | 24 |
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 { |
