Struct bevy::pbr::StandardMaterial
[−]pub struct StandardMaterial {Show 13 fields
pub base_color: Color,
pub base_color_texture: Option<Handle<Image>>,
pub emissive: Color,
pub emissive_texture: Option<Handle<Image>>,
pub perceptual_roughness: f32,
pub metallic: f32,
pub metallic_roughness_texture: Option<Handle<Image>>,
pub reflectance: f32,
pub normal_map_texture: Option<Handle<Image>>,
pub occlusion_texture: Option<Handle<Image>>,
pub double_sided: bool,
pub unlit: bool,
pub alpha_mode: AlphaMode,
}
Expand description
A material with “standard” properties used in PBR lighting Standard property values with pictures here https://google.github.io/filament/Material%20Properties.pdf.
Fields
base_color: Color
Doubles as diffuse albedo for non-metallic, specular for metallic and a mix for everything
in between. If used together with a base_color_texture, this is factored into the final
base color as base_color * base_color_texture_value
base_color_texture: Option<Handle<Image>>
emissive: Color
emissive_texture: Option<Handle<Image>>
perceptual_roughness: f32
Linear perceptual roughness, clamped to [0.089, 1.0] in the shader
Defaults to minimum of 0.089
If used together with a roughness/metallic texture, this is factored into the final base
color as roughness * roughness_texture_value
metallic: f32
From [0.0, 1.0], dielectric to pure metallic
If used together with a roughness/metallic texture, this is factored into the final base
color as metallic * metallic_texture_value
metallic_roughness_texture: Option<Handle<Image>>
reflectance: f32
Specular intensity for non-metals on a linear scale of [0.0, 1.0] defaults to 0.5 which is mapped to 4% reflectance in the shader
normal_map_texture: Option<Handle<Image>>
occlusion_texture: Option<Handle<Image>>
double_sided: bool
unlit: bool
alpha_mode: AlphaMode
Trait Implementations
impl Clone for StandardMaterial
impl Clone for StandardMaterial
pub fn clone(&self) -> StandardMaterial
pub fn clone(&self) -> StandardMaterial
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
impl Debug for StandardMaterial
impl Debug for StandardMaterial
impl Default for StandardMaterial
impl Default for StandardMaterial
pub fn default() -> StandardMaterial
pub fn default() -> StandardMaterial
Returns the “default value” for a type. Read more
impl From<Color> for StandardMaterial
impl From<Color> for StandardMaterial
pub fn from(color: Color) -> StandardMaterial
pub fn from(color: Color) -> StandardMaterial
Performs the conversion.
impl From<Handle<Image>> for StandardMaterial
impl From<Handle<Image>> for StandardMaterial
pub fn from(texture: Handle<Image>) -> StandardMaterial
pub fn from(texture: Handle<Image>) -> StandardMaterial
Performs the conversion.
impl RenderAsset for StandardMaterial
impl RenderAsset for StandardMaterial
type ExtractedAsset = StandardMaterial
type ExtractedAsset = StandardMaterial
The representation of the the asset in the “render world”.
type PreparedAsset = GpuStandardMaterial
type PreparedAsset = GpuStandardMaterial
The GPU-representation of the the asset.
type Param = (Res<'static, RenderDevice>, Res<'static, MaterialPipeline<StandardMaterial>>, Res<'static, HashMap<Handle<Image>, <Image as RenderAsset>::PreparedAsset, RandomState>>)
type Param = (Res<'static, RenderDevice>, Res<'static, MaterialPipeline<StandardMaterial>>, Res<'static, HashMap<Handle<Image>, <Image as RenderAsset>::PreparedAsset, RandomState>>)
Specifies all ECS data required by RenderAsset::prepare_asset
.
For convenience use the lifetimeless
SystemParams. Read more
pub fn extract_asset(&self) -> <StandardMaterial as RenderAsset>::ExtractedAsset
pub fn extract_asset(&self) -> <StandardMaterial as RenderAsset>::ExtractedAsset
Converts the asset into a RenderAsset::ExtractedAsset
.
pub fn prepare_asset(
material: <StandardMaterial as RenderAsset>::ExtractedAsset,
&mut <<<StandardMaterial as RenderAsset>::Param as SystemParam>::Fetch as SystemParamFetch<'_, '_>>::Item
) -> Result<<StandardMaterial as RenderAsset>::PreparedAsset, PrepareAssetError<<StandardMaterial as RenderAsset>::ExtractedAsset>>
pub fn prepare_asset(
material: <StandardMaterial as RenderAsset>::ExtractedAsset,
&mut <<<StandardMaterial as RenderAsset>::Param as SystemParam>::Fetch as SystemParamFetch<'_, '_>>::Item
) -> Result<<StandardMaterial as RenderAsset>::PreparedAsset, PrepareAssetError<<StandardMaterial as RenderAsset>::ExtractedAsset>>
Prepares the extracted asset
for the GPU by transforming it into
a RenderAsset::PreparedAsset
. Therefore ECS data may be accessed via the param
. Read more
impl SpecializedMaterial for StandardMaterial
impl SpecializedMaterial for StandardMaterial
type Key = StandardMaterialKey
type Key = StandardMaterialKey
The key used to specialize this material’s RenderPipelineDescriptor
.
pub fn key(
render_asset: &<StandardMaterial as RenderAsset>::PreparedAsset
) -> <StandardMaterial as SpecializedMaterial>::Key
pub fn key(
render_asset: &<StandardMaterial as RenderAsset>::PreparedAsset
) -> <StandardMaterial as SpecializedMaterial>::Key
Extract the SpecializedMaterial::Key
for the “prepared” version of this material. This key will be
passed in to the SpecializedMaterial::specialize
function when compiling the RenderPipeline
for a given entity’s material. Read more
pub fn specialize(
key: <StandardMaterial as SpecializedMaterial>::Key,
descriptor: &mut RenderPipelineDescriptor
)
pub fn specialize(
key: <StandardMaterial as SpecializedMaterial>::Key,
descriptor: &mut RenderPipelineDescriptor
)
Specializes the given descriptor
according to the given key
.
pub fn fragment_shader(_asset_server: &AssetServer) -> Option<Handle<Shader>>
pub fn fragment_shader(_asset_server: &AssetServer) -> Option<Handle<Shader>>
pub fn bind_group(
render_asset: &<StandardMaterial as RenderAsset>::PreparedAsset
) -> &BindGroup
pub fn bind_group(
render_asset: &<StandardMaterial as RenderAsset>::PreparedAsset
) -> &BindGroup
Returns this material’s BindGroup
. This should match the layout returned by SpecializedMaterial::bind_group_layout
.
pub fn bind_group_layout(render_device: &RenderDevice) -> BindGroupLayout
pub fn bind_group_layout(render_device: &RenderDevice) -> BindGroupLayout
Returns this material’s BindGroupLayout
. This should match the BindGroup
returned by SpecializedMaterial::bind_group
.
pub fn alpha_mode(
render_asset: &<StandardMaterial as RenderAsset>::PreparedAsset
) -> AlphaMode
pub fn alpha_mode(
render_asset: &<StandardMaterial as RenderAsset>::PreparedAsset
) -> AlphaMode
Returns this material’s AlphaMode
. Defaults to AlphaMode::Opaque
.
fn vertex_shader(asset_server: &AssetServer) -> Option<Handle<Shader>>
fn vertex_shader(asset_server: &AssetServer) -> Option<Handle<Shader>>
fn dynamic_uniform_indices(material: &Self::PreparedAsset) -> &[u32]
fn dynamic_uniform_indices(material: &Self::PreparedAsset) -> &[u32]
impl TypeUuid for StandardMaterial
impl TypeUuid for StandardMaterial
Auto Trait Implementations
impl RefUnwindSafe for StandardMaterial
impl Send for StandardMaterial
impl Sync for StandardMaterial
impl Unpin for StandardMaterial
impl UnwindSafe for StandardMaterial
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
pub fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>ⓘNotable traits for Box<F, A>impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
pub fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>ⓘNotable traits for Box<F, A>impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
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
. Read more
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
pub fn as_any(&self) -> &(dyn Any + 'static)
pub 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. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub 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. Read more
impl<T> FromWorld for T where
T: Default,
impl<T> FromWorld for T where
T: Default,
pub fn from_world(_world: &mut World) -> T
pub fn from_world(_world: &mut World) -> T
Creates Self
using data from the given World
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
T: Future, type Output = <T as Future>::Output;
sourcefn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
T: Future, type Output = <T as Future>::Output;
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more
impl<T> TypeData for T where
T: 'static + Send + Sync + Clone,
impl<T> TypeData for T where
T: 'static + Send + Sync + Clone,
pub fn clone_type_data(&self) -> Box<dyn TypeData + 'static, Global>ⓘNotable traits for Box<F, A>impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
impl<T> TypeUuidDynamic for T where
T: TypeUuid,
impl<T> TypeUuidDynamic for T where
T: TypeUuid,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
pub fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
where
S: Into<Dispatch>,
T: Future, type Output = <T as Future>::Output;
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
fn with_current_subscriber(self) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
T: Future, type Output = <T as Future>::Output;
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more