use bevy_asset::{self, Handle}; use bevy_render::{color::Color, renderer::RenderResources, shader::ShaderDefs, texture::Texture}; use bevy_type_registry::TypeUuid; /// A material with "standard" properties used in PBR lighting #[derive(Debug, RenderResources, ShaderDefs, TypeUuid)] #[uuid = "dace545e-4bc6-4595-a79d-c224fc694975"] pub struct StandardMaterial { pub albedo: Color, #[shader_def] pub albedo_texture: Option>, #[render_resources(ignore)] #[shader_def] pub shaded: bool, } impl Default for StandardMaterial { fn default() -> Self { StandardMaterial { albedo: Color::rgb(1.0, 1.0, 1.0), albedo_texture: None, shaded: true, } } } impl From for StandardMaterial { fn from(color: Color) -> Self { StandardMaterial { albedo: color, ..Default::default() } } } impl From> for StandardMaterial { fn from(texture: Handle) -> Self { StandardMaterial { albedo_texture: Some(texture), ..Default::default() } } }