Struct three_d::renderer::light::DirectionalLight
source · pub struct DirectionalLight {
pub intensity: f32,
pub color: Srgba,
pub direction: Vec3,
/* private fields */
}
Expand description
A light which shines in the given direction. The light will cast shadows if you generate a shadow map.
Fields§
§intensity: f32
The intensity of the light. This allows for higher intensity than 1 which can be used to simulate high intensity light sources like the sun.
color: Srgba
The base color of the light.
direction: Vec3
The direction the light shines.
Implementations§
source§impl DirectionalLight
impl DirectionalLight
sourcepub fn new(
context: &Context,
intensity: f32,
color: Srgba,
direction: &Vec3
) -> DirectionalLight
pub fn new( context: &Context, intensity: f32, color: Srgba, direction: &Vec3 ) -> DirectionalLight
Creates a new directional light.
sourcepub fn clear_shadow_map(&mut self)
pub fn clear_shadow_map(&mut self)
Clear the shadow map, effectively disable the shadow. Only necessary if you want to disable the shadow, if you want to update the shadow, just use DirectionalLight::generate_shadow_map.
sourcepub fn generate_shadow_map(
&mut self,
texture_size: u32,
geometries: impl IntoIterator<Item = impl Geometry> + Clone
)
pub fn generate_shadow_map( &mut self, texture_size: u32, geometries: impl IntoIterator<Item = impl Geometry> + Clone )
Generate a shadow map which is used to simulate shadows from the directional light onto the geometries given as input. It is recomended that the texture size is power of 2. If the shadows are too low resolution (the edges between shadow and non-shadow are pixelated) try to increase the texture size and/or split the scene by creating another light source with same parameters and let the two light sources shines on different parts of the scene.
sourcepub fn shadow_map(&self) -> Option<&DepthTexture2D>
pub fn shadow_map(&self) -> Option<&DepthTexture2D>
Returns a reference to the shadow map if it has been generated.
Trait Implementations§
source§impl Light for DirectionalLight
impl Light for DirectionalLight
source§fn shader_source(&self, i: u32) -> String
fn shader_source(&self, i: u32) -> String
vec3 calculate_lighting{}(vec3 surface_color, vec3 position, vec3 normal, vec3 view_direction, float metallic, float roughness, float occlusion)
Where {}
is replaced with the number i given as input.
This function should return the color contribution for this light on the surface with the given surface parameters.