How to integrate Color.io into color managed workflows
Color.io is a web-based color grading and raw image development application that offers the ability to generate 3D LUTs (Look Up Tables), which can be used to transfer your exact color grades from Color.io to third party applications for color manged video and film workflows. Additionally, Color.io can generate color managed DCTLs, which is a scripting extension designed for Davinci Resolve.
Let us first establish an understanding of how color management works inside of Color.io so we can better integrate it into third party applications and workflows. Color.io uses the ACES framework for color management. ACES helps with bringing images from different cameras into a unified working color space and output to a vast number of display devices like different monitors and screens. This allows us to develop looks that are consistent across all of these cameras and monitors. The color management pipeline looks like this:
We start with an image and transform it with an ACES IDT to a common baseline that the Color.io engine understands. Inside of Color.io we develop our color look and finally render out to the screen through an ACES ODT. The first huge benefit of this pipeline is that if we want to adapt our looks to another camera or monitor type in the future, all we need to do is change the IDT or ODT respectively. The second benefit is that color management ensures that we can integrate looks created in Color.io into other color managed software applications.
Open the export window and set the Export Working Space to either ACEScct (recommended) or ACEScc. The preview image will update to reflect your working space change:
This will create a LUT or DCTL that expects your chosen ACES working space as input and also outputs to that same working space. Note that this process removes the IDT and ODT from the exported LUT. Since we are delegating color management to our target application, we will re-integrate them there.
For this example we will integrate an ACEScct LUT we have created with Color.io into a DaVinci Resolve timeline. The most basic setup for integrating our color managed LUT or DCTL is a 3-node graph as seen in the image below. The first node applies an ACES transform that maps our camera input to the ACEScct working space:
Good to know: The Color.io app has ACES 1.3 Reference Gamut Compression enabled by default. If you want to get a 1:1 match between the preview in the app and your third party integration, you must enable reference gamut compression as part of the input device transform as shown in the screenshot below.
The second node holds the LUT or DCTL we have exported from Color.io. This node is now receiving an ACEScct signal from the previous node we have created. In order to turn ACEScct into something that looks good on our monitor we will append a third node after the LUT that converts ACEScct to our final output:
We have now recreated the processing pipeline from Color.io inside Davinci Resolve. When you use the exact ACES settings shown in the screenshots, including gamut compression on the IDT, you will get the exact same image in Resolve and Color.io. For reference, here's a comparison of the same frame exported from both apps in our example workflow:
DaVinci Wide Gamut and Intermediate gamma can contain negative values which is why it is not recommended to encode 3D LUTs in this color space directly. A much better way is to use the log-encoded ACEScct or ACEScc color spaces for large gamut lookup tables. This avoids any potential issues with out-of-gamut colors and ensures extremely stable color transforms in your final images.
To export a color managed LUT or DCTL from Color.io, select ACEScct from the Color Management drop-down in the the Export window:
To use your ACES LUTs in a DaVinci Wide Gamut (DWG) color managed timeline, all you need is a pair of color space transforms (CSTs) to go from DWG into ACEScct, and another one to go from ACEScct back to DWG. Since the ACES color space is sufficiently large, this conversion is lossless and perfectly invertible.
Here's how to convert DaVinci Wide Gamut to ACEScct with a Color Space Transform in Resolve:
After this first Color Space Transform you can add a corrector node with an ACEScct LUT or DCTL applied.
Now all that's needed is another Color Space Transform that converts ACEScct back into your DaVinci Wide Gamut working space:
Good to know: By default, the Tone Mapping Method parameter is set to "Davinci". To ensure a correct transform from DaVinci Wide Gamut to ACES, and from ACES back to DaVinci Wide Gamut, both Color Space Transforms should set the Tone Mapping Method to "None" to ensure a correct transform.
With Color.io you can edit images and build 3D LUTs with a powerful online raw developer and analog film look designer for photographers and filmmakers. Craft stunning film color in record time that works for any camera, in any software and on any device, directly in your browser.