shaders: Add drop-shadow shader
This commit is contained in:
parent
2f39c9682c
commit
94d49210e6
3 changed files with 338 additions and 0 deletions
|
|
@ -17,6 +17,7 @@ use crate::{
|
|||
render::{
|
||||
clipped_surface::{CLIPPING_SHADER, ClippingShader},
|
||||
element::DamageElement,
|
||||
shadow::{SHADOW_SHADER, ShadowShader},
|
||||
},
|
||||
},
|
||||
config::ScreenFilter,
|
||||
|
|
@ -84,6 +85,7 @@ pub mod animations;
|
|||
pub mod clipped_surface;
|
||||
pub mod cursor;
|
||||
pub mod element;
|
||||
pub mod shadow;
|
||||
use self::element::{AsGlowRenderer, CosmicElement};
|
||||
|
||||
use super::kms::Timings;
|
||||
|
|
@ -414,6 +416,19 @@ pub fn init_shaders(renderer: &mut GlesRenderer) -> Result<(), GlesError> {
|
|||
UniformName::new("input_to_geo", UniformType::Matrix3x3),
|
||||
],
|
||||
)?;
|
||||
let shadow_shader = renderer.compile_custom_pixel_shader(
|
||||
SHADOW_SHADER,
|
||||
&[
|
||||
UniformName::new("shadow_color", UniformType::_4f),
|
||||
UniformName::new("sigma", UniformType::_1f),
|
||||
UniformName::new("input_to_geo", UniformType::Matrix3x3),
|
||||
UniformName::new("geo_size", UniformType::_2f),
|
||||
UniformName::new("corner_radius", UniformType::_4f),
|
||||
UniformName::new("window_input_to_geo", UniformType::Matrix3x3),
|
||||
UniformName::new("window_geo_size", UniformType::_2f),
|
||||
UniformName::new("window_corner_radius", UniformType::_4f),
|
||||
],
|
||||
)?;
|
||||
|
||||
let egl_context = renderer.egl_context();
|
||||
egl_context
|
||||
|
|
@ -428,6 +443,9 @@ pub fn init_shaders(renderer: &mut GlesRenderer) -> Result<(), GlesError> {
|
|||
egl_context
|
||||
.user_data()
|
||||
.insert_if_missing(|| ClippingShader(clipping_shader));
|
||||
egl_context
|
||||
.user_data()
|
||||
.insert_if_missing(|| ShadowShader(shadow_shader));
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue