element/wayland: Add blur background-effect

This commit is contained in:
Victoria Brekenfeld 2026-03-04 19:02:29 +01:00 committed by Victoria Brekenfeld
parent e4c0716951
commit a9bf89d8b2
10 changed files with 747 additions and 5 deletions

View file

@ -19,6 +19,7 @@ use crate::{
shadow::{SHADOW_SHADER, ShadowShader},
wayland::{
SurfaceRenderElement,
blur_effect::BlurShaders,
clipped_surface::{CLIPPING_SHADER, ClippingShader},
push_render_elements_from_surface_tree,
},
@ -425,6 +426,7 @@ pub fn init_shaders(renderer: &mut GlesRenderer) -> Result<(), GlesError> {
UniformName::new("geo_size", UniformType::_2f),
UniformName::new("corner_radius", UniformType::_4f),
UniformName::new("input_to_geo", UniformType::Matrix3x3),
UniformName::new("noise", UniformType::_1f),
],
)?;
let shadow_shader = renderer.compile_custom_pixel_shader(
@ -440,6 +442,7 @@ pub fn init_shaders(renderer: &mut GlesRenderer) -> Result<(), GlesError> {
UniformName::new("window_corner_radius", UniformType::_4f),
],
)?;
let blur_shaders = BlurShaders::compile(renderer)?;
let egl_context = renderer.egl_context();
egl_context
@ -457,6 +460,7 @@ pub fn init_shaders(renderer: &mut GlesRenderer) -> Result<(), GlesError> {
egl_context
.user_data()
.insert_if_missing(|| ShadowShader(shadow_shader));
egl_context.user_data().insert_if_missing(|| blur_shaders);
Ok(())
}