pub enum ToneMapOperator {
Clamp,
ReinhardGlobal,
ReinhardLocal,
AcesFilmic,
Hable,
PqToSdr,
}Expand description
Selection of tone-mapping operator applied by HdrToneMapper.
Variants§
Clamp
Hard clamp to [0, 1]. No artistic rolloff; only useful as a reference.
ReinhardGlobal
Reinhard (2002) global operator applied per channel independently.
Formula: y = x / (1 + x) — maps [0, ∞) → [0, 1).
ReinhardLocal
Luminance-domain Reinhard. The tone curve is applied to the luminance channel only; RGB ratios are then restored, preserving hue and saturation.
AcesFilmic
ACES approximation by Narkowicz (2015).
y = x(2.51x + 0.03) / (x(2.43x + 0.59) + 0.14)
Hable
Hable / Uncharted 2 filmic tone curve (John Hable, 2010).
PqToSdr
Full Perceptual Quantizer (ST.2084) → SDR pipeline.
Converts PQ-encoded signal through linear-light space, applies a luminance-domain Reinhard with configurable peak / white point, then applies BT.709 OETF. Suitable for HDR10 → SDR conversion.
Trait Implementations§
Source§impl Clone for ToneMapOperator
impl Clone for ToneMapOperator
Source§fn clone(&self) -> ToneMapOperator
fn clone(&self) -> ToneMapOperator
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ToneMapOperator
impl Debug for ToneMapOperator
Source§impl Default for ToneMapOperator
impl Default for ToneMapOperator
Source§fn default() -> ToneMapOperator
fn default() -> ToneMapOperator
Source§impl PartialEq for ToneMapOperator
impl PartialEq for ToneMapOperator
impl Copy for ToneMapOperator
impl Eq for ToneMapOperator
impl StructuralPartialEq for ToneMapOperator
Auto Trait Implementations§
impl Freeze for ToneMapOperator
impl RefUnwindSafe for ToneMapOperator
impl Send for ToneMapOperator
impl Sync for ToneMapOperator
impl Unpin for ToneMapOperator
impl UnsafeUnpin for ToneMapOperator
impl UnwindSafe for ToneMapOperator
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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