HDR and UE Content Render Output Pipeline in Practice
Introduction
Back during the UE5.0 preview phase, Epic introduced a customizable working color space — the same concept you’d find in traditional DCC software. For me, this implied a few things:
- The engine can render images with smoother color gradations and richer saturation (thanks to wider-gamut textures).
- Unreal is moving toward a more professional film production pipeline.
- The line between game engines and traditional DCC tools is blurring, and more and more teams are adopting UE as a filmmaking tool.
What follows is an experiment I ran: using UE5.2 to output wide-gamut material and produce Dolby Vision 8.4 content.
My goals for this experiment were:
- Preserve the full high dynamic range information throughout the entire pipeline as much as possible.
- Complete one end-to-end HDR content production pass following a film industry workflow.
- Run a simulated comparison between the HDR and SDR deliverables after export.
Asset Preparation
The first thing you need is the ACES OCIO configuration file. It contains many of the transforms commonly used in film industry pipelines — essentially gamut mappings and gamma transforms.
I used the relatively recent 1.2 config at the time.
I’ve also written a separate document covering the structure of OCIO config files, which is worth reading alongside this post.
Output Settings in UE5
1. Change the Working Color Space
Open UE, go to Settings, and change the engine’s working color space first.
I set it to ACES AP0 (ACES 2065-1). This is the largest transform gamut within ACES — theoretically covering the entire range of human-visible light. Rendering in this space can be understood as: simulating the real world with as wide a color range as possible.
After making this change, you may notice some shift in your scene colors. That’s expected and normal.
2. Configure the OCIO Asset
Create an OCIO Configuration asset inside UE and set up the transforms you want to use.
For this experiment I used:
- ACEScg
- ACES 2065-1
3. Set Up Movie Render Queue
Open the Movie Render Queue plugin, select the sequence you want to export, then focus on the following settings:
- Remove the default export format and switch it to EXR. EXR has a higher bit depth and can carry HDR information.
- Add the Anti-aliasing option and set Temporal Sample Count to 16, with Override checked.
- Add the Color Output option and point it to the OCIO configuration you just created.
- Set Source to the current working color space: ACES 2065-1.
- Set Destination to the target export space — in this case, ACEScg.
- Check Disable Tone Curve.
The Disable Tone Curve option is critical. What it means is: don’t let UE automatically apply a gamma transform on output — instead, preserve the full linear high dynamic range data.
If you leave this unchecked, UE will default to applying the ACES Filmic Tone Curve for tonemapping, compressing the wide dynamic range of the scene down into standard dynamic range. At that point, the dynamic information HDR depends on is already gone at the export stage, and there’s no real HDR left to work with downstream.
Finally, adjust the resolution and output path as needed.
Post-Processing and Export in DaVinci Resolve
In DaVinci Resolve, my preference is to set the working color space to ACEScct. That said, DaVinci’s own DaVinci YRGB Color Managed mode is also perfectly usable in this workflow — and honestly I think the overall experience it provides is quite solid too.
Here’s the rough approach for the settings:
- Input Transform can be set to ACEScg - CsC.
- If your project has many different source types, I’d recommend setting the Input Transform per-clip rather than globally at the project level.
- Output Transform should be set to Rec.2020 HLG, which corresponds to the Dolby Vision 8.4 standard.
There’s also one easy-to-miss step: remember to enable Dolby Vision under the Dolby Vision settings.
If you have multiple source types, you can assign Input Transforms clip by clip. I set mine to ACEScg, matching what was used in the UE export.
Once grading is complete, you can also use Dolby’s analysis tools to analyze each clip and generate the corresponding metadata.
For the export, if you’re not delivering a master, you can choose:
- MP4
- H.265 encoding
- Main10
- Profile 8.4 under advanced options
Pipeline Summary
The full workflow can be summarized as:
Unreal working space (ACES 2065-1 Linear) -> Unreal output (ACEScg Linear) -> DaVinci Resolve grade and deliver (Rec.2020 HLG / Dolby Vision Profile 8.4)
Additional Thoughts
There’s still room to optimize this workflow in several ways.
For instance, you could use ACEScg as the working color space directly. According to ACES documentation, ACEScg is actually better suited for texture rendering and similar tasks.
Another question worth exploring: if the final deliverable is wide-gamut and HDR, should the source image assets used during production also adopt higher bit depth and higher-precision formats? That’s something I’d like to verify further down the line.
I didn’t go into detail on the monitoring setup in this post, but the actual configuration isn’t complicated: just add sRGB as an output in your OCIO config, then in the Lit -> OCIO Display menu, select ACES 2065-1 with sRGB as the output.
Final Comparison
HDR is on the left, SDR is on the right. Download the files locally and play them back on a Mac for the proper comparison.
- File: YN_Italy_HDRvsSDR_MiniMoblie.mp4
- HDR and SDR master download link: https://share.weiyun.com/xIkQd9ym