Recreating tonemapper externally


If i render our a non tonemapped exr from unreal is it possible to recreate the tonemapper process in something like Nuke? Maybe a custom lut to create the same result?


  • Chris

No need for a custom LUT since Nuke supports OCIO. UE4 uses reference ACES with a gain of 1.45 applied to the RRT or pre-tonemapped color, so you can just apply the OCIO ACES config to the exported image with that small adjustment(just make sure you’re using the correct input transform).

UE4 has a few tweaks not in OCIO’s default library, such as blue desaturation to work around gamut mapping issues with pure sRGB blue(the DCTL is available on ACESCentral, just a simple 3x3 matrix) and a fake wide gamut expanding sRGB primaries beyond P3. Both are simple enough to add to your own OCIO config or recreate within Nuke if they’re even needed for your purposes. They can be found in the PostProcessCombineLUTs shader in the engine directory.

Can I ask you to guide me on how to create an OCIO config with the Blue Highlightfix CTL so I can use it in Unreal? I recreated the blue correction in Unreal as a post process material, and it kindof matches the original, although I don’t want to bake in the bluefix right in unreal if not necessary (or should I?).

These are the same renders inputs, the top images are pregained with 1.45, pre-processed with ( srgb>>AP0, blue correction, AP0>>ACEScg AP1), their OCIO is (IDT: ACEScg >> ODT: output sRGB); the bottom one is the out-of-the-box unreal tonemapped result with no OCIO, for reference.​​

My goal is to create an IDT OCIO config for Unreal (and nuke, resolve, etc…) that consists the conversion from Utility - Linear - sRGB >> ACEScg and the BlueCorrection as well, so I can see it in the unreal viewport without baking that into the renders.

Thanks in Advance!