pub struct SpotLightCalculation {Show 13 fields
pub light_position: Vec3,
pub frag_position: Vec3,
pub frag_to_light: Vec3,
pub frag_to_light_distance: f32,
pub light_direction: Vec3,
pub cos_inner_cutoff: f32,
pub cos_outer_cutoff: f32,
pub fragment_is_inside_inner_cone: bool,
pub fragment_is_inside_outer_cone: bool,
pub epsilon: f32,
pub cos_theta: f32,
pub contribution_unclamped: f32,
pub contribution: f32,
}
Expand description
Contains values needed to determine the outgoing radiance of a fragment.
For more info, see the Spotlight section of the learnopengl article.
Fields§
§light_position: Vec3
Position of the light in world space
frag_position: Vec3
Position of the fragment in world space
frag_to_light: Vec3
Unit vector (LightDir) pointing from the fragment to the light
frag_to_light_distance: f32
Distance from the fragment to the light
light_direction: Vec3
Unit vector (SpotDir) direction that the light is pointing in
cos_inner_cutoff: f32
The cosine of the cutoff angle (Phi ϕ) that specifies the spotlight’s radius.
Everything inside this angle is lit by the spotlight.
cos_outer_cutoff: f32
The cosine of the cutoff angle (Gamma γ) that specifies the spotlight’s outer radius.
Everything outside this angle is not lit by the spotlight.
Fragments between inner_cutoff
and outer_cutoff
have an intensity
between 1.0
and 0.0
.
fragment_is_inside_inner_cone: bool
Whether the fragment is inside the inner_cutoff
cone.
fragment_is_inside_outer_cone: bool
Whether the fragment is inside the outer_cutoff
cone.
epsilon: f32
outer_cutoff
- inner_cutoff
cos_theta: f32
Cosine of the angle (Theta θ) between frag_to_light
(LightDir) vector and the
light_direction
(SpotDir) vector.
θ should be smaller than outer_cutoff
(Gamma γ) to be
inside the spotlight, but since these are all cosines of angles, we actually
compare using >
.
contribution_unclamped: f32
§contribution: f32
The intensity level between 0.0
and 1.0
that should be used to determine
outgoing radiance.
Implementations§
Source§impl SpotLightCalculation
impl SpotLightCalculation
Sourcepub fn new(
spot_light_descriptor: SpotLightDescriptor,
node_transform: Mat4,
fragment_world_position: Vec3,
) -> Self
pub fn new( spot_light_descriptor: SpotLightDescriptor, node_transform: Mat4, fragment_world_position: Vec3, ) -> Self
Calculate the values required to determine outgoing radiance of a spot light.
Trait Implementations§
Source§impl Clone for SpotLightCalculation
impl Clone for SpotLightCalculation
Source§fn clone(&self) -> SpotLightCalculation
fn clone(&self) -> SpotLightCalculation
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for SpotLightCalculation
impl Debug for SpotLightCalculation
Source§impl Default for SpotLightCalculation
impl Default for SpotLightCalculation
Source§fn default() -> SpotLightCalculation
fn default() -> SpotLightCalculation
impl Copy for SpotLightCalculation
Auto Trait Implementations§
impl Freeze for SpotLightCalculation
impl RefUnwindSafe for SpotLightCalculation
impl Send for SpotLightCalculation
impl Sync for SpotLightCalculation
impl Unpin for SpotLightCalculation
impl UnwindSafe for SpotLightCalculation
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
§Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling [Attribute
] value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
§Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi
[Quirk
] value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the [Condition
] value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian()
.