pub struct PhysicalMaterial {Show 15 fields
pub name: String,
pub albedo: Color,
pub albedo_texture: Option<Rc<Texture2D>>,
pub metallic: f32,
pub roughness: f32,
pub metallic_roughness_texture: Option<Rc<Texture2D>>,
pub occlusion_strength: f32,
pub occlusion_texture: Option<Rc<Texture2D>>,
pub normal_scale: f32,
pub normal_texture: Option<Rc<Texture2D>>,
pub render_states: RenderStates,
pub is_transparent: bool,
pub emissive: Color,
pub emissive_texture: Option<Rc<Texture2D>>,
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: StringName. Used for matching geometry and material.
albedo: ColorAlbedo base color, also called diffuse color. Assumed to be in linear color space.
albedo_texture: Option<Rc<Texture2D>>Texture with albedo base colors, also called diffuse color. Assumed to be in sRGB with or without an alpha channel.
metallic: f32A value in the range [0..1] specifying how metallic the surface is.
roughness: f32A value in the range [0..1] specifying how rough the surface is.
metallic_roughness_texture: Option<Rc<Texture2D>>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: f32A 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>>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: f32A scalar multiplier applied to each normal vector of the Self::normal_texture.
normal_texture: Option<Rc<Texture2D>>A tangent space normal map, also known as bump map.
render_states: RenderStatesRender states.
is_transparent: boolWhether 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: ColorColor of light shining from an object.
emissive_texture: Option<Rc<Texture2D>>Texture with color of light shining from an object.
lighting_model: LightingModelThe lighting model used when rendering this material
Implementations
sourceimpl PhysicalMaterial
impl PhysicalMaterial
sourcepub fn new(context: &Context, cpu_material: &CpuMaterial) -> ThreeDResult<Self>
pub fn new(context: &Context, cpu_material: &CpuMaterial) -> ThreeDResult<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
) -> ThreeDResult<Self>
pub fn new_opaque(
context: &Context,
cpu_material: &CpuMaterial
) -> ThreeDResult<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
) -> ThreeDResult<Self>
pub fn new_transparent(
context: &Context,
cpu_material: &CpuMaterial
) -> ThreeDResult<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
sourceimpl Clone for PhysicalMaterial
impl Clone for PhysicalMaterial
sourcefn clone(&self) -> PhysicalMaterial
fn clone(&self) -> PhysicalMaterial
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source. Read more
sourceimpl Default for PhysicalMaterial
impl Default for PhysicalMaterial
sourceimpl Material for PhysicalMaterial
impl Material for PhysicalMaterial
sourcefn fragment_shader_source(
&self,
use_vertex_colors: bool,
lights: &[&dyn Light]
) -> String
fn fragment_shader_source(
&self,
use_vertex_colors: bool,
lights: &[&dyn Light]
) -> String
Returns the fragment shader source for this material. Should output the final fragment color.
sourcefn use_uniforms(
&self,
program: &Program,
camera: &Camera,
lights: &[&dyn Light]
) -> ThreeDResult<()>
fn use_uniforms(
&self,
program: &Program,
camera: &Camera,
lights: &[&dyn Light]
) -> ThreeDResult<()>
Sends the uniform data needed for this material to the fragment shader.
sourcefn render_states(&self) -> RenderStates
fn render_states(&self) -> RenderStates
Returns the render states needed to render with this material.
sourcefn is_transparent(&self) -> bool
fn is_transparent(&self) -> bool
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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into)Uses borrowed data to replace owned data, usually by cloning. Read more
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber to this type, returning a
WithDispatch wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber to this type, returning a
WithDispatch wrapper. Read more