SMPTE ST 2084 — Perceptual Quantizer (PQ)
ST 2084 (2014): Defines the PQ EOTF for HDR displays. Maps code values to absolute luminance from 0 to 10,000 cd/m². Used by HDR10, HDR10+, and Dolby Vision.
The PQ curve is derived from Barten's contrast sensitivity model, ensuring each code step is equally perceptible. A 10-bit PQ signal can encode the full luminance range without visible banding.
ITU-R BT.2100 — Hybrid Log-Gamma (HLG)
BT.2100 (2016): Defines both PQ and HLG transfer functions for HDR television. HLG is scene-referred and backward-compatible with SDR displays.
HLG uses a logarithmic upper half and square-root lower half, requiring no metadata for display adaptation. Widely used in broadcast HDR (BBC/NHK development).
ITU-R BT.2446 — HDR/SDR Conversion
BT.2446-A (2020): HDR-to-SDR conversion with integrated display light model. Uses a parametric curve derived from PQ-encoded luminance with perceptual uniformity preservation.
BT.2446-C (2021): Adaptive scene-content-dependent HDR-to-SDR mapping. Preserves relative luminance relationships with chroma preservation.
IEC 61966-2-1 — sRGB Standard
Defines the sRGB colour space for web and consumer displays. Piecewise gamma ~2.2 EOTF with linear segment near black. Rec.709 primaries, D65 white point.
Peak luminance nominally 80-100 cd/m². The de facto standard for all SDR web content and default monitor calibration target.
ITU-R BT.709 & BT.2020 — Primaries
BT.709: HD television standard. Same primaries as sRGB. Gamma 2.4 display EOTF. D65 white point. Covers ~35.9% of CIE 1931 xy.
BT.2020: UHD/4K/8K standard with ultra-wide gamut covering ~75.8% of CIE 1931 xy. Used with PQ or HLG for HDR content delivery.
Display P3: DCI-P3 primaries with D65 white. ~25% wider than sRGB. Standard for Apple displays and modern HDR monitors.
ACES — Academy Color Encoding System
SMPTE ST 2065-1: ACES defines a scene-referred linear colour encoding (ACEScg / AP1 primaries, D60 white) and a complete pipeline from camera capture through colour grading to display output.
The ACES RRT (Reference Rendering Transform) + ODT (Output Device Transform) provide a standardised tone mapping and gamut mapping path. The Narkowicz (2015) approximation is a commonly used real-time fit.
HDR10 & Dolby Vision
HDR10: Open standard using ST 2084 PQ, BT.2020 primaries, 10-bit, static metadata (MaxFALL, MaxCLL). No dynamic metadata.
Dolby Vision: Proprietary. 12-bit, dynamic metadata per scene/frame, RPU (Reference Processing Unit) for display mapping. Supports mastering up to 10,000 nits.
Operators
L_d = L / (1 + L)
Extended: L_d = L(1 + L/L_white²) / (1 + L)
Hable / Uncharted 2 (2010) — Filmic:
h(x) = ((x(Ax+CB)+DE) / (x(Ax+B)+DF)) - E/F
A=0.15, B=0.50, C=0.10, D=0.20, E=0.02, F=0.30
result = h(x * exposureBias) / h(11.2)
ACES Filmic (Narkowicz 2015):
f(x) = clamp01((x(2.51x+0.03)) / (x(2.43x+0.59)+0.14))
Uchimura / Gran Turismo (2017):
Parametric S-curve: toe (power), linear mid, shoulder (exponential)
P=1, a=1, m=0.22, l=0.4, c=1.33, b=0
BT.2446 Method A:
Y_sdr = (Y^(1/2.4) × (peak_SDR/peak_HDR))^2.4
BT.2446 Method C:
Y_sdr = reinhard(Y × ratio) / ratio
Log (soft):
f(v) = log2(1+v) / log2(11)
EOTF / OETF
V ≤ 0.04045: L = V/12.92
V > 0.04045: L = ((V+0.055)/1.055)^2.4
sRGB OETF (inverse):
L ≤ 0.0031308: V = 12.92 × L
L > 0.0031308: V = 1.055 × L^(1/2.4) - 0.055
PQ EOTF (ST 2084):
N^(1/m2) = Np; num = max(Np - c1, 0); den = c2 - c3·Np
L = (num/den)^(1/m1) × 10000 [nits]
m1=0.1593, m2=78.844, c1=0.8359, c2=18.852, c3=18.688
HLG OETF (BT.2100):
E ≤ 1/12: V = √(3E)
E > 1/12: V = a·log(12E-b) + c
a=0.17883277, b=0.28466892, c=0.55991073
Colour Spaces
|0.4124564 0.3575761 0.1804375|
|0.2126729 0.7151522 0.0721750|
|0.0193339 0.1191920 0.9503041|
Display P3 → XYZ (D65):
|0.4865709 0.2656677 0.1982173|
|0.2289746 0.6917385 0.0792869|
|0.0000000 0.0451134 1.0439444|
Rec.2020 → XYZ (D65):
|0.6369580 0.1446169 0.1688810|
|0.2627002 0.6779981 0.0593017|
|0.0000000 0.0280727 1.0609851|
ACEScg AP1 → XYZ (D60):
|0.6624542 0.1340042 0.1561877|
|0.2722287 0.6740818 0.0536895|
|-0.0055746 0.0040607 1.0103391|
CDL / Grading
out = (in × gain + lift) ^ (1/gamma)
Contrast (around mid-grey):
out = lerp(0.5, in, contrast)
Saturation:
lum = 0.2126R + 0.7152G + 0.0722B
out = lerp(lum, in, saturation)
Temperature / Tint (simplified):
R += temp × 0.1; B -= temp × 0.1; G += tint × 0.05
Vibrance (per-pixel adaptive saturation):
sat = 1 - min(R,G,B)/max(R,G,B)
amount = lerp(vibrance, 1, sat)
out = lerp(lum, in, amount)
Gamut Mapping
out = clamp(in, 0, 1) — simple truncation
Preserve Hue (scale):
mx = max(R,G,B); if mx > 1: RGB /= mx
Preserves hue and relative channel ratios
Soft Compress:
comp(v) = v > 1 ? 1 - e^(-(v-1)) + 1 : v < 0 ? -(1-e^v) : v
Smooth roll-off avoiding abrupt clipping
Limitations
- CPU Processing: This tool uses CPU-based pixel processing. For large images, performance scales linearly with pixel count.
- 8-bit Output: Final display is quantised to 8-bit sRGB. Internal pipeline operates in Float32 but display output is limited by canvas capabilities.
- Simplified ACES: The Narkowicz (2015) approximation differs from the full ACES CTL RRT+ODT. For production colour management, use official ACES transforms.
- No Spatial Processing: All operators are per-pixel (global). No local adaptation, bilateral filtering or spatial-aware tone mapping.
- Bradford CAT: White-point adaptation uses Bradford matrix (ICC-mandated). No CIECAM02/CAM16 degree-of-adaptation modelling.
- Display Dependent: Results depend on monitor calibration, gamma, colour profile, and ambient lighting.
Tone Mapping Operators
[2] Hable, J. (2010). Filmic Tonemapping Operators. GDC 2010 Uncharted 2 presentation.
[3] Narkowicz, K. (2015). ACES Filmic Tone Mapping Curve. Blog post on Krzysztof Narkowicz's site.
[4] Uchimura, H. (2017). HDR Theory and Practice: Practical HDR and Wide Color Techniques in Gran Turismo Sport. CEDEC 2017.
[5] Reinhard, E., Heidrich, W., Debevec, P., Pattanaik, S., Ward, G., Myszkowski, K. (2010). High Dynamic Range Imaging, 2nd Ed. Morgan Kaufmann.
Transfer Functions & HDR Standards
[7] ITU-R (2016). BT.2100 — Image parameter values for high dynamic range television. Recommendation BT.2100-2.
[8] ITU-R (2020). BT.2446 — Methods for conversion of high dynamic range content to standard dynamic range content and vice-versa.
[9] SMPTE (2013). ST 2065-1:2021 — Academy Color Encoding Specification (ACES).
[10] IEC (1999). IEC 61966-2-1 — Multimedia systems and equipment - Colour measurement and management - Part 2-1: Default RGB colour space - sRGB.
Colour Science & Gamut
[12] ITU-R (2002). BT.709-6 — Parameter values for HDTV standards for production and international programme exchange.
[13] Poynton, C. (2012). Digital Video and HDTV Algorithms and Interfaces, 2nd Ed. Morgan Kaufmann.
[14] CIE (2004). Colorimetry, 3rd Ed. CIE 15:2004.
[15] Lam, K.M. (1985). Metamerism and colour constancy. PhD thesis, University of Bradford.
About this tool
This tool implements 8+ tone mapping operators with full CDL grading, gamut mapping, histogram/waveform/vectorscope analysis, 1D/3D LUT export, operator comparison, and batch processing — entirely client-side (zero network). Not a substitute for calibrated measurement or official ACES/Dolby tools.
Compare all 8 tone mapping operators against the current source image. Shows per-operator processing time and mean output luminance side-by-side.
| Operator | Time (ms) | Mean Lum |
|---|---|---|
| Click "Compare all operators" to run analysis. | ||
Enter hex colours (one per line or comma-separated). Applies current tone mapping settings to each colour and shows source/mapped/OOG status.
The full tone mapping pipeline processes each pixel through these stages:
2. Convert to working space via XYZ + Bradford CAT
3. Apply exposure gain (2^EV)
4. Low-level operator (optional: add/mul/softclip/power/sigmoid/exp/log/tanh)
5. Tone mapping operator (Reinhard/Hable/ACES/BT.2446/Uchimura/Log/Custom)
6. CDL grading: contrast → saturation → lift-gamma-gain
7. Temperature + tint adjustment
8. Hue rotation + vibrance
9. Gamut map to target (clip/preserve-hue/soft-compress) via XYZ + Bradford
10. Output OETF (sRGB/gamma/PQ/HLG)
11. Dithering (±0.5 LSB)