pub struct SkyboxData { /* private fields */ }Expand description
The sky one value of a game’s vocabulary is drawn and lit from: one of two kinds, an image of the whole sky or a gradient between three colors, the fraction of its own light it lands on a surface, and the ground color under its horizon where a game states one.
Implementations§
Source§impl SkyboxData
impl SkyboxData
Sourcepub fn equirect(image: TextureData) -> Self
pub fn equirect(image: TextureData) -> Self
The sky image holds: the whole way around across it, and zenith to
nadir down it, so it is twice as wide as it is tall.
Required if you want a sky an image holds. An image not twice as wide as it is tall stops startup naming the skybox.
Sourcepub fn gradient(zenith: Color, horizon: Color, nadir: Color) -> Self
pub fn gradient(zenith: Color, horizon: Color, nadir: Color) -> Self
The sky zenith straight up, horizon level, and nadir straight
down, each texel between them the share its own elevation takes.
Required if you want a sky with no image at all: one color in all three lands that color on every surface, from every direction.
Examples found in repository?
More examples
Sourcepub fn lit_by(self, fraction: f32) -> Self
pub fn lit_by(self, fraction: f32) -> Self
The same sky landing fraction of its own light on every surface,
and a surface that reflects it reflecting that share. The sky the
frame draws is unchanged.
Required if you want the frame’s own lights to show under a bright
sky. 1.0 where never called, held at zero and above; past 1.0
lands more light than the sky holds.
Examples found in repository?
More examples
Sourcepub fn with_ground(self, color: Color) -> Self
pub fn with_ground(self, color: Color) -> Self
The same sky reading as color in every direction under the horizon,
blended over the three degrees below it: what a metal reflects there
and what the sky lands on a surface facing down take that color, and
so does the sky the frame draws where nothing covers it.
Required if you want a metal to reflect the floor it stands on rather than the sky’s own underside. No ground where never called.
Examples found in repository?
More examples
589 fn build(&self, assets: &Assets) -> SkyboxData {
590 let sky = match self {
591 Self::Dawn => SkyboxData::gradient(
592 Color::rgb(0.55, 0.55, 0.75),
593 Color::rgb(0.95, 0.6, 0.35),
594 Color::rgb(0.12, 0.08, 0.06),
595 ),
596 Self::Noon => SkyboxData::gradient(
597 Color::rgb(0.2, 0.45, 0.85),
598 Color::rgb(0.75, 0.82, 0.9),
599 Color::rgb(0.3, 0.3, 0.28),
600 ),
601 Self::Dusk => SkyboxData::gradient(
602 Color::rgb(0.18, 0.1, 0.3),
603 Color::rgb(0.85, 0.35, 0.2),
604 Color::rgb(0.03, 0.02, 0.03),
605 ),
606 Self::Night => SkyboxData::gradient(
607 Color::rgb(0.02, 0.02, 0.06),
608 Color::rgb(0.05, 0.05, 0.1),
609 Color::rgb(0.0, 0.0, 0.0),
610 ),
611 Self::Clear => assets.skybox("sky-clear"),
612 Self::Classic => assets.skybox("sky-classic"),
613 Self::ImageDawn => assets.skybox("sky-dawn"),
614 Self::Sinister => assets.skybox("sky-sinister"),
615 Self::LightBlueStars => assets.skybox("sky-stars-lightblue"),
616 Self::BlueStars => assets.skybox("sky-stars-blue"),
617 Self::Default => SkyboxData::gradient(DEFAULT_SKY, DEFAULT_SKY, DEFAULT_SKY),
618 };
619 let sky = match self.ground() {
620 Some(ground) => sky.with_ground(ground),
621 None => sky,
622 };
623
624 sky.lit_by(self.light())
625 }Trait Implementations§
Source§impl Clone for SkyboxData
impl Clone for SkyboxData
Source§impl Debug for SkyboxData
impl Debug for SkyboxData
Auto Trait Implementations§
impl Freeze for SkyboxData
impl RefUnwindSafe for SkyboxData
impl Send for SkyboxData
impl Sync for SkyboxData
impl Unpin for SkyboxData
impl UnsafeUnpin for SkyboxData
impl UnwindSafe for SkyboxData
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
impl<S, T> Duplex<S> for Twhere
T: FromSample<S> + ToSample<S>,
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
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