pub struct EmissiveMaterial {
pub emissive_color: LinearRgba,
pub intensity: f32,
pub alpha_mode: AlphaMode,
}Expand description
A material that emits light without being affected by scene lighting.
Emissive materials are perfect for objects that should glow or appear self-illuminated, such as neon signs, magical effects, UI elements, LED displays, or light sources. They render at full brightness regardless of lighting conditions.
§HDR Support
The intensity parameter allows values greater than 1.0, enabling High Dynamic Range
(HDR) emissive effects. This is particularly useful for bloom post-processing effects
where bright emissive surfaces can “bleed” light into surrounding areas.
§Examples
use khora_core::asset::EmissiveMaterial;
use khora_core::math::LinearRgba;
// Create a bright red glowing sign
let neon_sign = EmissiveMaterial {
emissive_color: LinearRgba::new(1.0, 0.0, 0.0, 1.0),
intensity: 2.0, // HDR intensity for bloom
..Default::default()
};
// Create a subtle blue glow
let subtle_glow = EmissiveMaterial {
emissive_color: LinearRgba::new(0.3, 0.5, 1.0, 1.0),
intensity: 0.5,
..Default::default()
};Fields§
§emissive_color: LinearRgbaThe emissive color of the material.
This color is directly output to the framebuffer without any lighting calculations. The RGB values represent the color of the emitted light.
intensity: f32Optional texture for emissive color.
If present, the texture’s RGB values are multiplied with emissive_color.
The alpha channel can be used for transparency when combined with appropriate alpha_mode.
Future work: Texture asset system integration pending. Intensity multiplier for the emissive color.
Values greater than 1.0 enable HDR effects and are particularly useful for bloom post-processing. A value of 1.0 produces standard emissive output.
Recommended ranges:
- 0.0-1.0: Subtle emission
- 1.0-3.0: Strong emission with bloom
- 3.0+: Very bright, suitable for light sources
alpha_mode: AlphaModeThe alpha blending mode for this material.
Determines how transparency is handled. See AlphaMode for details.
Trait Implementations§
Source§impl<'__de, __Context> BorrowDecode<'__de, __Context> for EmissiveMaterial
impl<'__de, __Context> BorrowDecode<'__de, __Context> for EmissiveMaterial
Source§fn borrow_decode<__D: BorrowDecoder<'__de, Context = __Context>>(
decoder: &mut __D,
) -> Result<Self, DecodeError>
fn borrow_decode<__D: BorrowDecoder<'__de, Context = __Context>>( decoder: &mut __D, ) -> Result<Self, DecodeError>
Source§impl Clone for EmissiveMaterial
impl Clone for EmissiveMaterial
Source§fn clone(&self) -> EmissiveMaterial
fn clone(&self) -> EmissiveMaterial
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for EmissiveMaterial
impl Debug for EmissiveMaterial
Source§impl<__Context> Decode<__Context> for EmissiveMaterial
impl<__Context> Decode<__Context> for EmissiveMaterial
Source§impl Default for EmissiveMaterial
impl Default for EmissiveMaterial
Source§impl<'de> Deserialize<'de> for EmissiveMaterial
impl<'de> Deserialize<'de> for EmissiveMaterial
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Encode for EmissiveMaterial
impl Encode for EmissiveMaterial
Source§impl Material for EmissiveMaterial
impl Material for EmissiveMaterial
Source§fn base_color(&self) -> LinearRgba
fn base_color(&self) -> LinearRgba
Source§fn emissive_color(&self) -> LinearRgba
fn emissive_color(&self) -> LinearRgba
Source§fn specular_power(&self) -> f32
fn specular_power(&self) -> f32
Source§fn ambient_color(&self) -> LinearRgba
fn ambient_color(&self) -> LinearRgba
Source§fn metallic(&self) -> f32
fn metallic(&self) -> f32
Source§fn roughness(&self) -> f32
fn roughness(&self) -> f32
Source§fn base_color_texture(&self) -> Option<AssetUUID>
fn base_color_texture(&self) -> Option<AssetUUID>
None (untextured).Source§fn metallic_roughness_texture(&self) -> Option<AssetUUID>
fn metallic_roughness_texture(&self) -> Option<AssetUUID>
None.Source§fn normal_map(&self) -> Option<AssetUUID>
fn normal_map(&self) -> Option<AssetUUID>
None.Source§fn emissive_texture(&self) -> Option<AssetUUID>
fn emissive_texture(&self) -> Option<AssetUUID>
None.Source§fn occlusion_map(&self) -> Option<AssetUUID>
fn occlusion_map(&self) -> Option<AssetUUID>
None.Source§fn alpha_mode(&self) -> AlphaMode
fn alpha_mode(&self) -> AlphaMode
AlphaMode::Mask
the contained value is the alpha-cutoff threshold: fragments below it are
discarded. Default implementation is AlphaMode::Opaque.Source§fn double_sided(&self) -> bool
fn double_sided(&self) -> bool
false (the default) culls back faces for correctly-wound meshes.