Struct bevy::pbr::ScreenSpaceAmbientOcclusionSettings
pub struct ScreenSpaceAmbientOcclusionSettings {
pub quality_level: ScreenSpaceAmbientOcclusionQualityLevel,
}
Expand description
Component to apply screen space ambient occlusion to a 3d camera.
Screen space ambient occlusion (SSAO) approximates small-scale, local occlusion of indirect diffuse light between objects, based on what’s visible on-screen. SSAO does not apply to direct lighting, such as point or directional lights.
This darkens creases, e.g. on staircases, and gives nice contact shadows where objects meet, giving entities a more “grounded” feel.
§Usage Notes
Requires that you add ScreenSpaceAmbientOcclusionPlugin
to your app,
and add the DepthPrepass
and NormalPrepass
components to your camera.
It strongly recommended that you use SSAO in conjunction with
TAA (bevy_core_pipeline::experimental::taa::TemporalAntiAliasSettings
).
Doing so greatly reduces SSAO noise.
SSAO is not supported on WebGL2
, and is not currently supported on WebGPU
or DirectX12
.
Fields§
§quality_level: ScreenSpaceAmbientOcclusionQualityLevel
Trait Implementations§
§impl Clone for ScreenSpaceAmbientOcclusionSettings
impl Clone for ScreenSpaceAmbientOcclusionSettings
§fn clone(&self) -> ScreenSpaceAmbientOcclusionSettings
fn clone(&self) -> ScreenSpaceAmbientOcclusionSettings
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Component for ScreenSpaceAmbientOcclusionSettings
impl Component for ScreenSpaceAmbientOcclusionSettings
§const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table
const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table
§fn register_component_hooks(_hooks: &mut ComponentHooks)
fn register_component_hooks(_hooks: &mut ComponentHooks)
ComponentHooks
.§impl Default for ScreenSpaceAmbientOcclusionSettings
impl Default for ScreenSpaceAmbientOcclusionSettings
§fn default() -> ScreenSpaceAmbientOcclusionSettings
fn default() -> ScreenSpaceAmbientOcclusionSettings
§impl ExtractComponent for ScreenSpaceAmbientOcclusionSettings
impl ExtractComponent for ScreenSpaceAmbientOcclusionSettings
§type QueryData = &'static ScreenSpaceAmbientOcclusionSettings
type QueryData = &'static ScreenSpaceAmbientOcclusionSettings
ReadOnlyQueryData
to fetch the components to extract.§type QueryFilter = ()
type QueryFilter = ()
§type Out = ScreenSpaceAmbientOcclusionSettings
type Out = ScreenSpaceAmbientOcclusionSettings
§fn extract_component(
item: <<ScreenSpaceAmbientOcclusionSettings as ExtractComponent>::QueryData as WorldQuery>::Item<'_>
) -> Option<<ScreenSpaceAmbientOcclusionSettings as ExtractComponent>::Out>
fn extract_component( item: <<ScreenSpaceAmbientOcclusionSettings as ExtractComponent>::QueryData as WorldQuery>::Item<'_> ) -> Option<<ScreenSpaceAmbientOcclusionSettings as ExtractComponent>::Out>
§impl FromReflect for ScreenSpaceAmbientOcclusionSettingswhere
ScreenSpaceAmbientOcclusionSettings: Any + Send + Sync,
ScreenSpaceAmbientOcclusionQualityLevel: FromReflect + TypePath + RegisterForReflection,
impl FromReflect for ScreenSpaceAmbientOcclusionSettingswhere
ScreenSpaceAmbientOcclusionSettings: Any + Send + Sync,
ScreenSpaceAmbientOcclusionQualityLevel: FromReflect + TypePath + RegisterForReflection,
§fn from_reflect(
reflect: &(dyn Reflect + 'static)
) -> Option<ScreenSpaceAmbientOcclusionSettings>
fn from_reflect( reflect: &(dyn Reflect + 'static) ) -> Option<ScreenSpaceAmbientOcclusionSettings>
Self
from a reflected value.§fn take_from_reflect(
reflect: Box<dyn Reflect>
) -> Result<Self, Box<dyn Reflect>>
fn take_from_reflect( reflect: Box<dyn Reflect> ) -> Result<Self, Box<dyn Reflect>>
Self
using,
constructing the value using from_reflect
if that fails. Read more§impl GetTypeRegistration for ScreenSpaceAmbientOcclusionSettingswhere
ScreenSpaceAmbientOcclusionSettings: Any + Send + Sync,
ScreenSpaceAmbientOcclusionQualityLevel: FromReflect + TypePath + RegisterForReflection,
impl GetTypeRegistration for ScreenSpaceAmbientOcclusionSettingswhere
ScreenSpaceAmbientOcclusionSettings: Any + Send + Sync,
ScreenSpaceAmbientOcclusionQualityLevel: FromReflect + TypePath + RegisterForReflection,
§fn get_type_registration() -> TypeRegistration
fn get_type_registration() -> TypeRegistration
TypeRegistration
for this type.§fn register_type_dependencies(registry: &mut TypeRegistry)
fn register_type_dependencies(registry: &mut TypeRegistry)
§impl Hash for ScreenSpaceAmbientOcclusionSettings
impl Hash for ScreenSpaceAmbientOcclusionSettings
§impl PartialEq for ScreenSpaceAmbientOcclusionSettings
impl PartialEq for ScreenSpaceAmbientOcclusionSettings
§fn eq(&self, other: &ScreenSpaceAmbientOcclusionSettings) -> bool
fn eq(&self, other: &ScreenSpaceAmbientOcclusionSettings) -> bool
self
and other
values to be equal, and is used
by ==
.§impl Reflect for ScreenSpaceAmbientOcclusionSettingswhere
ScreenSpaceAmbientOcclusionSettings: Any + Send + Sync,
ScreenSpaceAmbientOcclusionQualityLevel: FromReflect + TypePath + RegisterForReflection,
impl Reflect for ScreenSpaceAmbientOcclusionSettingswhere
ScreenSpaceAmbientOcclusionSettings: Any + Send + Sync,
ScreenSpaceAmbientOcclusionQualityLevel: FromReflect + TypePath + RegisterForReflection,
§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
§fn into_any(self: Box<ScreenSpaceAmbientOcclusionSettings>) -> Box<dyn Any>
fn into_any(self: Box<ScreenSpaceAmbientOcclusionSettings>) -> Box<dyn Any>
Box<dyn Any>
.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut dyn Any
.§fn into_reflect(
self: Box<ScreenSpaceAmbientOcclusionSettings>
) -> Box<dyn Reflect>
fn into_reflect( self: Box<ScreenSpaceAmbientOcclusionSettings> ) -> Box<dyn Reflect>
§fn as_reflect(&self) -> &(dyn Reflect + 'static)
fn as_reflect(&self) -> &(dyn Reflect + 'static)
§fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
§fn clone_value(&self) -> Box<dyn Reflect>
fn clone_value(&self) -> Box<dyn Reflect>
Reflect
trait object. Read more§fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
§fn apply(&mut self, value: &(dyn Reflect + 'static))
fn apply(&mut self, value: &(dyn Reflect + 'static))
§fn reflect_kind(&self) -> ReflectKind
fn reflect_kind(&self) -> ReflectKind
§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
§fn reflect_owned(self: Box<ScreenSpaceAmbientOcclusionSettings>) -> ReflectOwned
fn reflect_owned(self: Box<ScreenSpaceAmbientOcclusionSettings>) -> ReflectOwned
§fn reflect_partial_eq(&self, value: &(dyn Reflect + 'static)) -> Option<bool>
fn reflect_partial_eq(&self, value: &(dyn Reflect + 'static)) -> Option<bool>
§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
§fn serializable(&self) -> Option<Serializable<'_>>
fn serializable(&self) -> Option<Serializable<'_>>
§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
§impl Struct for ScreenSpaceAmbientOcclusionSettingswhere
ScreenSpaceAmbientOcclusionSettings: Any + Send + Sync,
ScreenSpaceAmbientOcclusionQualityLevel: FromReflect + TypePath + RegisterForReflection,
impl Struct for ScreenSpaceAmbientOcclusionSettingswhere
ScreenSpaceAmbientOcclusionSettings: Any + Send + Sync,
ScreenSpaceAmbientOcclusionQualityLevel: FromReflect + TypePath + RegisterForReflection,
§fn field(&self, name: &str) -> Option<&(dyn Reflect + 'static)>
fn field(&self, name: &str) -> Option<&(dyn Reflect + 'static)>
name
as a &dyn Reflect
.§fn field_mut(&mut self, name: &str) -> Option<&mut (dyn Reflect + 'static)>
fn field_mut(&mut self, name: &str) -> Option<&mut (dyn Reflect + 'static)>
name
as a
&mut dyn Reflect
.§fn field_at(&self, index: usize) -> Option<&(dyn Reflect + 'static)>
fn field_at(&self, index: usize) -> Option<&(dyn Reflect + 'static)>
index
as a
&dyn Reflect
.§fn field_at_mut(&mut self, index: usize) -> Option<&mut (dyn Reflect + 'static)>
fn field_at_mut(&mut self, index: usize) -> Option<&mut (dyn Reflect + 'static)>
index
as a &mut dyn Reflect
.§fn iter_fields(&self) -> FieldIter<'_> ⓘ
fn iter_fields(&self) -> FieldIter<'_> ⓘ
§fn clone_dynamic(&self) -> DynamicStruct
fn clone_dynamic(&self) -> DynamicStruct
DynamicStruct
.§impl TypePath for ScreenSpaceAmbientOcclusionSettings
impl TypePath for ScreenSpaceAmbientOcclusionSettings
§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
§impl Typed for ScreenSpaceAmbientOcclusionSettingswhere
ScreenSpaceAmbientOcclusionSettings: Any + Send + Sync,
ScreenSpaceAmbientOcclusionQualityLevel: FromReflect + TypePath + RegisterForReflection,
impl Typed for ScreenSpaceAmbientOcclusionSettingswhere
ScreenSpaceAmbientOcclusionSettings: Any + Send + Sync,
ScreenSpaceAmbientOcclusionQualityLevel: FromReflect + TypePath + RegisterForReflection,
impl Eq for ScreenSpaceAmbientOcclusionSettings
impl StructuralPartialEq for ScreenSpaceAmbientOcclusionSettings
Auto Trait Implementations§
impl Freeze for ScreenSpaceAmbientOcclusionSettings
impl RefUnwindSafe for ScreenSpaceAmbientOcclusionSettings
impl Send for ScreenSpaceAmbientOcclusionSettings
impl Sync for ScreenSpaceAmbientOcclusionSettings
impl Unpin for ScreenSpaceAmbientOcclusionSettings
impl UnwindSafe for ScreenSpaceAmbientOcclusionSettings
Blanket Implementations§
§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> 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
§impl<C> Bundle for Cwhere
C: Component,
impl<C> Bundle for Cwhere
C: Component,
fn component_ids( components: &mut Components, storages: &mut Storages, ids: &mut impl FnMut(ComponentId) )
unsafe fn from_components<T, F>(ctx: &mut T, func: &mut F) -> C
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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
.§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
.§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.§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.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<C> DynamicBundle for Cwhere
C: Component,
impl<C> DynamicBundle for Cwhere
C: Component,
fn get_components(self, func: &mut impl FnMut(StorageType, OwningPtr<'_>))
§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path
.§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident
.§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name
.§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self
using data from the given World
.§impl<T> GetPath for T
impl<T> GetPath for T
§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>
) -> Result<&(dyn Reflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p> ) -> Result<&(dyn Reflect + 'static), ReflectPathError<'p>>
path
. Read more§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>
) -> Result<&mut (dyn Reflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p> ) -> Result<&mut (dyn Reflect + 'static), ReflectPathError<'p>>
path
. Read more§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>(
&self,
path: impl ReflectPath<'p>
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
path
. Read more§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
path
. Read more§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§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§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> NoneValue for Twhere
T: Default,
impl<T> NoneValue for Twhere
T: Default,
type NoneType = T
§fn null_value() -> T
fn null_value() -> 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>
ReadEndian::read_from_little_endian()
.