Skip to main content

PostProcessParams

Struct PostProcessParams 

Source
#[repr(C)]
pub struct PostProcessParams { pub bloom_intensity: f32, pub bloom_threshold: f32, pub bloom_knee: f32, pub exposure: f32, pub vignette: f32, pub lut_strength: f32, pub hdr_output: f32, pub pq_output: f32, pub fxaa: f32, }
Expand description

Post-process tunables resolved from the PostProcessConfig asset (or its defaults), plus the two display-output flags the backend resolves from the display’s EDR capability at init. Pushed verbatim to the bloom prefilter and composite fragment shaders, so the layout must stay in sync with the PostUniforms struct in those shaders. 36 bytes.

Fields§

§bloom_intensity: f32

Additive bloom strength. 0 disables the bloom passes entirely.

§bloom_threshold: f32

Luminance threshold for the bloom prefilter.

§bloom_knee: f32

Quadratic soft-knee width below the threshold.

§exposure: f32

Linear exposure multiplier applied to HDR radiance before the bloom prefilter and the composite tonemap. Resolved from exposure_ev as 2^ev, so 1.0 is neutral.

§vignette: f32

Vignette strength in [0, 1]. 0 disables the corner darkening.

§lut_strength: f32

Colour-LUT blend in [0, 1]: mix(scene, graded, lut_strength) in the composite pass. Has no effect when no ColorLut is declared: the renderer then binds an identity LUT, so the grade is a no-op.

§hdr_output: f32

HDR display output flag. 0.0 = SDR path (ACES tonemap + gamma 2.2 + FXAA + ColorLut, output BGRA8Unorm). 1.0 = HDR EDR path (no tonemap or gamma; the exposed HDR scene is emitted into a RGBA16Float swapchain attached to a Display P3 EDR layer). FXAA + ColorLut are skipped on the HDR path because both depend on display-referred values. Stored as a float (not a uint) so the MSL shader can branch on > 0.5 without a cast.

§pq_output: f32

Output-encoding flag inside the HDR branch. 0.0 = scRGB-linear passthrough (the OS handles the encode for the panel). 1.0 = PQ-encode (SMPTE ST 2084) in-shader so the swapchain ships PQ-encoded values directly to an HDR10 panel. Only read when hdr_output > 0.5; always 0.0 on the SDR path.

§fxaa: f32

FXAA edge-filter flag on the SDR path. 1.0 runs the composite’s FXAA pass; 0.0 skips it (the Off anti-aliasing mode). Resolved from PostProcessConfig.aa_mode: on for Fxaa and Taa, off for Off. Always ignored on the HDR path, which never runs FXAA. Stored as a float so the shader branches on > 0.5 without a cast.

Implementations§

Source§

impl PostProcessParams

Source

pub fn set_tunables(&mut self, tunables: PostProcessTunables)

Overwrite the authored tunables, keeping hdr_output / pq_output. Those two are a property of the display the backend negotiated with, not an authored value, so a live push from the settings menu leaves them alone.

Trait Implementations§

Source§

impl Clone for PostProcessParams

Source§

fn clone(&self) -> PostProcessParams

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for PostProcessParams

Source§

impl Debug for PostProcessParams

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl NoUninit for PostProcessParams

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.