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 ScreenSpaceAmbientOcclusionSettingswhere
ScreenSpaceAmbientOcclusionSettings: Send + Sync + 'static,
impl Component for ScreenSpaceAmbientOcclusionSettingswhere ScreenSpaceAmbientOcclusionSettings: Send + Sync + 'static,
§type Storage = TableStorage
type Storage = TableStorage
TableStorage
or SparseStorage
.§impl Default for ScreenSpaceAmbientOcclusionSettings
impl Default for ScreenSpaceAmbientOcclusionSettings
§fn default() -> ScreenSpaceAmbientOcclusionSettings
fn default() -> ScreenSpaceAmbientOcclusionSettings
§impl ExtractComponent for ScreenSpaceAmbientOcclusionSettingswhere
ScreenSpaceAmbientOcclusionSettings: Clone,
impl ExtractComponent for ScreenSpaceAmbientOcclusionSettingswhere ScreenSpaceAmbientOcclusionSettings: Clone,
§type Query = &'static ScreenSpaceAmbientOcclusionSettings
type Query = &'static ScreenSpaceAmbientOcclusionSettings
ReadOnlyWorldQueryData
to fetch the components to extract.§type Out = ScreenSpaceAmbientOcclusionSettings
type Out = ScreenSpaceAmbientOcclusionSettings
§fn extract_component(
item: <<ScreenSpaceAmbientOcclusionSettings as ExtractComponent>::Query as WorldQuery>::Item<'_>
) -> Option<<ScreenSpaceAmbientOcclusionSettings as ExtractComponent>::Out>
fn extract_component( item: <<ScreenSpaceAmbientOcclusionSettings as ExtractComponent>::Query as WorldQuery>::Item<'_> ) -> Option<<ScreenSpaceAmbientOcclusionSettings as ExtractComponent>::Out>
§impl FromReflect for ScreenSpaceAmbientOcclusionSettingswhere
ScreenSpaceAmbientOcclusionQualityLevel: FromReflect,
impl FromReflect for ScreenSpaceAmbientOcclusionSettingswhere ScreenSpaceAmbientOcclusionQualityLevel: FromReflect,
§fn from_reflect(
reflect: &(dyn Reflect + 'static)
) -> Option<ScreenSpaceAmbientOcclusionSettings>
fn from_reflect( reflect: &(dyn Reflect + 'static) ) -> Option<ScreenSpaceAmbientOcclusionSettings>
Self
from a reflected value.§impl GetTypeRegistration for ScreenSpaceAmbientOcclusionSettingswhere
ScreenSpaceAmbientOcclusionQualityLevel: FromReflect,
impl GetTypeRegistration for ScreenSpaceAmbientOcclusionSettingswhere ScreenSpaceAmbientOcclusionQualityLevel: FromReflect,
§impl Hash for ScreenSpaceAmbientOcclusionSettings
impl Hash for ScreenSpaceAmbientOcclusionSettings
§impl PartialEq<ScreenSpaceAmbientOcclusionSettings> for ScreenSpaceAmbientOcclusionSettings
impl PartialEq<ScreenSpaceAmbientOcclusionSettings> 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
ScreenSpaceAmbientOcclusionQualityLevel: FromReflect,
impl Reflect for ScreenSpaceAmbientOcclusionSettingswhere ScreenSpaceAmbientOcclusionQualityLevel: FromReflect,
§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
§fn into_any(
self: Box<ScreenSpaceAmbientOcclusionSettings, Global>
) -> Box<dyn Any, Global>
fn into_any( self: Box<ScreenSpaceAmbientOcclusionSettings, Global> ) -> Box<dyn Any, Global>
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, Global>
) -> Box<dyn Reflect, Global>
fn into_reflect( self: Box<ScreenSpaceAmbientOcclusionSettings, Global> ) -> Box<dyn Reflect, Global>
§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, Global>
fn clone_value(&self) -> Box<dyn Reflect, Global>
Reflect
trait object. Read more§fn set(
&mut self,
value: Box<dyn Reflect, Global>
) -> Result<(), Box<dyn Reflect, Global>>
fn set( &mut self, value: Box<dyn Reflect, Global> ) -> Result<(), Box<dyn Reflect, Global>>
§fn apply(&mut self, value: &(dyn Reflect + 'static))
fn apply(&mut self, value: &(dyn Reflect + 'static))
§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, Global>
) -> ReflectOwned
fn reflect_owned( self: Box<ScreenSpaceAmbientOcclusionSettings, Global> ) -> 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
ScreenSpaceAmbientOcclusionQualityLevel: FromReflect,
impl Struct for ScreenSpaceAmbientOcclusionSettingswhere ScreenSpaceAmbientOcclusionQualityLevel: FromReflect,
§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 ScreenSpaceAmbientOcclusionSettingswhere
ScreenSpaceAmbientOcclusionQualityLevel: FromReflect,
impl TypePath for ScreenSpaceAmbientOcclusionSettingswhere ScreenSpaceAmbientOcclusionQualityLevel: FromReflect,
§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
ScreenSpaceAmbientOcclusionQualityLevel: FromReflect,
impl Typed for ScreenSpaceAmbientOcclusionSettingswhere ScreenSpaceAmbientOcclusionQualityLevel: FromReflect,
impl Eq for ScreenSpaceAmbientOcclusionSettings
impl StructuralEq for ScreenSpaceAmbientOcclusionSettings
impl StructuralPartialEq for ScreenSpaceAmbientOcclusionSettings
Auto Trait Implementations§
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 Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
impl<T, U> AsBindGroupShaderType<U> for Twhere U: ShaderType, &'a T: for<'a> Into<U>,
§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
§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) -> Cwhere F: for<'a> FnMut(&'a mut T) -> OwningPtr<'a, Aligned>,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
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, Global>) -> Rc<dyn Any, Global>
fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
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<C> DynamicBundle for Cwhere
C: Component,
impl<C> DynamicBundle for Cwhere C: Component,
fn get_components( self, func: &mut impl FnMut(StorageType, OwningPtr<'_, Aligned>) )
§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 Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§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 Twhere
T: Reflect + ?Sized,
impl<T> GetPath for Twhere T: Reflect + ?Sized,
§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> ⓘ
§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 Pwhere
R: Read + ReadEndian<P>,
P: Default,
impl<R, P> ReadPrimitive<R> for Pwhere R: Read + ReadEndian<P>, P: Default,
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()
.