Implementing a Look Transform (LMT) in Davinci Resolve

Hoping to learn how folks are implementing a LMT in Davinci Resolve.

FWIW, we have a Look Transform that gives the RRT-ODT a more neutral low contrast look, as described here . It’s a ASC-CDL file that I have converted to a cube 1D LUT since reading CDL files in Resolve is a PITA.

Conceptually this LMT would be applied across an entire scene or show, downstream of the per shot grades, but before the Output Transform. So I’m thinking therefore that one would not apply the LUT to a clip, but rather in Project Settings > Color Management > Lookup Tables.

Since applying the LUT in the Video monitor lookup is “only temporarily applied for purposes of monitoring; they’re never applied to rendered media” I’m thinking that this should instead be applied in the Output Lookup table. I therefore made a 1D LUT from the ASC-CDL transform I’m using for the LMT. This clipped at first in the Output Lookup table, but setting the range to 0-15.77610126 seems to fix this.

It would be nicer of course to just use the CDL rather than a 1D LUT. Resolve however does not make it easy to do this (requiring the unintuitive workflow of reading in an EDL via ColorTrace linked to a CDL!).

Anyway, this seems to work, but I’d love to hear from others if they have easier/better workflows! Where do you apply an LMT in resolve? Do you use CDL? LUT?

The Davinci manual says “This drop-down menu lets you choose how you want to
process CLF LUTs that are added to nodes in your grades while working in ACES, such
as Look LUTs in on-set or VFX workflows.” implying that an LMT LUT would be applied on a node per shot. That seems sort of tedious, but maybe there is a way to batch apply this globally to all shots (and toggle it off if desired) I’m not aware of?

Replying to myself here. Here’s what I’ve been able to figure out :slight_smile: .

I’m thinking that applying the LUT in a clip would be better than in the Project Settings. I suspect that the LUTs in Project Settings do not respect the process space settings for ACES (i.e the “process node LUTs in” setting in the ACES section of Color Management). More on that below.

In the Color module Node Editor you can set the drop-down to timeline instead of clip. You then just click on the node and choose your LUT from the contextual menu. The LUT will then affect all the clips in the timeline, and can be toggled on or off as desired. This fits with the idea of using a Look Transform (LMT) across an entire scene or show.

One can also apply a CDL (Color Decision List) to a grade node. This is done from the Gallery/Stills Panel. First choose “import” from the contextual menu and read in your CDL file.

image.

Then right-click the still and choose “apply grade” from the contextual menu. This will apply the grade to a clip in the Node Editor, which can then be copy-pasted into the timeline node (not sure if there is a more direct way to do this).

Note that I made my CDL in Nuke by exporting a CC file from an OCIOCDLTransform.

<ColorCorrection id="">
	<SOPNode><Description></Description>
		<Slope>0.85 0.85 0.85</Slope>
		<Offset>0.06525 0.06525 0.06525</Offset>
		<Power>1 1 1</Power>
	</SOPNode>
	<SatNode><Saturation>1</Saturation></SatNode>
</ColorCorrection>

In order for Resolve to read this, it needs to be edited and have the extension changed from .cc to .cdl and have the code changed to this:

<ColorDecisionList>
	<InputDescription></InputDescription>
	<ViewingDescription></ViewingDescription>
	<ColorDecision>
	
	<ColorCorrection id="">
		<SOPNode><Description></Description>
			<Slope>0.85 0.85 0.85</Slope>
			<Offset>0.06525 0.06525 0.06525</Offset>
			<Power>1 1 1</Power>
			</SOPNode>
		<SatNode><Saturation>1</Saturation></SatNode>
	</ColorCorrection>

	</ColorDecision>
</ColorDecisionList>

The “process node LUTs in” in the ACES Color management Settings can be set to AP1 when using .cube LUTs with the shaper built in (Log2 48 nits shaper ACEScc). If using a CLF (Common LUT Format) file the “process node LUTs in” it would be set to AP0 since a CLF file includes a transform from ACES2065-1 to the LUT color space and back to ACES2065-1. This is the official ACES compliant way to use an LMT with AP0 in/out.

As an aside, CLF only works with Davinci Resolve Studio (not the free version). I find this kind of puzzling as it would seem to hinder the wide adoption of the Common LUT format.

You can also write a DCTL if you’ve got some programming chops. Aside from the fact that it doesn’t support HDR swapchains, Resolve Studio is my new favorite prototyping tool as it saves me shader and code recompile time. If BMD won’t implement HDR on Windows, maybe I’ll hack it through DLL replacement and DLL hooking. Just maybe since that’s a very complicated project that would require as lot of time.

For sure DCTL would be better than a 3D LUT!

Speaking of which, I was noticing that the Gamut Compress DCTL needed to have the “process node LUTs" in ACEScc AP1, and looked wonky when set to AP0. That surprised me as I was expecting it to be AP0 as the official blessed ACES way. Any idea what the story is there?

The DCTL assumes that its input will be ACEScct, and converts to and from that at the start and end, because that is the default in Resolve.

Although the way an ACES LMT is officially expressed is with the input and output as linear AP0, there is no requirement for implementations to jump back and forth to that, as long as the result is the same as if they had.

Nick your under-the-hood knowledge is really quite astounding!
Follow-up: You say that ACEScct is the default in Resolve. I had thought that the default LUT processing space was ACEScc since it says in the Settings “Process node LUTs in ACEScc” and not ACEScct, even when the “color science” is set to ACEScct. Is that not the case and it is actually processing them in ACEScct? That would be really important to know when reading the LUT in Nuke for example as it’s easy to miss the difference visually. Does someone maybe need to change their menus?

I believe (but I would have to re-check) that I investigated that when ACEScct was first introduced. If my memory is correct, that option in Resolve pre-dates ACEScct, and should be taken to mean “the current working space” rather than specifically ACEScc.

1 Like