Blog

HDR game streaming that actually looks like HDR

Why streamed HDR over Sunshine/Moonlight comes out washed out — tone-mapping, broken 10-bit pipelines, capability negotiation — and how punktfunk keeps HDR intact end to end.

You enabled HDR and the stream came back washed out, grey, or oversaturated — somehow worse than SDR. HDR game streaming is famously finicky. Here's what actually goes wrong, and how punktfunk gets it right from capture to display.

Why streamed HDR so often looks washed out

HDR isn't a single switch — it's a chain, and a break anywhere flattens the picture:

  • Tone-mapping mismatches — the host renders HDR, but somewhere it's tone-mapped to SDR and back, crushing highlights into grey.
  • A broken 10-bit pipeline — if capture, encode, or decode silently falls back to 8-bit, you get banding and a dull image.
  • Capability negotiation gaps — the client display is HDR-capable but the host never learns that and sends SDR; or it sends HDR to an SDR panel and everything goes grey.
  • Metadata loss — HDR10 static metadata (mastering luminance, MaxCLL/MaxFALL) dropped in transit, so the display can't map tones correctly.

The usual symptoms

In practice this shows up as a washed-out or grey image, an HDR toggle that seems to do nothing, oversaturated colors, or HDR that only behaves on one specific client. The fix is usually a pile of per-display, per-GPU workarounds — and it breaks again on the next setup.

How punktfunk handles HDR end to end

punktfunk keeps a genuine 10-bit path from capture to display, and negotiates the client's capabilities up front instead of guessing:

  • Real 10-bit encode — Main10 / av1_nvenc -highbitdepth, so highlights and gradients survive instead of banding.
  • Capability negotiation — the client advertises HDR support and bit depth on connect, and the host only sends HDR when the client can actually display it.
  • In-band transfer detection — PQ (SMPTE 2084) is detected in the stream, and the client flips its swapchain into the right HDR mode (for example R10G10B10A2 + ST.2084 with HDR10 metadata on Windows).

The payoff is HDR that reads as HDR: specular highlights that pop, deep shadows that stay clean, and color that matches the host — not a washed-out approximation you end up turning back off.

Try it

If "HDR" has so far meant a greyed-out stream, punktfunk's native 10-bit path is built to make it just work on a capable client. Enable HDR on the host and a 10-bit display, and let the negotiation handle the rest.