#[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],
}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. 96 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.