Unreal to Davinci Resolve - ACES Color Matching!?

Hello!

So, after spending nearly 2 months and surely more than 40 hours of effective work trying to figure this out, I now turn to our dear community for help :slight_smile:

THE ISSUE

When rendering EXR in ACES - ACEScg from Unreal Engine 5.3 (and earlier builds as well) and importing the EXR files to Davinci Resolve 18.6 Studio, I can not get a visual match between the viewport in UE5 and the viewport/render in Davinci. It is as if the Contrast and/or the Gamma are off.


The image above shows an EXR that has been color-converted using the workflow demonstrated below and should match the PNG on the right, but it does not. The PNG on the right is a 100% match to the UE5 Viewport. Click here for High Res images PNG vs EXR.

Video for easier seeing the difference between PNG and EXR.

UNREAL ENGINE WORKFLOW

I created an OCIO Config file using the built-in OCIO Config file for this (I’ve also tried with the Github-downloaded version, but that should not be needed anymore).

When I render I add Color Output to the MRQ and choose the OCIO Config file created. Putting Linear Rec.709 (sRGB) as the Transform Source and ACEScg as the Transform Destination. The Tone Curve is automatically disabled, even though it’s not ticked.

Please note that I’ve also tried to put a 0 value for Blue Correction, Expand Gamut, and Tone Curve Amount in the Post Process Volume since this is recommended in this guide from Epic for guaranteed and true linear renders, but it makes no difference for the color matching in Davinci.

DAVINCI RESOLVE 18.6 WORKFLOW

APPROACH 1

I’ve tried two different approaches in Davinci. Converting the EXR files through Color Management in Project Settings, then changing ACES Input Transform on the individual file in the Media Pool.


I’ve tried both ACES 1.2 (Github version) and ACES 1.3 (UE Built-in version)

APPROACH 2

I’ve also tried to convert from ACES to Rec.709 through a node-based workflow, according to Jon Jags Nee’s tutorial “Unreal Engine 5.3 to Da Vinci Resolve - ACES but easier…”. With this workflow, I get the same incorrect results as with project based color management - But on a clip-to-clip basis rather than for the whole project.

Worth noting is that I did see a comment under William Faucher’s tutorial that mentioned using sandwich nodes instead, but I’m not sure I fully understood what the suggestion. William seemed to see some value in it though, maybe someone here can shed some light on it?

Some great guides that I’ve followed to the letter:
UE to Nuke to DaVinci ACES Color Pipeline, Tutorial by Epic.
Unreal to Davinci Resolve Workflow ACES & sRGB, tutorial by William Faucher.
UNREAL ENGINE 5.3 | ACES Pipeline, Tutorial by Post Processed.
Unreal Engine 5.3 to Da Vinci Resolve - ACES but easier…, Tutorial by Jon Jags Nee.

Please, can anyone help me understand what I can do to get a visual match in UE5 viewport and Davinci Resolve Viewport?

1 Like

Nobody?

Sorry to necropost but did you figure it out? I always thought that this was just the result of the wider colorspace like it’s been said on various places like Aces vs non aces comparison - Discussions - Using ACES - Community - ACESCentral

Hey KaptenLudvig,

I’ve read your post as I’m also in the process to look for a better workflow for color space and discrepencies between different monitor within our studio.

I’ve been looking at all this for quite a while now and especially this several weeks I’ve been reading lots of docs for color spaces and how it works in Unreal and Davinci etc…

I think your approach Number 1 is the good one. I would leave the Input transform set to “No Input Transform” as ACES is doing a fantastic job knowing what your footage was shot in when you import Raw footage. And If It’s not Raw you can always change your Input Transform on a clip basis like you’ve done.

Now I think what you are missing is a OCIO config for your Viewport in UE.
If you haven’t changed your color space in Unreal, you should be on Default sRGB -Linear.
But you demonstrate that you want to work with ACES and what you are seeing in Davinci is the result of your export from Linear sRGB /Rec.709 to ACEScg.
But what you are seeing in Unreal is Linear sRGB to whatever your monitor color space is set to.

You miss this ACEScg bucket that converts your picture and then output it to whatever monitor color space you have.

I can see on your screenshots that you have set up your Color management to Rec.709 in Davinci so your monitor is most likely in this color space.
So now what you need to setup is in UE.
An OCIO config for your viewport set from Linear sRGB to output Rec.709.
For having it tested It worked for me, let me know If It’ll work for you.

I’m leaving some useful links If you need:

https://dev.epicgames.com/community/learning/knowledge-base/BLEJ/unreal-engine-color-pipeline-basics?locale=de-de