Struct bevy_pbr::CascadeShadowConfigBuilder
source · pub struct CascadeShadowConfigBuilder {
pub num_cascades: usize,
pub minimum_distance: f32,
pub maximum_distance: f32,
pub first_cascade_far_bound: f32,
pub overlap_proportion: f32,
}
Expand description
Builder for CascadeShadowConfig
.
Fields§
§num_cascades: usize
The number of shadow cascades. More cascades increases shadow quality by mitigating perspective aliasing - a phenomenon where areas nearer the camera are covered by fewer shadow map texels than areas further from the camera, causing blocky looking shadows.
This does come at the cost increased rendering overhead, however this overhead is still less than if you were to use fewer cascades and much larger shadow map textures to achieve the same quality level.
In case rendered geometry covers a relatively narrow and static depth relative to camera, it may
make more sense to use fewer cascades and a higher resolution shadow map texture as perspective aliasing
is not as much an issue. Be sure to adjust minimum_distance
and maximum_distance
appropriately.
minimum_distance: f32
The minimum shadow distance, which can help improve the texel resolution of the first cascade. Areas nearer to the camera than this will likely receive no shadows.
NOTE: Due to implementation details, this usually does not impact shadow quality as much as
first_cascade_far_bound
and maximum_distance
. At many view frustum field-of-views, the
texel resolution of the first cascade is dominated by the width / height of the view frustum plane
at first_cascade_far_bound
rather than the depth of the frustum from minimum_distance
to
first_cascade_far_bound
.
maximum_distance: f32
The maximum shadow distance. Areas further from the camera than this will likely receive no shadows.
first_cascade_far_bound: f32
Sets the far bound of the first cascade, relative to the view origin. In-between cascades will be exponentially spaced relative to the maximum shadow distance. NOTE: This is ignored if there is only one cascade, the maximum distance takes precedence.
overlap_proportion: f32
Sets the overlap proportion between cascades. The overlap is used to make the transition from one cascade’s shadow map to the next less abrupt by blending between both shadow maps.
Implementations§
source§impl CascadeShadowConfigBuilder
impl CascadeShadowConfigBuilder
sourcepub fn build(&self) -> CascadeShadowConfig
pub fn build(&self) -> CascadeShadowConfig
Returns the cascade config as specified by this builder.
Trait Implementations§
source§impl Default for CascadeShadowConfigBuilder
impl Default for CascadeShadowConfigBuilder
source§impl From<CascadeShadowConfigBuilder> for CascadeShadowConfig
impl From<CascadeShadowConfigBuilder> for CascadeShadowConfig
source§fn from(builder: CascadeShadowConfigBuilder) -> Self
fn from(builder: CascadeShadowConfigBuilder) -> Self
Auto Trait Implementations§
impl RefUnwindSafe for CascadeShadowConfigBuilder
impl Send for CascadeShadowConfigBuilder
impl Sync for CascadeShadowConfigBuilder
impl Unpin for CascadeShadowConfigBuilder
impl UnwindSafe for CascadeShadowConfigBuilder
Blanket Implementations§
source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.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<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self
using data from the given World
.