Struct three_d::renderer::material::PhysicalMaterial [−][src]
pub struct PhysicalMaterial {Show 14 fields
pub name: String,
pub albedo: Color,
pub albedo_texture: Option<Rc<Texture2D<u8>>>,
pub metallic: f32,
pub roughness: f32,
pub metallic_roughness_texture: Option<Rc<Texture2D<u8>>>,
pub occlusion_strength: f32,
pub occlusion_texture: Option<Rc<Texture2D<u8>>>,
pub normal_scale: f32,
pub normal_texture: Option<Rc<Texture2D<u8>>>,
pub opaque_render_states: RenderStates,
pub transparent_render_states: RenderStates,
pub emissive: Color,
pub emissive_texture: Option<Rc<Texture2D<u8>>>,
}
Expand description
A physically-based material that renders a Shadable object in an approximate correct physical manner based on Physically Based Rendering (PBR). This material is affected by lights.
Fields
name: String
Name. Used for matching geometry and material.
albedo: Color
Albedo base color, also called diffuse color. Assumed to be in linear color space.
albedo_texture: Option<Rc<Texture2D<u8>>>
Texture with albedo base colors, also called diffuse color. Assumed to be in sRGB with or without an alpha channel.
metallic: f32
A value in the range [0..1]
specifying how metallic the material is.
roughness: f32
A value in the range [0..1]
specifying how rough the material surface is.
metallic_roughness_texture: Option<Rc<Texture2D<u8>>>
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<Rc<Texture2D<u8>>>
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<Rc<Texture2D<u8>>>
A tangent space normal map, also known as bump map.
opaque_render_states: RenderStates
Render states used when the color is opaque (has a maximal alpha value).
transparent_render_states: RenderStates
Render states used when the color is transparent (does not have a maximal alpha value).
emissive: Color
emissive_texture: Option<Rc<Texture2D<u8>>>
Implementations
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.
Trait Implementations
Returns the fragment shader source for this material. Should output the final fragment color.
fn use_uniforms(
&self,
program: &Program,
camera: &Camera,
lights: &Lights
) -> ThreeDResult<()>
fn use_uniforms(
&self,
program: &Program,
camera: &Camera,
lights: &Lights
) -> ThreeDResult<()>
Sends the uniform data needed for this material to the fragment shader.
Returns the render states needed to render with this material.
Returns whether or not this material is transparent.
Auto Trait Implementations
impl !RefUnwindSafe for PhysicalMaterial
impl !Send for PhysicalMaterial
impl !Sync for PhysicalMaterial
impl Unpin for PhysicalMaterial
impl !UnwindSafe for PhysicalMaterial
Blanket Implementations
Mutably borrows from an owned value. Read more
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more