pub struct SpotLight {
pub position: [f32; 3],
pub direction: [f32; 3],
pub color: [f32; 3],
pub intensity: f32,
pub radius: f32,
pub inner_angle_deg: f32,
pub outer_angle_deg: f32,
pub casts_shadow: bool,
}Expand description
A spot (cone) light — a PointLight with a direction and a soft
angular cutoff, so it lights only a cone. World space. Internally folded
into the point-light path (a point light is the 180°-cone degenerate), so
spots share the point-light count + shadow-caster budgets.
Fields§
§position: [f32; 3]World-space position (voxel units).
direction: [f32; 3]Cone axis — the direction the light shines along (the way the light travels). Need not be normalized; the backend normalizes.
color: [f32; 3]Linear RGB, 0..1.
intensity: f32Scalar brightness multiplier on color.
radius: f32Hard cutoff distance in world units; past it the light is zero.
inner_angle_deg: f32Inner half-angle in degrees: within it the cone is at full
brightness. Clamped to 0..=outer_angle_deg.
outer_angle_deg: f32Outer half-angle in degrees: past it the cone is zero; between the
two it soft-falls off (smoothstep). outer == inner ⇒ a hard edge;
>= 180 ⇒ omnidirectional (a plain point light). Clamped to 0..=180.
casts_shadow: boolWhether this spot casts a stylized hard shadow (shares the shadow-caster cap with the sun + point lights; excess demoted with a warning, never truncated).
Trait Implementations§
impl Copy for SpotLight
impl StructuralPartialEq for SpotLight
Auto Trait Implementations§
impl Freeze for SpotLight
impl RefUnwindSafe for SpotLight
impl Send for SpotLight
impl Sync for SpotLight
impl Unpin for SpotLight
impl UnsafeUnpin for SpotLight
impl UnwindSafe for SpotLight
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more