Struct truck_rendimpl::Material
source · pub struct Material {
pub albedo: Vector4,
pub roughness: f64,
pub reflectance: f64,
pub ambient_ratio: f64,
pub background_ratio: f64,
pub alpha_blend: bool,
}
Expand description
Material information.
Each instance is rendered based on the microfacet theory.
Fields§
§albedo: Vector4
albedo, base color, [0, 1]-normalized rgba. Default is Vector4::new(1.0, 1.0, 1.0, 1.0)
.
Transparent by alpha is not yet supported in the current standard shader.
roughness: f64
roughness of the surface: [0, 1]. Default is 0.5.
reflectance: f64
ratio of specular: [0, 1]. Default is 0.25.
ambient_ratio: f64
ratio of ambient: [0, 1]. Default is 0.02.
background_ratio: f64
ratio of blending background color: [0, 1]. Default is 0.0.
alpha_blend: bool
alpha blend flag
Implementations§
source§impl Material
impl Material
sourcepub fn buffer(&self, device: &Device) -> BufferHandler
pub fn buffer(&self, device: &Device) -> BufferHandler
Creates a UNIFORM
buffer of material.
The bind group provided by the instances holds this uniform buffer.
Shader Examples
layout(set = 1, binding = 1) uniform Material {
vec4 albedo;
float roughness;
float reflectance;
float ambient_ratio;
};
Examples found in repository?
More examples
src/polygon_instance.rs (line 57)
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
fn non_textured_bg(&self, device: &Device, layout: &BindGroupLayout) -> BindGroup {
bind_group_util::create_bind_group(
device,
layout,
vec![
self.state.matrix_buffer(device).binding_resource(),
self.state.material.buffer(device).binding_resource(),
],
)
}
#[inline(always)]
fn textured_bg(&self, device: &Device, layout: &BindGroupLayout) -> BindGroup {
let (view, sampler) = self.state.textureview_and_sampler(device);
bind_group_util::create_bind_group(
device,
layout,
vec![
self.state.matrix_buffer(device).binding_resource(),
self.state.material.buffer(device).binding_resource(),
BindingResource::TextureView(&view),
BindingResource::Sampler(&sampler),
],
)
}
Trait Implementations§
impl Copy for Material
Auto Trait Implementations§
impl RefUnwindSafe for Material
impl Send for Material
impl Sync for Material
impl Unpin for Material
impl UnwindSafe for Material
Blanket Implementations§
§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>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian()
.