pub struct CustomShaderRenderer { /* private fields */ }Expand description
Custom shader renderer that applies post-processing effects
Implementations§
Source§impl CustomShaderRenderer
impl CustomShaderRenderer
Sourcepub fn new(
device: &Device,
_queue: &Queue,
surface_format: TextureFormat,
shader_path: &Path,
width: u32,
height: u32,
animation_enabled: bool,
animation_speed: f32,
window_opacity: f32,
text_opacity: f32,
full_content_mode: bool,
) -> Result<Self>
pub fn new( device: &Device, _queue: &Queue, surface_format: TextureFormat, shader_path: &Path, width: u32, height: u32, animation_enabled: bool, animation_speed: f32, window_opacity: f32, text_opacity: f32, full_content_mode: bool, ) -> Result<Self>
Create a new custom shader renderer from a GLSL shader file
§Arguments
device- The wgpu devicequeue- The wgpu queuesurface_format- The surface texture formatshader_path- Path to the GLSL shader filewidth- Initial viewport widthheight- Initial viewport heightanimation_enabled- Whether to animate iTimeanimation_speed- Animation speed multiplier
Sourcepub fn intermediate_texture_view(&self) -> &TextureView
pub fn intermediate_texture_view(&self) -> &TextureView
Get a view of the intermediate texture for rendering terminal content into
Sourcepub fn resize(&mut self, device: &Device, width: u32, height: u32)
pub fn resize(&mut self, device: &Device, width: u32, height: u32)
Resize the intermediate texture when window size changes
Sourcepub fn render(
&mut self,
device: &Device,
queue: &Queue,
output_view: &TextureView,
) -> Result<()>
pub fn render( &mut self, device: &Device, queue: &Queue, output_view: &TextureView, ) -> Result<()>
Render the custom shader effect to the output texture
This should be called after the terminal content has been rendered to the
intermediate texture obtained via intermediate_texture_view().
Sourcepub fn animation_enabled(&self) -> bool
pub fn animation_enabled(&self) -> bool
Check if animation is enabled
Sourcepub fn set_animation_enabled(&mut self, enabled: bool)
pub fn set_animation_enabled(&mut self, enabled: bool)
Set animation enabled state
Sourcepub fn set_animation_speed(&mut self, speed: f32)
pub fn set_animation_speed(&mut self, speed: f32)
Update animation speed multiplier
Sourcepub fn set_opacity(&mut self, opacity: f32)
pub fn set_opacity(&mut self, opacity: f32)
Update window opacity (content alpha passed to shader)
Sourcepub fn set_full_content_mode(&mut self, enabled: bool)
pub fn set_full_content_mode(&mut self, enabled: bool)
Update full content mode
Sourcepub fn full_content_mode(&self) -> bool
pub fn full_content_mode(&self) -> bool
Check if full content mode is enabled
Sourcepub fn set_mouse_position(&mut self, x: f32, y: f32)
pub fn set_mouse_position(&mut self, x: f32, y: f32)
Update mouse position in pixel coordinates
§Arguments
x- Mouse X position in pixels (0 = left edge)y- Mouse Y position in pixels (0 = top edge, will be flipped for shader)
Update mouse button state and click position
Call this when the left mouse button is pressed or released.
§Arguments
pressed- True if mouse button is now pressed, false if releasedx- Mouse X position in pixels at time of click/releasey- Mouse Y position in pixels at time of click/release (will be flipped for shader)
Sourcepub fn reload_from_source(
&mut self,
device: &Device,
source: &str,
name: &str,
) -> Result<()>
pub fn reload_from_source( &mut self, device: &Device, source: &str, name: &str, ) -> Result<()>
Reload the shader from a source string
This method compiles the new shader source and replaces the current pipeline. If compilation fails, returns an error and the old shader remains active.
§Arguments
device- The wgpu devicesource- The GLSL shader source codename- A name for error messages (e.g., “editor”)
§Returns
Ok(()) if successful, Err with error message if compilation fails
Auto Trait Implementations§
impl Freeze for CustomShaderRenderer
impl !RefUnwindSafe for CustomShaderRenderer
impl Send for CustomShaderRenderer
impl Sync for CustomShaderRenderer
impl Unpin for CustomShaderRenderer
impl !UnwindSafe for CustomShaderRenderer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more