ThePsych

Last-gen games · HDR10 · Fire TV Cube

Your OLD games are HDR inside

Games from the PS3 and PS4 era already light their scenes in HDR. Flag the console's output as HDR10 and an HDR TV opens that light back up.

Why they're HDR inside

Inside the engine, most PS3- or PS4-era games work their lighting in HDR: the sun, a muzzle flash and a dark corridor all get their real brightness, far beyond what a TV of the time could show. At the end of every frame, the game squeezes that light into an SDR picture. This step is called tone mapping, and it's there because SDR was what TVs took back then. The PS3's HDMI out (HDMI 1.3) is incapable of HDR.

The bright and dark parts aren't thrown away though. They're packed into the ends of the signal, so a dark alley and its lights end up a few values apart instead of miles apart like we see things in real life.

Game engines have rendered this way for over a decade. Most of your favorite games like Destiny, Call of Duty, Last of Us, Uncharted, and more have been doing this before HDR TVs existed.

What the TV does with it

An SDR TV and an HDR10 TV turn the same signal values into brightness with different curves. HDR10 uses a curve called PQ, which spends its top values on far brighter light. Tell the TV the console's picture is HDR10 and it reads the game's own values on that curve. The packed-in highlights open back out toward the TV's peak brightness, and every tone stays in order.

The same signal, read two ways Brightness against signal value. Read as SDR, the top of the signal stays near the old peak. Read as HDR10, the top of the signal climbs steeply toward the TV's peak, so packed highlights open back out. read as SDR read as HDR10 signal value brightness
The highlights the game squeezed into the top of the signal climb toward the TV's peak brightness when it's read as HDR10.

How close it lands

Close, but not mastered HDR. Computed for typical game tone-map curves (generic curves, not measured from any one game), here is where mid-grey lands when the signal is read as HDR10:

Tone-map curveMid-grey read as HDR10HDR reference
Hable filmic30 nits26 nits
ACES fit36 nits26 nits
Reinhard43 nits26 nits

The reference is the HDR level for mid-grey in ITU-R BT.2408. Mid-tones land near where HDR content puts them, and highlights get real HDR headroom. What's still off:

How the Fire TV Cube does it

The Fire TV Cube (3rd gen) has an HDMI input. With HDMI Input Passthrough on, it sends the console's own signal to the TV instead of rescaling it. From a plain ADB shell on the same network, you can tell its HDMI output to carry the HDR10 flag. Fire OS keeps putting SDR back, so a small script, the keeper, keeps sending the flag.

Measured with a PS3 game over 12 minutes, the Cube's output read HDR10 in 97.6% of checks, with no blink visible on the TV.

  1. Console → Cube → TV. The console plugs into the Cube's HDMI input, and the Cube plugs into an HDR10 TV.
  2. Set up the Cube once: Developer Options and ADB Debugging on, HDMI Input Passthrough on, Dynamic Range set to Adaptive.
  3. Start the keeper from a computer on the same network. The TV switches to HDR and stays there while the game runs.

What it's been tested on