Struct three_d::renderer::material::PhysicalMaterial
source · pub struct PhysicalMaterial {Show 15 fields
pub name: String,
pub albedo: Srgba,
pub albedo_texture: Option<Texture2DRef>,
pub metallic: f32,
pub roughness: f32,
pub metallic_roughness_texture: Option<Texture2DRef>,
pub occlusion_strength: f32,
pub occlusion_texture: Option<Texture2DRef>,
pub normal_scale: f32,
pub normal_texture: Option<Texture2DRef>,
pub render_states: RenderStates,
pub is_transparent: bool,
pub emissive: Srgba,
pub emissive_texture: Option<Texture2DRef>,
pub lighting_model: LightingModel,
}
Expand description
A physically-based material that renders a Geometry in an approximate correct physical manner based on Physically Based Rendering (PBR). This material is affected by lights.
Fields§
§name: String
Name.
albedo: Srgba
Albedo base color, also called diffuse color.
albedo_texture: Option<Texture2DRef>
Texture with albedo base colors, also called diffuse color.
The colors are assumed to be in linear sRGB (RgbU8
), linear sRGB with an alpha channel (RgbaU8
) or HDR color space.
metallic: f32
A value in the range [0..1]
specifying how metallic the surface is.
roughness: f32
A value in the range [0..1]
specifying how rough the surface is.
metallic_roughness_texture: Option<Texture2DRef>
Texture containing the metallic and roughness parameters which are multiplied with the Self::metallic and Self::roughness values in the shader. The metallic values are sampled from the blue channel and the roughness from the green channel.
occlusion_strength: f32
A scalar multiplier controlling the amount of occlusion applied from the Self::occlusion_texture. A value of 0.0 means no occlusion. A value of 1.0 means full occlusion.
occlusion_texture: Option<Texture2DRef>
An occlusion map. Higher values indicate areas that should receive full indirect lighting and lower values indicate no indirect lighting. The occlusion values are sampled from the red channel.
normal_scale: f32
A scalar multiplier applied to each normal vector of the Self::normal_texture.
normal_texture: Option<Texture2DRef>
A tangent space normal map, also known as bump map.
render_states: RenderStates
Render states.
is_transparent: bool
Whether this material should be treated as a transparent material (An object needs to be rendered differently depending on whether it is transparent or opaque).
emissive: Srgba
Color of light shining from an object.
emissive_texture: Option<Texture2DRef>
Texture with color of light shining from an object.
The colors are assumed to be in linear sRGB (RgbU8
), linear sRGB with an alpha channel (RgbaU8
) or HDR color space.
lighting_model: LightingModel
The lighting model used when rendering this material
Implementations§
source§impl PhysicalMaterial
impl PhysicalMaterial
sourcepub fn new(context: &Context, cpu_material: &CpuMaterial) -> Self
pub fn new(context: &Context, cpu_material: &CpuMaterial) -> Self
Constructs a new physical material from a CpuMaterial. If the input contains an CpuMaterial::occlusion_metallic_roughness_texture, this texture is used for both PhysicalMaterial::metallic_roughness_texture and PhysicalMaterial::occlusion_texture while any CpuMaterial::metallic_roughness_texture or CpuMaterial::occlusion_texture are ignored. Tries to infer whether this material is transparent or opaque from the alpha value of the albedo color and the alpha values in the albedo texture. Since this is not always correct, it is preferred to use PhysicalMaterial::new_opaque or PhysicalMaterial::new_transparent.
sourcepub fn new_opaque(context: &Context, cpu_material: &CpuMaterial) -> Self
pub fn new_opaque(context: &Context, cpu_material: &CpuMaterial) -> Self
Constructs a new opaque physical material from a CpuMaterial. If the input contains an CpuMaterial::occlusion_metallic_roughness_texture, this texture is used for both PhysicalMaterial::metallic_roughness_texture and PhysicalMaterial::occlusion_texture while any CpuMaterial::metallic_roughness_texture or CpuMaterial::occlusion_texture are ignored.
sourcepub fn new_transparent(context: &Context, cpu_material: &CpuMaterial) -> Self
pub fn new_transparent(context: &Context, cpu_material: &CpuMaterial) -> Self
Constructs a new transparent physical material from a CpuMaterial. If the input contains an CpuMaterial::occlusion_metallic_roughness_texture, this texture is used for both PhysicalMaterial::metallic_roughness_texture and PhysicalMaterial::occlusion_texture while any CpuMaterial::metallic_roughness_texture or CpuMaterial::occlusion_texture are ignored.
Trait Implementations§
source§impl Clone for PhysicalMaterial
impl Clone for PhysicalMaterial
source§fn clone(&self) -> PhysicalMaterial
fn clone(&self) -> PhysicalMaterial
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more