gradient_fade: Store uniform inline

This commit is contained in:
Ivan Molodetskikh
2025-12-22 09:18:29 +03:00
parent 9e73beb165
commit ad62c8e487
+4 -4
View File
@@ -14,7 +14,7 @@ use crate::render_helpers::shaders::Shaders;
pub struct GradientFadeTextureRenderElement { pub struct GradientFadeTextureRenderElement {
inner: TextureRenderElement<GlesTexture>, inner: TextureRenderElement<GlesTexture>,
program: GradientFadeShader, program: GradientFadeShader,
uniforms: Vec<Uniform<'static>>, cutoff: (f32, f32),
} }
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
@@ -33,11 +33,10 @@ impl GradientFadeTextureRenderElement {
// Texture is displayed full-size, no cutoff necessary. // Texture is displayed full-size, no cutoff necessary.
(1., 1.) (1., 1.)
}; };
let uniforms = vec![Uniform::new("cutoff", cutoff)];
Self { Self {
inner: texture, inner: texture,
program, program,
uniforms, cutoff,
} }
} }
@@ -98,7 +97,8 @@ impl RenderElement<GlesRenderer> for GradientFadeTextureRenderElement {
damage: &[Rectangle<i32, Physical>], damage: &[Rectangle<i32, Physical>],
opaque_regions: &[Rectangle<i32, Physical>], opaque_regions: &[Rectangle<i32, Physical>],
) -> Result<(), GlesError> { ) -> Result<(), GlesError> {
frame.override_default_tex_program(self.program.0.clone(), self.uniforms.clone()); let uniforms = vec![Uniform::new("cutoff", self.cutoff)];
frame.override_default_tex_program(self.program.0.clone(), uniforms);
RenderElement::<GlesRenderer>::draw(&self.inner, frame, src, dst, damage, opaque_regions)?; RenderElement::<GlesRenderer>::draw(&self.inner, frame, src, dst, damage, opaque_regions)?;
frame.clear_tex_program_override(); frame.clear_tex_program_override();
Ok(()) Ok(())