#[repr(C)]pub struct SsrParams {
pub intensity: f32,
pub max_distance: f32,
pub tan_half_fov_y: f32,
pub aspect: f32,
pub stride: f32,
pub thickness: f32,
pub prefilter_mip_count: f32,
pub _pad: f32,
pub inv_view: [[f32; 4]; 4],
pub sky_rot: [[f32; 4]; 3],
}Expand description
Per-frame uniform for the screen-space reflection (SSR) ray-march. Carries
the clamped authored tunables, the view-ray scale the resolve pass uses to
project a view-space ray point back to a screen UV, and the data the resolve
needs to sample the IBL prefilter cubemap as a fallback. Pushed verbatim to
the SSR resolve fragment shader, so the layout must stay in sync with the
SsrParams struct there. 144 bytes.
Fields§
§intensity: f32Reflection blend strength in [0, 1]; scales the Fresnel-weighted mix.
max_distance: f32Maximum world-space distance a reflection ray marches before giving up.
tan_half_fov_y: f32tan(fov_y / 2): the vertical view-ray half-extent at unit depth.
aspect: f32Viewport aspect ratio (width / height).
stride: f32World-space length of one ray-march step.
thickness: f32View-space depth tolerance for accepting a ray/scene-depth intersection.
prefilter_mip_count: f32IBL prefilter cubemap mip count. 0 when no EnvironmentMap is bound: the resolve then skips the cube fallback and keeps the base shading instead.
_pad: f32Padding so the field layout matches the shader-side struct.
inv_view: [[f32; 4]; 4]Camera-to-world transform (column-major, the rigid inverse of the view
matrix): the orthonormal 3x3 turns a view-space reflection ray into the
world-space direction the cubemap is sampled with, and the translation
column (the world camera position) lets the resolve rebuild the world-space
surface position a reflection probe box-projects against. Backends that only
sample the cube use the 3x3 (the r_world direction) and ignore translation.
sky_rot: [[f32; 4]; 3]Rows of the rotation taking a world-space direction into the environment
cubemap’s baked frame, mirroring ViewUniforms.sky_rot so the resolve’s
sky fallback turns with the main pass. One float4 per row; w unused.
Trait Implementations§
impl Copy for SsrParams
impl NoUninit for SsrParams
Auto Trait Implementations§
impl Freeze for SsrParams
impl RefUnwindSafe for SsrParams
impl Send for SsrParams
impl Sync for SsrParams
impl Unpin for SsrParams
impl UnsafeUnpin for SsrParams
impl UnwindSafe for SsrParams
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,
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