HDR Images: The Complete Guide to High Dynamic Range Photography Formats
A standard photograph captures roughly 8 stops of dynamic range. The human eye perceives about 14 stops in a single glance, and a bright outdoor scene can span 20 stops from deep shadow to blinding sun. HDR (High Dynamic Range) image formats exist to bridge this gap — storing luminance information far beyond what any display can show, preserving the raw light of a scene for post-processing, compositing, and physically-based rendering.
What Is an HDR Image Format?
HDR file formats store floating-point or high-bit-depth pixel values that represent real-world luminance in physical units (or at least physically-meaningful ratios), rather than the quantized 0–255 values of standard 8-bit images. This distinction is fundamental:
- LDR (Low Dynamic Range): 8-bit per channel, values 0–255, ~8–12 stops of range, display-ready
- HDR (High Dynamic Range): 16-bit or 32-bit floating-point per channel, physically-based luminance, unlimited stops of range, requires tone-mapping for display
HDR formats are essential for:
- VFX and compositing: matching CGI lighting to real-world plates
- IBL (Image-Based Lighting): using 360° HDR panoramas to light 3D scenes
- Photography post-processing: merging multiple exposures into a single HDR file
- Game development: environment maps for PBR (Physically Based Rendering) shaders
The RGBE Format (.hdr)
The most common HDR format you will encounter is Radiance RGBE, developed by Greg Ward for the Radiance rendering system in the 1980s. Files use the .hdr extension (sometimes .pic).
RGBE uses a clever shared-exponent encoding: instead of storing 32-bit floats for each R, G, and B channel (96 bits per pixel), it stores 8-bit mantissas for each channel plus a shared 8-bit exponent — 32 bits per pixel total, with floating-point-like precision over a huge dynamic range.
The format:
- Compression: run-length encoding (lossless, moderate compression)
- Color space: linear RGB (no gamma), relative luminance
- Dynamic range: approximately 76 stops (2^76 luminance ratio)
- Channels: RGB only (no alpha channel)
- Header: ASCII text with exposure and format metadata
#?RADIANCE
FORMAT=32-bit_rle_rgbe
EXPOSURE=1.000000
GAMMA=1.000000
-Y 1024 +X 2048
The binary pixel data follows the ASCII header.
OpenEXR (.exr)
While RGBE is ubiquitous for IBL panoramas, OpenEXR (developed by Industrial Light & Magic and open-sourced in 2003) is the professional standard for VFX and film production. OpenEXR supports:
- 16-bit half float, 32-bit float, 32-bit integer per channel
- Arbitrary channels: not just RGB — store Z-depth, normals, motion vectors, alpha, diffuse, specular in a single file
- Lossless and lossy compression: ZIP, ZIPS, PIZ (wavelet), RLE, B44 (lossy half-float)
- Multi-part files: multiple images in one file (different render passes, stereo pairs)
- Deep compositing: per-pixel depth samples for complex compositing operations
- Tiled format: efficient access to subregions of large images
OpenEXR is the format of choice for:
- Film and TV visual effects pipelines (Avatar, Avengers, essentially every major VFX film)
- 3D rendering outputs (Blender, Maya, Nuke, Houdini all use EXR natively)
- Multi-pass renders (separate diffuse, specular, shadow, reflection layers)
HDR Photography Workflow
Exposure Bracketing and Merging
The most common consumer HDR workflow involves shooting multiple exposures and merging them:
- Bracket exposures: shoot 3, 5, or 7 frames at different exposures (e.g., -2, -1, 0, +1, +2 EV)
- Merge to HDR: Lightroom, Photoshop (Merge to HDR Pro), Luminance HDR (free), or RawTherapee merge the brackets into a 32-bit HDR file
- Tone-map for display: apply a tone-mapping operator (TMO) to compress the HDR into displayable LDR — Reinhard, Filmic, or ACES tone curves are common
- Export: for print/web, export as JPG/PNG; for further editing, keep the 32-bit EXR or HDR file
RAW as a Pseudo-HDR Source
Modern camera RAW files (CR3, ARW, NEF) contain approximately 12–14 stops of dynamic range in a single frame. They are not technically HDR (they are still single-exposure files) but have far more range than JPEGs. When working with a single RAW file in Lightroom/Capture One, you are effectively performing manual tone-mapping on a pseudo-HDR source.
360° HDR Panoramas for 3D Lighting
HDRI (HDR Image) panoramas are equirectangular spherical images that capture light from every direction — used as environment maps in 3D software to provide realistic lighting without manually placing light sources.
Key concepts:
- Equirectangular projection: the standard for 360° HDR maps (2:1 aspect ratio)
- Latitude coverage: full sphere (nadir to zenith included)
- Exposure range: typically 14–20 stops, requiring 7–9 bracketed frames
- Resolution: 8K (8192×4096) is standard; 16K for ultra-high-quality renders
- Sources: HDRI Haven (now Poly Haven), HDRIhub, Sketchfab provide free HDRIs
In Blender:
World → Surface → Background → Environment Texture → open .hdr or .exr file
In Cinema 4D, Maya, 3ds Max, and Unreal Engine, the workflow is similarly straightforward: load the HDRI as an environment/dome light.
Converting HDR Formats
RGBE (.hdr) ↔ OpenEXR (.exr)
Both Blender and GIMP convert freely between these formats:
- Blender: File → Import → load HDR, then File → Export → Image → change format to EXR
- GIMP: File → Open HDR → then Export As → change extension to .exr
- ImageMagick:
magick input.hdr output.exr
HDR → JPG/PNG (Tone Mapping)
Converting HDR to standard formats requires tone-mapping:
- Luminance HDR (free): load HDR, apply tone mapper (Reinhard, Mantiuk, Fattal), export PNG/JPG
- Photoshop: Image → Mode → 8 Bits/Channel (triggers tone-mapping dialog)
- ffmpeg:
ffmpeg -i input.hdr -vf tonemap=reinhard output.jpg
Creating HDR from Multiple Exposures
- Lightroom: Photo → Photo Merge → HDR (non-destructive, creates DNG HDR)
- Photoshop: File → Automate → Merge to HDR Pro
- Luminance HDR (free/open-source): excellent control over alignment and ghost removal
Display Technologies and HDR
Consumer HDR display formats (HDR10, Dolby Vision, HLG) are different from the photography/VFX HDR formats discussed above — they are LDR-encoded signals with metadata that allows HDR-capable displays to show enhanced brightness:
| Format | Use case | Bits | Standard |
|---|---|---|---|
| Radiance RGBE (.hdr) | 3D lighting, photography | 8-bit shared exp | RGBE encoding |
| OpenEXR (.exr) | VFX, film, compositing | 16/32-bit float | ILM/Academy |
| HDR10 | Consumer TV, streaming | 10-bit PQ | SMPTE ST 2084 |
| Dolby Vision | Premium streaming | 12-bit dynamic metadata | Dolby |
HDR10 and Dolby Vision video content is encoded as HDR-signaled video, not as floating-point image files — a completely separate ecosystem from photography/VFX HDR.
Tools That Support HDR Formats
| Tool | RGBE (.hdr) | OpenEXR (.exr) |
|---|---|---|
| Blender | ✅ | ✅ |
| GIMP 2.10+ | ✅ | ✅ |
| Photoshop | ✅ | ✅ (with plugin) |
| Nuke | ✅ | ✅ (native) |
| ImageMagick | ✅ | ✅ |
| DaVinci Resolve | ✅ | ✅ |
| Lightroom | ✅ (merge output) | ✅ |
| Paint.NET | With plugin | With plugin |
HDR formats sit at the intersection of photography, VFX, and game development. Understanding the difference between Radiance RGBE for environment maps and OpenEXR for multi-pass rendering gives you the vocabulary to choose the right format for your pipeline — and to convert between them when your tools demand it.
Related conversions
Most teams that read this guide convert images in one of these directions: