pub struct ShadowMapPass {
pub shadow_bind_group_layout: BindGroupLayout,
/* private fields */
}Expand description
Shadow map render resources.
Fields§
§shadow_bind_group_layout: BindGroupLayoutBind group layout for consumers (ground plane shader).
Implementations§
Source§impl ShadowMapPass
impl ShadowMapPass
Sourcepub fn compute_light_matrix(
scene_center: Vec3,
scene_radius: f32,
light_dir: Vec3,
) -> Mat4
pub fn compute_light_matrix( scene_center: Vec3, scene_radius: f32, light_dir: Vec3, ) -> Mat4
Computes the light view-projection matrix for shadow mapping.
Creates an orthographic projection from the light’s perspective that encompasses the scene.
Sourcepub fn update_light(&self, queue: &Queue, view_proj: Mat4, light_dir: Vec3)
pub fn update_light(&self, queue: &Queue, view_proj: Mat4, light_dir: Vec3)
Updates the light uniforms.
Sourcepub fn begin_shadow_pass<'a>(
&'a self,
encoder: &'a mut CommandEncoder,
) -> RenderPass<'a>
pub fn begin_shadow_pass<'a>( &'a self, encoder: &'a mut CommandEncoder, ) -> RenderPass<'a>
Clears the shadow map depth buffer.
Call this before rendering scene objects to the shadow map.
Sourcepub fn depth_view(&self) -> &TextureView
pub fn depth_view(&self) -> &TextureView
Returns the shadow map depth view.
Sourcepub fn light_buffer(&self) -> &Buffer
pub fn light_buffer(&self) -> &Buffer
Returns the light uniform buffer.
Sourcepub fn comparison_sampler(&self) -> &Sampler
pub fn comparison_sampler(&self) -> &Sampler
Returns the comparison sampler.
Sourcepub fn shadow_bind_group(&self) -> &BindGroup
pub fn shadow_bind_group(&self) -> &BindGroup
Returns the bind group for shadow sampling.
Sourcepub fn shadow_bind_group_layout(&self) -> &BindGroupLayout
pub fn shadow_bind_group_layout(&self) -> &BindGroupLayout
Returns the bind group layout for shadow sampling.
Auto Trait Implementations§
impl Freeze for ShadowMapPass
impl !RefUnwindSafe for ShadowMapPass
impl Send for ShadowMapPass
impl Sync for ShadowMapPass
impl Unpin for ShadowMapPass
impl !UnwindSafe for ShadowMapPass
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
Mutably borrows from an owned value. Read more
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>
Convert
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>
Convert
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)
Convert
&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)
Convert
&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<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>
Converts
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>
Converts
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