Struct SpotLight

Source
pub struct SpotLight {
    pub intensity: f32,
    pub color: Srgba,
    pub position: Vec3,
    pub direction: Vec3,
    pub cutoff: Radians,
    pub attenuation: Attenuation,
    /* private fields */
}
Expand description

A light which shines from the given position and 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.

§position: Vec3

The position of the light.

§direction: Vec3

The direction the light shines.

§cutoff: Radians

The cutoff angle for the light.

§attenuation: Attenuation

The Attenuation of the light.

Implementations§

Source§

impl SpotLight

Source

pub fn new( context: &Context, intensity: f32, color: Srgba, position: Vec3, direction: Vec3, cutoff: impl Into<Radians>, attenuation: Attenuation, ) -> SpotLight

Constructs a new spot light.

Source

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 SpotLight::generate_shadow_map.

Source

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 spot 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.

Source

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 SpotLight

Source§

fn shader_source(&self, i: u32) -> String

The fragment shader source for calculating this lights contribution to the color in a fragment. It should contain a function with this signature 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.
Source§

fn use_uniforms(&self, program: &Program, i: u32)

Should bind the uniforms that is needed for calculating this lights contribution to the color in Light::shader_source.
Source§

fn id(&self) -> LightId

Returns a unique ID for each variation of the shader source returned from Light::shader_source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> AutoreleaseSafe for T
where T: ?Sized,