rome / writing / sdr-vs-hdr
2026.06.28
v1.1 · draft
Imaging & Display

Absolute Light: From Ratios to Nits

Why HDR so often looks wrong — and what the file is really telling your screen. Drag to compare.

AuthorRome Thorstenson
FiledJune 2026
Reading13 min
StatusDraft
The Manhattan Bridge at night — lamp starbursts and lit tower windows blaze as bright points against a dark river, the brightest sources sitting far above diffuse white.
Fig 0 The Manhattan Bridge at night. Every lamp starburst and lit window is a light source encoded well above SDR's 203-nit ceiling — the gap this piece is about. On an HDR display the bright points emit at full range; on SDR they are tone-mapped down to fit.

Turn on HDR and there's a fair chance the picture gets worse — washed-out whites, crushed shadows, faces that look mildly sunburned. The feature ships on nearly every phone, TV, and laptop sold since the mid-2010s, and most of those screens cannot actually display it correctly; they accept the signal and improvise. The reason traces to a single design decision. For fifty years an image file never said how bright it should be. It said how bright relative to white, and left "white" up to the hardware. HDR's real innovation is not more brightness — it is that the file finally carries an absolute answer: the luminance of every pixel, in physical units, meant to be identical on every display that obeys the standard. This piece is about that shift from relative to absolute light, and about what happens in the gap between what the file promises and what the glass in front of you can deliver. Interactive demos abound.

§ 01 Reference White

The Reference White Problem

SDR encodes light relatively. First, a unit. Luminance is the amount of light a surface sends toward your eye, measured in candelas per square metre (cd/m²), informally called nits. For scale: a phone screen indoors sits around 100–200 nits; a sunlit white wall, a few thousand; fresh snow in direct sun, north of 10,000 — and the sun's own disc is roughly 1.6 billion. An sRGB value of 1.0 (code 255) names none of these numbers. It means only maximum emission from this display. A cinema projector at 48 nits and a laptop at 500 nits read the same code and emit wildly different amounts of light, both technically correct. The gamma curve mapping code to light just stretches to fill whatever range the hardware has. This was deliberate: 1970s engineers building CRTs (cathode-ray tubes, the bulky glass picture tubes that predated flat panels) couldn't know the peak brightness of every screen their signal would reach, so they standardized a dimensionless shape and left absolute brightness to the hardware.

The cost surfaces the moment you put SDR and HDR content on the same display — an old photo beside a new one, a subtitle over an HDR film, a web page open on an HDR laptop. The display must decide how bright SDR's "white" should be, and nothing in the SDR signal tells it. Every standard gives a different answer: SMPTE RP 431-2 puts a reference cinema screen at 48 nits, ITU-R BT.1886 puts a calibrated SDR monitor at 100 nits, an HDR mastering display might run to 1,000. The number lives in the calibration, never in the file.

Where 203 nits comes from

The fix starts with a distinction HDR can make and SDR never could: reference white is not peak white. Reference white — also called diffuse white — is the brightness of an ordinary white object under ordinary light: a sheet of paper, a painted wall, a white shirt. It is the anchor your eye reads as "this is what white looks like." Peak white is something else: the glint of sun on chrome, a bare bulb filament, a specular highlight on water. In SDR there was no room for the difference. Code 255 was both your sheet of paper and your sun, and anything brighter than "white" simply clipped to white. HDR's central move is to seat reference white well below the ceiling and reserve the headroom above it for the highlights that truly are brighter than paper.

So where should reference white sit, in nits? SDR mastering — set in an era of dim CRTs in dim rooms — anchored it near 100 nits. But on an HDR display, often viewed in a brighter room and surrounded by highlights running to thousands of nits, a 100-nit white looks muddy and grey. ITU-R BT.2408 studied this side-by-side viewing and settled on 203 cd/m² as the reference white for SDR content shown inside a PQ or HLG HDR environment.1 At 203 nits, an SDR white next to HDR content reads as the same white — neither dim nor blown out. The oddly specific figure isn't a rounded 200: it's the level BT.2408 found matched SDR white perceptually, and it encodes to a signal value of E′ ≈ 0.58 in PQ — notation that §2 makes precise (for now, read E′ as "a specific code value" and PQ as "the HDR encoding"). We'll read it straight off the curve there.

One wrinkle keeps this calibration empirical rather than arithmetic: the eye does not judge brightness by luminance alone. A saturated color looks brighter than a neutral grey emitting the exact same number of nits — the Helmholtz-Kohlrausch effect. Match two whites with a light meter and they can still look unequal to a person, which is why "how bright should white be" was settled by viewers under controlled conditions, not by a formula. In every comparison below, the SDR variant caps each pixel at this 203-nit reference white; the HDR variant keeps the same tonal foundation but lifts the brightest regions into the headroom above it, up to 4,000 nits.

Luminance ladder on a logarithmic nits axis: reference-white standards cluster near 50 to 1000 nits while real scene luminances span to roughly one billion nits. SCENE LUMINANCE REFERENCE-WHITE STANDARD 110100 1K10K100K 1M10M100M 1B10B NITS · CD/M² (LOG SCALE) 100–200 PHONE SCREEN 3,000 SUNLIT WALL 10–15K FRESH SNOW 1.6×10⁹ SUN'S DISC 48 · DCI CINEMA · RP 431-2 100 · SDR MONITOR · BT.1886 203 · BT.2408 REFERENCE WHITE 1,000 · HDR MASTERING DISPLAY
Fig 1.1The reference-white gap. Every standard that fixes what "white" means — 48 nits in a cinema, 100 on an SDR monitor, 203 in BT.2408, 1,000 on an HDR mastering display — sits inside a single decade near 50–1,000 nits. Real scenes don't: a sunlit wall is ~3,000, fresh snow 10–15,000, the sun's disc about 1.6 billion. HDR exists to address the span between the cluster and the world.
§ 02 PQ Transfer

The PQ Transfer Function

Start from the mechanism. An image file is a grid of numbers — code values. A display is a grid of elements that emit light. Between them sits a transfer function: the rule that turns each stored number into a quantity of light (the EOTF — electro-optical transfer function — applied at the display) and, on the camera side, the inverse rule that turned light into numbers in the first place (the OETF, opto-electronic transfer function). That rule is never a straight line, and the reason is the eye.

Human brightness perception is roughly multiplicative, not additive. In a dark scene a tiny absolute change in light is glaring; in a bright scene the same absolute change is invisible. We notice ratios, not differences — and we notice a lot of them: the eye resolves on the order of 14 stops of contrast at once, far more with time to adapt. (A stop is the photographer's unit — one doubling of light; 14 stops is a range of 214, about 16,000:1.) If you stored light linearly across a fixed number of bits, you would lavish codes on the bright end, where the eye cannot tell neighboring steps apart, and starve the dark end, where it can — producing visible banding in shadows. A transfer function bends the code allocation to follow perception, spending bits where the eye actually looks.

For decades the answer was gamma: a power law, E′ = L1/γ with γ ≈ 2.2. Nobody designed that exponent for the eye. A CRT's light output happened to follow a roughly 2.2-power law of its drive voltage — a quirk of electron-gun physics, where the beam current steering electrons at the phosphor rose as about the 2.2 power of the control voltage — and that curve happened to be close to the inverse of how the eye encodes lightness. Encoding for the tube therefore encoded for the viewer, by accident. The catch is in the normalization: L runs 0 to 1, where 1.0 is "whatever this display emits at maximum." Gamma encodes a relative shape — a code of 0.5 means "partway to this display's max," and the max is left undefined by the signal. That ambiguity is exactly the reference-white problem from §1.

Perceptual Quantizer (PQ), developed at Dolby and standardized as SMPTE ST 2084 in 2014, makes the axis absolute. It fixes the domain once and for all: the range [0, 10,000 cd/m²] maps to the code range [0.0, 1.0]. Now a code does not mean "half of max" — it means a specific number of nits, identical on every conforming display. Ten thousand is a deliberate ceiling, not a limit of the math: outside of staring straight at a light source, almost nothing in human experience is brighter, so it is a cap chosen never to be hit.

The curve's exact shape is not arbitrary. It is fit to Barten's contrast sensitivity model1 — a description of the smallest brightness step a person can detect (the just-noticeable difference, or JND) at each luminance level. PQ is built so that one step in code value stays near one JND across the whole range: no step large enough to show as a band, none so fine that it wastes a code. At 12 bits the steps sit below the JND everywhere (that is Dolby Vision); even 10 bits (HDR10) is usually clean — where a linear encoding would need roughly 14 bits to dodge visible banding. The constants in the formula below are fit, not derived: tap any term for what it does, but the shape is the point, not the digits.

E′=(c₁ + c₂ · Ym₁1 + c₃ · Ym₁)m₂ (ST 2084)
Tap any term →

With the axis fixed, the encoded values become readable landmarks — trace them on Fig 2.2 below. At 100 cd/m² (old SDR grading white), E′ ≈ 0.51. At 203 cd/m² (the BT.2408 reference white from §1), E′ ≈ 0.58. At 1,000 cd/m² (a common HDR10 peak), E′ ≈ 0.75. At 4,000 cd/m² (the ceiling used for the comparison images in §4), E′ ≈ 0.90. The dashed gamma curve tells the other half of the story: with a 100-nit peak it has already reached E′ = 1.0 at 100 nits and then flatlines — it has no code left to describe 101 nits, let alone 4,000. Everything in the shaded region exists in PQ and is simply unrepresentable in gamma-encoded SDR.

Two black-to-white ramps quantized into the same number of code steps: a linear-light encoding bands visibly in the shadows and wastes codes in the highlights, while a perceptual encoding spreads steps evenly and stays smooth. Linear code — steps even in light ← few codes · banding codes crowded here → Perceptual (PQ-like) even perceived steps · smooth throughout · no visible banding
Fig 2.1Linear light wastes bits. Both ramps run black→white in the same 28 code steps. The top ramp spaces them evenly in linear luminance: the shadows jump in visible cliffs (banding) while the highlights crowd into steps the eye can't separate. The bottom ramp spaces steps evenly in perceived lightness — the same budget, spent where the eye can use it, and the gradient reads smooth end to end.
PQ OETF versus gamma 2.2 1.0 0.75 0.50 0.25 0 ENCODED VALUE E′ 0.01 0.1 1 10 100 1 000 10 000 LUMINANCE (cd/m²) — LOG SCALE 203 cd/m² · E′ ≈ 0.580 HDR headroom gamma clips → PQ (ST 2084) Gamma 2.2 · 100 cd/m² peak
Fig 2.2PQ vs gamma 2.2 (log luminance axis). The shaded band is everything PQ can encode and gamma physically cannot — every highlight above 100 cd/m². The marked point at 203 cd/m² (E′ ≈ 0.580) is the BT.2408 SDR reference white: the handoff between the two regimes.
§ 03 Rec.2020

Rec.2020 and the Gamut Question

Brightness is only half of headroom. The other half is color. A wide gamut adds the color headroom HDR needs, and the two go together. A gamut is the full set of colors a system can reproduce, fixed by its three primaries — the purest red, green, and blue it can emit — because every other color is a mix of those three. Narrow primaries mix to a narrow range of colors.

To picture a gamut, set brightness aside and plot color alone. The CIE chromaticity diagram does exactly this: a horseshoe-shaped map where every point is a distinct hue and saturation, the curved outer edge traces the pure single-wavelength (spectral) colors — the most saturated light physically possible — and the whole horseshoe marks the boundary of human vision. A display's three primaries are three points inside it; the triangle joining them is everything the display can show. A bigger triangle reaches more of the horseshoe, and therefore more of what the eye can see.

sRGB, the gamut of nearly every SDR image, draws a fairly small triangle. ITU-R BT.2020 (Rec.2020) draws a much larger one: its primaries sit almost on the spectral edge — approximately pure 630 nm red, 532 nm green, 467 nm blue — so its triangle stretches across most of visible color. On the diagram its corners are R (0.708, 0.292), G (0.170, 0.797), B (0.131, 0.046).3 No current consumer display can actually hit those primaries; the standard deliberately describes hardware that does not yet exist, so future panels need no re-encoding to use their full range.

CIE 1931 chromaticity diagram with the sRGB and Rec.2020 gamut triangles overlaid on the spectral locus. 00.10.20.30.40.50.60.70.8 00.10.20.30.40.50.60.70.80.9 x y RGB RGB D65 Rec.2020 sRGB spectral locus
Fig 3.1The CIE 1931 chromaticity diagram. The horseshoe is the boundary of human color vision; its curved edge is the pure spectral colors. sRGB's triangle is modest; Rec.2020 reaches nearly to the spectral locus, capturing far more of the greens and deep reds the eye can actually see.

Why does brightness demand this? Because the most intense real-world highlights are often deeply saturated — flame, neon, a sunset, sun through a colored leaf. In a narrow gamut you can make such a highlight bright only by desaturating it toward white as it climbs; a wide gamut lets it stay vividly colored and grow bright. Brightness without gamut turns every strong highlight pale.

A caveat for the images here. All four sources are ordinary sRGB JPEGs, so the conversion invents no color that was never captured — it repositions the chromaticity already in each file into the Rec.2020 coordinate system, passing through CIE XYZ under the D65 white point. In these photographs the visible change is mostly luminance headroom, not gamut; gamut matters most when the source holds bright, saturated color that sRGB had to clip.

The Hunt effect: brighter looks more colorful

There's a perceptual reason HDR's wider gamut and higher luminance reinforce each other, and it isn't in the signal at all — it's in the eye. The Hunt effect: as a color's luminance rises, the eye sees it as more colorful, not merely brighter. The same orange at 200 nits and at 2,000 nits is the same chromaticity on the diagram, but the brighter one looks more saturated. Its cousin, the Helmholtz-Kohlrausch effect from §1, says a saturated color already looks brighter than a grey of equal luminance.

Together they explain why a tone-mapped SDR image looks not just dimmer but flatter and greyer than its HDR counterpart: crushing the luminance doesn't only remove light, it withdraws the eye's own gain on brightness and saturation. The conversions in §4 hold chromaticity fixed and lift only luminance — yet the HDR halves read as more vivid, which is the Hunt effect doing the work the encoding set up.

The Helmholtz-Kohlrausch effect (a saturated color reads brighter than an equal-luminance grey) and the Hunt effect (a color appears more colorful as its luminance rises). Helmholtz–Kohlrausch Equal luminance, unequal brightness Neutral grey Y ≈ 0.16 Saturated red Y ≈ 0.16 Equal luminance ↑ The red reads brighter Hunt effect Same hue, rising luminance Low High Luminance → Higher luminance → more colorful
Fig 3.2Brightness and colorfulness are not luminance. Two perceptual effects the eye applies before any tone curve does. Left — Helmholtz-Kohlrausch: a saturated red and a neutral grey of the same measured luminance are not seen as equally bright; chroma adds apparent brightness. Right — Hunt: hold the hue fixed and raise its luminance and it looks progressively more colorful. Together they are why HDR's brighter highlights look so much more vivid than the same scene crushed into SDR.
ImagePrimary testSDR constraintHDR reveal
SunsetColored specular highlightsOrange sky flattened at 203-nit ceiling; ripple ratio collapsedGlow at 650–1,700 nits; luminance separation in highlights
Basalt rocksShadow/midtone saturationGrass/heather near ceiling with compressed separation from blackMidtones at 300–800 nits; HK saturation gain
Snowy valleyHighlight rolloff in near-whiteLit snow at ceiling; shadow transition in a 30-nit bandLit snow at 800–1,200 nits; rolloff is an 8:1 ratio
TunnelExtreme dynamic rangeExit clipped to code 255; interior near-gray; contrast ≈ 2:1Exit at 4,000 nits vs. interior at 40–80 nits; 80:1 ratio
Neon alleySaturated emissive colorSignage flattened toward white near the ceilingLight sources above diffuse white, still vividly colored
Stained glassSaturated transmitted color + DRGlass or stone, not bothBacklit glass holds color while shadowed stone stays dark
BonfireDesigned-for-HDR gradeChroma boosted with luminance (a deliberate divergence)
§ 04 Comparisons

SDR vs HDR, Compared

With the encoding and the gamut in hand, here is what the two regimes do to real photographs. Each image runs through one pipeline — sRGB → linear → Rec.2020 (via XYZ D65), a percentile-anchored tone map with a smoothstep S-curve — then splits into two luminance regimes: SDR capped at 203 cd/m², HDR lifted to 4,000 cd/m² through broad, highlight, and specular stages. Chromaticity is identical in both.2

Drag the handle to compare; the intensity slider is a rough proxy for HDR lift, not a true nit-level change.3 On a real HDR display with browser HDR support, the HDR side emits well above 203 cd/m² from the glass.

Sunset panorama — SDR 203 nits Sunset panorama — HDR 4000 nits
SDR · 203 cd/m² HDR · 4,000 cd/m²
100%
Fig 4.1Sunset panorama. Test: specular highlights in saturated color. The orange/pink sky and water surface reflections are the primary subject. SDR compresses the ripple highlight luminance ratio to near-zero; HDR restores 3–5:1. The most visible change is in the sun-adjacent haze, where SDR flattens the gradient that distinguishes it from the deeper horizon orange.
Scottish rock formation — SDR Scottish rock formation — HDR
SDR · 203 cd/m² HDR · 4,000 cd/m²
100%
Fig 4.2Scottish basalt formation. Test: shadow detail and midtone saturation ratio. The near-black basalt faces remain dark in both; the change is in the grass and heather, which occupy 300–800 cd/m² in HDR versus the top 30 nits of the SDR ceiling. The apparent saturation increase in HDR is the Hunt effect: at higher luminance, colors appear more colorful.
Slovenian winter valley — SDR Slovenian winter valley — HDR
SDR · 203 cd/m² HDR · 4,000 cd/m²
100%
Fig 4.3Slovenian winter valley. Test: highlight rolloff in near-white. The lit-to-shadowed snow transition spans an 8:1 luminance ratio in HDR — close to the physical scene — versus a sub-30-nit band in SDR. Drag the intensity slider toward zero to see how the snow flattens as peak luminance falls.
Brick tunnel — SDR Brick tunnel — HDR
SDR · 203 cd/m² HDR · 4,000 cd/m²
100%
Fig 4.4Brick tunnel. Test: extreme dynamic range. The sRGB source clips the tunnel exit; the SDR version retains that clip. HDR maps the exit to 4,000 cd/m² against interior brick at 40–80 cd/m² — an 80:1 ratio, physically consistent with overcast outdoor daylight versus shaded interior. SDR collapses this to roughly 2:1 in code space. The arch geometry at the tunnel mouth is only fully legible on an HDR display.
Neon alley, Tokyo — SDR Neon alley, Tokyo — HDR
SDR · 203 cd/m² HDR · 4,000 cd/m²
25%
Fig 4.5Neon alley, Tokyo. Test: saturated emissive color at high luminance — the case for a wide gamut. The signage and its wet-pavement reflections are light sources, not lit surfaces; in HDR they sit well above diffuse white while staying vividly colored, the gamut and luminance headroom working together. Intensity starts low — drag it up to push the neon into the headroom.
Stained glass, dark gothic — SDR Stained glass, dark gothic — HDR
SDR · 203 cd/m² HDR · 4,000 cd/m²
45%
Fig 4.6Stained glass, dark gothic. Test: saturated transmitted color out of deep shadow — gamut and extreme dynamic range at once. The window is backlit daylight through colored glass, many stops above the shadowed stone around it; SDR must choose between holding the stone or the glass, while HDR keeps both. Intensity starts partway up.

Designing for HDR, not just into it

Everything above preserves chromaticity and changes only luminance. But once you have the headroom, you can grade for it. The figure below boosts saturation in proportion to luminance lift — deliberately leaning into the Hunt effect rather than letting the eye do all the work. It is a divergence from the chroma-preserving pipeline used everywhere else here, and on fire it earns its keep.

Bonfire — HDR, chroma-preserved Bonfire — HDR, saturation-boosted
HDR HDR · sat-boost
100%
Fig 4.7Bonfire — chroma-preserved vs. designed-for-HDR. Both halves are HDR; the right one pushes chroma outward where the flame is brightest, so the fire deepens toward orange-red as it climbs into the headroom. This is a deliberate grade, not the default conversion — the kind of thing the format makes possible once "white" is no longer the ceiling.
§ 05 Coda

The Signal Is Absolute; the Glass Is Not

What the file now contains is a physical claim: this pixel is 600 nits, that one is 4,000. Whether you ever see it is a separate question. A panel that peaks at 600 nits, a browser with no HDR path, an operating system compositing HDR over an SDR desktop — each accepts the same file and then approximates, tone-mapping the signal down, sometimes badly. That is why HDR so often arrives washed-out or grey: not because the encoding failed, but because the hardware couldn't honor it and guessed.

The encoding side is settled. The 203-nit reference white, the PQ curve, the Rec.2020 gamut are absolute and the same everywhere. The gap that remains is between what the file specifies and what the glass in front of you can deliver — and for now, the file asks for more than most hardware can give.

Notes

Implementation details and qualifications.

  1. N · 01BT.2408 sets 203 cd/m² as the reference for diffuse white in an HLG or PQ environment, calibrated for consistent perceived brightness between SDR and HDR material on one HDR display. It corresponds to the 75% signal level on the HLG curve and to E′ ≈ 0.58 in PQ — two different curves that happen to land near the same numbers, not the same quantity.
  2. N · 02Tone mapping is identical for both variants: percentile-anchored black/white, smoothstep S-curve, gamma 0.90. YCbCr conversion uses the Rec.2020 NCL matrix applied to PQ-encoded values (correct NCL convention), 4:2:0 chroma box-averaging.
  3. N · 03The intensity slider modulates CSS opacity on the HDR image layer overlaid on the SDR layer — a visual approximation, not a true nit-level adjustment. True nit-level control requires re-encoding at the target peak or runtime WebGL tone-mapping.

References

Five sources plus further reading, ordered by appearance.

  1. R · 01Barten, P.G.J. Contrast Sensitivity of the Human Eye and Its Effects on Image Quality. SPIE Press, 1999.
  2. R · 02ITU-R BT.2408-7. "Operational practices in HDR television production." ITU, 2023.
  3. R · 03ITU-R BT.2020-2. "Parameter values for ultra-high definition television systems." ITU, 2015.
  4. R · 04SMPTE ST 2084:2014. "High Dynamic Range EOTF of Mastering Reference Displays." SMPTE, 2014.
  5. R · 05Miller, S., Nezamabadi, M., Daly, S. "Perceptual Signal Coding for More Efficient Usage of Bit Codes." SMPTE Motion Imaging Journal, 2013.
  6. R · 06Hollick, D. "What is a color space?" Making Software, 2025. Further reading on gamuts, color models, and gamma.