OpenEXR: High Dynamic Range & 16-Bit Float HDR Imaging
OpenEXR is the industry-standard High Dynamic Range (HDR) image format for film, visual effects, and professional photography. Developed by ILM (Industrial Light & Magic) and open-sourced in 2011, OpenEXR supports 16-bit floating-point color depth, enabling luminance values exceeding 65,000:1 dynamic range—essential for compositing, color grading, and preserving highlight and shadow detail in professional pipelines.
16-Bit Floating-Point Color Representation
OpenEXR's core advantage is 16-bit float (half-precision) color depth:
16-Bit Float vs. 8-Bit Integer
- 8-bit integer: 256 levels per channel (0-255)
- 16-bit float: 65,536 levels per channel with exponential spacing
- Float representation: sign bit + exponent + mantissa
- Dynamic range: 16-bit float spans 0 to ~65,000 times brighter
Light Values & Stops
- 8-bit SDR: brightness 0-1 (normalized range)
- 16-bit HDR: brightness 0-1000+ (physical light units)
- Example: sunlit face = 100 nits, shadow = 0.1 nits (1000:1 ratio)
- 16-bit float preserves both in single image without clipping
File Size Impact
- 8-bit RGB per frame: 4000×3000px = 36 MB
- 16-bit float RGB (half-precision): 4000×3000px = 72 MB (2x larger)
- DEFLATE compression typical: 72 MB → 15-25 MB (60-80% reduction)
- Compression ratio lower than JPEG (lossy vs. lossless overhead)
HDR Imaging & Dynamic Range
OpenEXR was designed for HDR compositing:
Luminance Range
- Real-world sunlit scene: 100,000:1 brightness ratio (sun to shadow)
- Human eye perceives: 10,000:1 dynamic range at once, 1,000,000:1 over time
- 8-bit SDR image: captures only 256:1, clips highlights and shadow detail
- 16-bit OpenEXR: captures 65,000:1+, preserves shadow and highlight nuance
Professional Workflow Example
- Shoot RAW on cinema camera (linear RGB, 14-16 bit native)
- Export to OpenEXR for compositing (preserves full dynamic range)
- Apply color grading, VFX (shadows/highlights recoverable even after aggressive grading)
- Export master delivery (to DCI, Rec.709, Rec.2020 for theatrical/broadcast)
Multi-Layer & Channel Support
OpenEXR's flexibility enables complex compositing:
Multiple Layers in Single File
- Diffuse pass, specular pass, shadow pass in one .exr file
- Alpha channel: per-layer matte/transparency
- Use case: VFX compositor pulls diffuse and specular layers, blends independently
Channel Organization
- R, G, B (color)
- A (alpha/transparency)
- Z (depth/distance from camera)
- N (surface normal X, Y, Z for relighting)
- Custom channels: ID pass (object separation), velocity pass (motion blur)
File Size with Layers
- Single layer EXR (RGBA 16-bit): 72 MB uncompressed
- 5-layer EXR (RGB, RGBA, Z, N): 360 MB uncompressed → 50-80 MB compressed
- Workflow benefit: eliminates frame-by-frame re-rendering for separate passes
Compression Algorithms
OpenEXR supports lossless compression:
ZIP Compression
- Deflate algorithm (same as PNG/gzip)
- 60-80% compression ratio typical
- Slower encoding but highest compression
RLE (Run-Length Encoding)
- Efficient for images with solid colors, noise reduction
- 20-40% compression, faster than ZIP
- Ideal for VFX with matte passes (solid colors)
PIZ Compression
- Designed for OpenEXR, wavelet-based
- 50-70% compression, good for natural imagery
- Balanced speed/compression trade-off
DWAA/DWAB (DreamWorks Compression)
- Lossy compression for preview/proxy workflows
- 10-15% file size (aggressive compression)
- Acceptable quality loss for non-final renders
Uncompressed
- Used when speed is critical (real-time viewport)
- Full data preserved (72 MB for 4000×3000 RGBA)
Professional Compositing Workflow
Asset Management
- Render farm outputs: 100-200 frames × 5 passes = 500-1000 EXR files
- Central archive: lossless compression stores 500 frames @ 60 MB each = 30 GB (vs. 36 GB uncompressed)
- Compositor workflow: loads EXR layers, tweaks color/effects, exports final
Color Grading
- Linear color space: 16-bit float preserves tonal separation
- Aggressive curves (shadows +200%, highlights -50%): no banding in 16-bit float
- 8-bit grading would show severe posterization (only 256 levels)
Visual Effects Integration
- CG render output: diffuse, specular, shadow, reflection as separate EXR layers
- Compositor adds shadows, adjusts specularity per shot
- Color space: linear scene-linear data, gamma-corrected for monitor preview
Use Cases
Film & VFX Production
- Industry standard: Nuke, Fusion, After Effects all expect OpenEXR
- Multi-layer EXR files reduce storage (5 layers/file vs. 5 separate files)
- Dynamic range preservation through entire compositing pipeline
Professional Photography
- RAW export to OpenEXR: preserves full camera sensor dynamic range
- HDR tone-mapping: applies perceptual tone curve without shadow/highlight clipping
Gaming & Real-Time Rendering
- Engine export for offline compositing (Unreal, Unity output EXR)
- Lighting bakes, GI pre-computation stored as EXR for later adjustment
Scientific & Medical Imaging
- Wide bit-depth: 16-bit float accommodates specialized imaging (microscopy, astronomy)
- Lossless preservation: scientific accuracy maintained
Browser Support & Modern Usage
No Browser Support
- OpenEXR not displayable in web browsers (binary format, not designed for web)
- Conversion required: OpenEXR → PNG/JPEG for web display
- Tools: ImageMagick, FFmpeg, NVIDIA Texture Tools convert EXR to web formats
Desktop Applications
- Nuke, Fusion, After Effects: native support
- Photoshop: OpenEXR plugin available
- Preview/QuickLook: minimal support (preview only)
File Size Comparison (4000×3000 16-bit RGBA)
- OpenEXR uncompressed: 72 MB
- OpenEXR compressed (ZIP): 15 MB
- Converted to PNG 16-bit: 90 MB (larger, lacks HDR metadata)
- Converted to JPEG: 400 KB (lossy, information loss, no HDR)
OpenEXR remains the industry standard for professional imaging pipelines, irreplaceable for VFX, color grading, and HDR workflows where dynamic range preservation and layer flexibility are paramount.
Related conversions
Frequent conversions across the catalogue: