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§

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?
src/instance_descriptor.rs (line 116)
116
    pub fn material_buffer(&self, device: &Device) -> BufferHandler { self.material.buffer(device) }
More examples
Hide additional 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§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The alignment of pointer.
The type for initializers.
Initializes a with the given initializer. Read more
Dereferences the given pointer. Read more
Mutably dereferences the given pointer. Read more
Drops the object pointed to by the given pointer. Read more
Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.