#[repr(C)]pub struct RtParams {
pub intensity: f32,
pub max_distance: f32,
pub tan_half_fov_y: f32,
pub aspect: f32,
pub prefilter_mip_count: f32,
pub _pad0: f32,
pub _pad1: f32,
pub _pad2: f32,
pub cam_pos: [f32; 4],
pub sun_dir: [f32; 4],
pub sun_color: [f32; 4],
pub inv_view: [[f32; 4]; 4],
}Expand description
Per-frame uniform for the hardware ray-traced reflection pass. Like
SsrParams it carries the clamped intensity / distance, the view-ray
scale used to rebuild a view-space position from the SSR pre-pass G-buffer,
and the IBL prefilter mip count for the miss fallback. Unlike SSR it traces
a world-space ray against an acceleration structure, so it also carries the
camera-to-world transform (to lift the view-space hit point + normal into
world space), the world camera position (the ray origin), and the sun
direction + colour the hit-shading uses. Pushed verbatim to the RT kernel,
so the layout must stay in sync with the RtParams struct there. 144 bytes,
16-byte aligned (every vec3 is padded to a float4).
Fields§
§intensity: f32Reflection blend strength in [0, 1]; scales the Fresnel-weighted mix.
max_distance: f32Maximum world-space distance a reflection ray travels before it misses.
tan_half_fov_y: f32tan(fov_y / 2): the vertical view-ray half-extent at unit depth.
aspect: f32Viewport aspect ratio (width / height).
prefilter_mip_count: f32IBL prefilter cubemap mip count. 0 when no EnvironmentMap is bound: the kernel then keeps the base shading for missed rays instead of a cube tap.
_pad0: f32Padding so the field layout matches the shader-side struct.
_pad1: f32Padding so the field layout matches the shader-side struct.
_pad2: f32Padding so the field layout matches the shader-side struct.
cam_pos: [f32; 4]World-space camera position (xyz); the reflection ray origin. w unused.
sun_dir: [f32; 4]World-space unit direction toward the sun (xyz); the hit-shading N·L
term uses it. w unused.
sun_color: [f32; 4]Sun radiance (xyz); the direct term at a reflected hit. w unused.
inv_view: [[f32; 4]; 4]Camera-to-world transform (column-major, the rigid inverse of the view matrix). Lifts the view-space reconstructed position + normal into the world space the acceleration structure is built in.
Trait Implementations§
impl Copy for RtParams
impl NoUninit for RtParams
Auto Trait Implementations§
impl Freeze for RtParams
impl RefUnwindSafe for RtParams
impl Send for RtParams
impl Sync for RtParams
impl Unpin for RtParams
impl UnsafeUnpin for RtParams
impl UnwindSafe for RtParams
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