pub struct StandardMaterialUniform {Show 23 fields
pub base_color: Vec4,
pub emissive: Vec4,
pub attenuation_color: Vec4,
pub uv_transform: Mat3,
pub roughness: f32,
pub metallic: f32,
pub reflectance: f32,
pub diffuse_transmission: f32,
pub specular_transmission: f32,
pub thickness: f32,
pub ior: f32,
pub attenuation_distance: f32,
pub clearcoat: f32,
pub clearcoat_perceptual_roughness: f32,
pub anisotropy_strength: f32,
pub anisotropy_rotation: Vec2,
pub flags: u32,
pub alpha_cutoff: f32,
pub parallax_depth_scale: f32,
pub max_parallax_layer_count: f32,
pub lightmap_exposure: f32,
pub max_relief_mapping_search_steps: u32,
pub deferred_lighting_pass_id: u32,
}
Expand description
The GPU representation of the uniform data of a StandardMaterial
.
Fields§
§base_color: Vec4
Doubles as diffuse albedo for non-metallic, specular for metallic and a mix for everything in between.
emissive: Vec4
§attenuation_color: Vec4
Color white light takes after traveling through the attenuation distance underneath the material surface
uv_transform: Mat3
The transform applied to the UVs corresponding to ATTRIBUTE_UV_0
on the mesh before sampling. Default is identity.
roughness: f32
Linear perceptual roughness, clamped to [0.089, 1.0] in the shader Defaults to minimum of 0.089
metallic: f32
From [0.0, 1.0], dielectric to pure metallic
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
diffuse_transmission: f32
Amount of diffuse light transmitted through the material
specular_transmission: f32
Amount of specular light transmitted through the material
thickness: f32
Thickness of the volume underneath the material surface
ior: f32
Index of Refraction
attenuation_distance: f32
How far light travels through the volume underneath the material surface before being absorbed
clearcoat: f32
§clearcoat_perceptual_roughness: f32
§anisotropy_strength: f32
§anisotropy_rotation: Vec2
§flags: u32
The StandardMaterialFlags
accessible in the wgsl
shader.
alpha_cutoff: f32
When the alpha mode mask flag is set, any base color alpha above this cutoff means fully opaque, and any below means fully transparent.
parallax_depth_scale: f32
The depth of the StandardMaterial::depth_map
to apply.
max_parallax_layer_count: f32
In how many layers to split the depth maps for Steep parallax mapping.
If your parallax_depth_scale
is >0.1 and you are seeing jaggy edges,
increase this value. However, this incurs a performance cost.
lightmap_exposure: f32
The exposure (brightness) level of the lightmap, if present.
max_relief_mapping_search_steps: u32
Using ParallaxMappingMethod::Relief
, how many additional
steps to use at most to find the depth value.
deferred_lighting_pass_id: u32
ID for specifying which deferred lighting pass should be used for rendering this material, if any.
Trait Implementations§
Source§impl AsBindGroupShaderType<StandardMaterialUniform> for StandardMaterial
impl AsBindGroupShaderType<StandardMaterialUniform> for StandardMaterial
Source§fn as_bind_group_shader_type(
&self,
images: &RenderAssets<GpuImage>,
) -> StandardMaterialUniform
fn as_bind_group_shader_type( &self, images: &RenderAssets<GpuImage>, ) -> StandardMaterialUniform
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.Source§impl Clone for StandardMaterialUniform
impl Clone for StandardMaterialUniform
Source§fn clone(&self) -> StandardMaterialUniform
fn clone(&self) -> StandardMaterialUniform
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl CreateFrom for StandardMaterialUniformwhere
StandardMaterialUniform: ShaderType<ExtraMetadata = StructMetadata<23>>,
Vec4: for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom,
Mat3: for<'__> CreateFrom,
f32: for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom,
Vec2: for<'__> CreateFrom,
u32: for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom,
impl CreateFrom for StandardMaterialUniformwhere
StandardMaterialUniform: ShaderType<ExtraMetadata = StructMetadata<23>>,
Vec4: for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom,
Mat3: for<'__> CreateFrom,
f32: for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom,
Vec2: for<'__> CreateFrom,
u32: for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom,
fn create_from<B>(reader: &mut Reader<B>) -> StandardMaterialUniformwhere
B: BufferRef,
Source§impl Default for StandardMaterialUniform
impl Default for StandardMaterialUniform
Source§fn default() -> StandardMaterialUniform
fn default() -> StandardMaterialUniform
Source§impl ReadFrom for StandardMaterialUniformwhere
StandardMaterialUniform: ShaderType<ExtraMetadata = StructMetadata<23>>,
Vec4: for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom,
Mat3: for<'__> ReadFrom,
f32: for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom,
Vec2: for<'__> ReadFrom,
u32: for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom,
impl ReadFrom for StandardMaterialUniformwhere
StandardMaterialUniform: ShaderType<ExtraMetadata = StructMetadata<23>>,
Vec4: for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom,
Mat3: for<'__> ReadFrom,
f32: for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom,
Vec2: for<'__> ReadFrom,
u32: for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom,
Source§impl ShaderSize for StandardMaterialUniform
impl ShaderSize for StandardMaterialUniform
Source§const SHADER_SIZE: NonZero<u64> = _
const SHADER_SIZE: NonZero<u64> = _
ShaderType::min_size
)Source§impl ShaderType for StandardMaterialUniformwhere
Vec4: ShaderType + ShaderSize,
Mat3: ShaderType + ShaderSize,
f32: ShaderType + ShaderSize,
Vec2: ShaderType + ShaderSize,
u32: ShaderType + ShaderSize,
impl ShaderType for StandardMaterialUniformwhere
Vec4: ShaderType + ShaderSize,
Mat3: ShaderType + ShaderSize,
f32: ShaderType + ShaderSize,
Vec2: ShaderType + ShaderSize,
u32: ShaderType + ShaderSize,
Source§fn assert_uniform_compat()
fn assert_uniform_compat()
Self
meets the requirements of the
uniform address space restrictions on stored values and the
uniform address space layout constraints Read moreSource§impl WriteInto for StandardMaterialUniformwhere
StandardMaterialUniform: ShaderType<ExtraMetadata = StructMetadata<23>>,
Vec4: for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto,
Mat3: for<'__> WriteInto,
f32: for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto,
Vec2: for<'__> WriteInto,
u32: for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto,
impl WriteInto for StandardMaterialUniformwhere
StandardMaterialUniform: ShaderType<ExtraMetadata = StructMetadata<23>>,
Vec4: for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto,
Mat3: for<'__> WriteInto,
f32: for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto,
Vec2: for<'__> WriteInto,
u32: for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto,
fn write_into<B>(&self, writer: &mut Writer<B>)where
B: BufferMut,
Auto Trait Implementations§
impl Freeze for StandardMaterialUniform
impl RefUnwindSafe for StandardMaterialUniform
impl Send for StandardMaterialUniform
impl Sync for StandardMaterialUniform
impl Unpin for StandardMaterialUniform
impl UnwindSafe for StandardMaterialUniform
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<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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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
Creates Self
using default()
.
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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