pub struct ShadowPassLane {
pub pipeline: RwLock<Option<RenderPipelineId>>,
pub camera_layout: RwLock<Option<BindGroupLayoutId>>,
pub model_layout: RwLock<Option<BindGroupLayoutId>>,
pub atlas_texture: RwLock<Option<TextureId>>,
pub atlas_view: RwLock<Option<TextureViewId>>,
pub shadow_sampler: RwLock<Option<SamplerId>>,
pub shadow_results: RwLock<HashMap<usize, (Mat4, i32)>>,
pub camera_ring: RwLock<Option<DynamicUniformRingBuffer>>,
pub model_ring: RwLock<Option<DynamicUniformRingBuffer>>,
}Expand description
A rendering lane dedicated to producing shadow maps.
It renders the scene from the perspective of shadow-casting lights into a depth texture (shadow map or atlas).
Fields§
§pipeline: RwLock<Option<RenderPipelineId>>The render pipeline for depth-only rendering.
camera_layout: RwLock<Option<BindGroupLayoutId>>Layout for the shadow camera uniform.
model_layout: RwLock<Option<BindGroupLayoutId>>Layout for the model uniform.
atlas_texture: RwLock<Option<TextureId>>The shadow atlas texture (depth array).
atlas_view: RwLock<Option<TextureViewId>>The view into the shadow atlas.
shadow_sampler: RwLock<Option<SamplerId>>Comparison sampler for PCF.
shadow_results: RwLock<HashMap<usize, (Mat4, i32)>>Stores calculated shadow matrices and atlas indices for the main pass. Mapping: Light Index -> (Shadow Matrix, Atlas Index)
camera_ring: RwLock<Option<DynamicUniformRingBuffer>>Dynamic ring buffer for the shadow camera (light view-projection) uniforms. Uses dynamic offsets so each light can have its own camera data in the same frame.
model_ring: RwLock<Option<DynamicUniformRingBuffer>>Dynamic ring buffer for per-mesh model uniforms.
Implementations§
Trait Implementations§
Source§impl Default for ShadowPassLane
impl Default for ShadowPassLane
Source§impl Lane for ShadowPassLane
impl Lane for ShadowPassLane
Source§fn strategy_name(&self) -> &'static str
fn strategy_name(&self) -> &'static str
Human-readable name identifying this lane’s strategy. Read more
Source§fn estimate_cost(&self, ctx: &LaneContext) -> f32
fn estimate_cost(&self, ctx: &LaneContext) -> f32
Estimated computational cost of running this lane. Read more
Source§fn on_initialize(&self, ctx: &mut LaneContext) -> Result<(), LaneError>
fn on_initialize(&self, ctx: &mut LaneContext) -> Result<(), LaneError>
Called once when the lane is registered or the underlying context resets. Read more
Source§fn execute(&self, ctx: &mut LaneContext) -> Result<(), LaneError>
fn execute(&self, ctx: &mut LaneContext) -> Result<(), LaneError>
Main execution entry point — called each frame/tick by the owning agent. Read more
Source§fn on_shutdown(&self, ctx: &mut LaneContext)
fn on_shutdown(&self, ctx: &mut LaneContext)
Called when the lane is being destroyed or the context is shutting down. Read more
Source§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
Downcast to a concrete type (mutable) for type-specific operations.
Auto Trait Implementations§
impl !Freeze for ShadowPassLane
impl RefUnwindSafe for ShadowPassLane
impl Send for ShadowPassLane
impl Sync for ShadowPassLane
impl Unpin for ShadowPassLane
impl UnwindSafe for ShadowPassLane
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> 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§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().