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.