vsf 0.3.4

Versatile Storage Format
Documentation
//! Rec.2020 colourspace transformation matrices
//!
//! **Auto-generated - do not edit directly!**
//! Generated by tools/src/bin/generate_constants.rs
//!
//! ITU-R BT.2020 (Rec.2020) is a wide colour gamut standard for UHDTV.
//! These matrices use monochromatic primaries (630nm, 532nm, 467nm) with D65 white point.

/// VSF RGB → Rec.2020 transformation matrix
///
/// Converts linear VSF RGB (703nm, 523nm, 462nm primaries, Illuminant E white)
/// to linear Rec.2020 RGB (630nm, 532nm, 467nm primaries, D65 white point).
///
/// Matrix layout (column-major):
/// - Indices 0-2: Red channel contributions from [red, green, blue]
/// - Indices 3-5: Green channel contributions from [red, green, blue]
/// - Indices 6-8: Blue channel contributions from [red, green, blue]
pub const VSF_RGB2REC2020: [f32; 9] = [
    1.205_768_5_f32,
    -0.065_750_4_f32,
    0.001_773_122_6_f32,
    -0.120_429_486_f32,
    1.061_958_3_f32,
    0.027_606_096_f32,
    0.022_573_812_f32,
    -0.030_623_026_f32,
    0.887_765_8_f32,
];

/// Rec.2020 → VSF RGB transformation matrix
///
/// Converts linear Rec.2020 RGB to linear VSF RGB.
/// Inverse of VSF_RGB2REC2020.
pub const REC2020_2VSF_RGB: [f32; 9] = [
    0.834_559_2_f32,
    0.051_576_834_f32,
    -0.003_270_694_5_f32,
    0.095_108_06_f32,
    0.946_690_8_f32,
    -0.029_628_394_f32,
    -0.017_940_19_f32,
    0.031_344_134_f32,
    1.125_484_3_f32,
];

#[cfg(feature = "spirix")]
pub use s44_consts::*;

#[cfg(feature = "spirix")]
mod s44_consts {
    use spirix::{ScalarF4E4 as S44, sf};

    pub const VSF_RGB2REC2020_S44: [S44; 9] = [
        sf!(1.205_768_5_f32), sf!(-0.065_750_4_f32), sf!(0.001_773_122_6_f32),
        sf!(-0.120_429_486_f32), sf!(1.061_958_3_f32), sf!(0.027_606_096_f32),
        sf!(0.022_573_812_f32), sf!(-0.030_623_026_f32), sf!(0.887_765_8_f32),
    ];

    pub const REC2020_2VSF_RGB_S44: [S44; 9] = [
        sf!(0.834_559_2_f32), sf!(0.051_576_834_f32), sf!(-0.003_270_694_5_f32),
        sf!(0.095_108_06_f32), sf!(0.946_690_8_f32), sf!(-0.029_628_394_f32),
        sf!(-0.017_940_19_f32), sf!(0.031_344_134_f32), sf!(1.125_484_3_f32),
    ];
}