Skip to main content

Module default

Module default 

Source
Expand description

Recommended API with optimal implementations for each use case.

Uses a rational polynomial for single f32 values (≤14 ULP, perfectly monotonic), LUT for integer types, and SIMD-dispatched batch processing for slices. Recommended API for sRGB ↔ linear conversion.

This module re-exports the optimal implementation for each use case:

  • Single f32 values: Rational polynomial (~14 ULP max, perfectly monotonic — no powf)
  • Single u8/u16 values: LUT lookup (zero math)
  • Slices: SIMD-accelerated with runtime CPU dispatch
  • Custom gamma: Pure power function (f32, slices)

For exact powf() conversions with C0-continuous constants, see crate::precise.

§Quick Start

use linear_srgb::default::{srgb_to_linear, linear_to_srgb};

let linear = srgb_to_linear(0.5);
let srgb = linear_to_srgb(linear);

§Batch Processing

use linear_srgb::default::{srgb_to_linear_slice, linear_to_srgb_slice};

let mut values = vec![0.5f32; 10000];
srgb_to_linear_slice(&mut values);  // SIMD-accelerated
linear_to_srgb_slice(&mut values);

Re-exports§

pub use crate::tf::bt709_to_linear;
pub use crate::tf::hlg_to_linear;
pub use crate::tf::linear_to_bt709;
pub use crate::tf::linear_to_hlg;
pub use crate::tf::linear_to_pq;
pub use crate::tf::pq_to_linear;
pub use crate::lut::SrgbConverter;

Functions§

gamma_to_linear
Convert gamma-encoded value to linear using a custom gamma exponent (f32).
gamma_to_linear_slice
Convert gamma-encoded f32 values to linear in-place using a custom gamma.
linear_to_gamma
Convert linear value to gamma-encoded using a custom gamma exponent (f32).
linear_to_gamma_slice
Convert linear f32 values to gamma-encoded in-place using a custom gamma.
linear_to_srgb
Convert linear light value to sRGB gamma-encoded using a rational polynomial (f32).
linear_to_srgb_rgba_slice
Convert linear RGBA f32 values to sRGB in-place, preserving alpha.
linear_to_srgb_slice
Convert linear f32 values to sRGB in-place.
linear_to_srgb_u8
Convert linear to 8-bit sRGB using const LUT.
linear_to_srgb_u8_rgba_slice
Convert linear RGBA f32 values to sRGB u8, preserving alpha.
linear_to_srgb_u8_slice
Convert linear f32 values to sRGB u8.
linear_to_srgb_u16
Convert linear f32 to 16-bit sRGB using a 65537-entry const LUT.
linear_to_srgb_u16_rgba_slice
Convert linear RGBA f32 values to sRGB u16, preserving alpha.
linear_to_srgb_u16_slice
Convert linear f32 values to sRGB u16 using a 65537-entry const LUT.
srgb_to_linear
Convert sRGB gamma-encoded value to linear light using a rational polynomial (f32).
srgb_to_linear_rgba_slice
Convert sRGB RGBA f32 values to linear in-place, preserving alpha.
srgb_to_linear_slice
Convert sRGB f32 values to linear in-place.
srgb_u8_to_linear
Convert a single sRGB u8 value to linear f32 using LUT lookup.
srgb_u8_to_linear_rgba_slice
Convert sRGB RGBA u8 values to linear f32, preserving alpha.
srgb_u8_to_linear_slice
Convert sRGB u8 values to linear f32.
srgb_u16_to_linear
Convert 16-bit sRGB to linear f32 using a 65536-entry const LUT.
srgb_u16_to_linear_rgba_slice
Convert sRGB RGBA u16 values to linear f32, preserving alpha.
srgb_u16_to_linear_slice
Convert sRGB u16 values to linear f32 using a 65536-entry const LUT.