ACES cct Puzzle

A bit of a Flame color management puzzle.

Getting the impression that a lot of the transforms are a bit lazily tagged. It’s not always clear when you’re coming to/from ACES what primaries and what gamma they mean. It just says ‘to ACES’ but isn’t clear on the specifics. You can read the breakout panel, but even that is iffy.

ACES is pretty specific.

You have to color spaces - AP0 and AP1
You can three gamma curves - linear (CG), cc and cct

Soapbox aside…

Here’s the actual issue. A lot of colorists work in ACES pipelines (e.g. Resolve, Baselight). These pipelines are actually log based pipelines (cct most frequently), but some tools linearize the image temporarily for ease of working with it (e.g. the Basegrade operator) so that exposure changes happen in stops and pivots can be seen.

A lot of us use the Flame ACES preset when we setup the project and then use Image in TL-FX and then a viewing transform either in a gap or during export.

It’s important to note, and wasn’t totally clear to me until this experiment, that this is not the same as what most of us do in Resolve. In this setup with the default ACEScg working space, Flame actually remains in scene linear. Now that is ok, since in the Master Grade you can change which mode you want your controls in, and defaulting them to scene-linear when working in ACES takes care of that.

This brings all the benefits of scene linear work, when you need to use blend modes as we have seen in a recent post.

But in my case I actually do want to operate the timeline in ACES cct (log) gamma. And the reason is that I have a nice set of LUTs I want to apply, and they’re all designed to work in ACES cct, not ACES cg. And LUTs have to be applied in the color space they were designed for, or results may be unexpected.

So after realizing that the TL-FX setup and rules default to ACES cg I was on a quest to to add a ColorMgmt effect in front of Image, and then a gap effect in the track above if needed, to allow TL-FX to operate transparently in ACES cct.

But that appears way harder than it should seem. There are no existing color management transforms I’ve seen that would accomplish this. You more or less have to string it together in a custom configuration, and even then it doesn’t work.

Quite possible that I’m still missing an elephant in the middle of the room, or just am not decoding these lazy descriptors correctly.

So if anyone has operated the TL-FX pipeline in ACES cct, that would be super helpful to know.

Here’s where I left off after quite a bit of experimenting:

custom transform in front of Image. All clips have been tagged as Rec709, which they are. But could also be camera log footage.

Changing primaries from sRGB to CIE intermediary, and then to ACES (hopefully AP-1). Also removing the 2.4 gamma curve, and then applying the new ACES cct gamma curve.

Then the reverse in the gap effect above…

Going from ACES cct to AP1 (confusing if that affects both primares and gamma?)
And then from AP1/linear to HD-video (presumably with tone mapping?)

I guess the other option would be create new custom transforms that acutally do what we need here.

1 Like

Sorry @allklier, are you suggesting that ACES cct in Flame isn’t working in AP1 gamut?
and that all operations are happening in Linear, even if the colour space is set to ACEScct?

I’m just trying to get the crux of what you are saying.

Way too verbose of a write-up :wink:

I haven’t been able to make it work yet. Not saying it’s not possible, just there doesn’t seem to be as straight forward of a path as one would assume, and that I haven’t discovered it yet.

@allklier Not exactly an answer to your question…! But rather than tagging everything as what it is, and then moving colour space for every shot on the timeline, is there a reason why you don’t convert everything into ACEScg at conform (via MediaHub > AutoConvert / View Transform / etc). Then you’ve got everything sitting nicely in the same colour space, and you can throw individual shots into cct and back again quite simply using the green and grey TLFX set to Input Transform, with whatever operation happening in between them. We use this pipeline frequently, and it’s clean and simple :slightly_smiling_face:

Can’t see an advantage in keeping everything ‘live’ in its native colour space, but I’m probably missing something?

Good question/suggestion.

I generally work in an unmanaged media workflow, rather than Framestore. So all media is linked during conform, and I render openclips (if I use batch), or just export via MediaHub from the timeline.

Mostly a habit since I come from other software which doesn’t utilize media caching/management.

Most of my storage is fast NVMe, so it hasn’t had any major performance implications.

But that shouldn’t have any bearing on the question on how you configure ACEScct as a working color space. Have you done this, or do you just stay in ACEScg?

Ah I guess the difference is that you want to export shots back out (whether Open Clip or whatever) as their native colour space?

We bake everything to ACES (AP0, 2065-1) EXRs on shared storage at the start. We generally use cg as our working space and like I said, throw individual shots into cct as and when we need to (either using TLFX or BFX nodes). But we have used cct as our working space in the past in exactly the same way (throwing things into cg as and when needed). There’s not really any config to do, just selecting the choice of Working (and Action) Colour Space.

2 Likes

So you did end up sending me on the right path.

Working in TL-FX Image in ACEScct is straight forward if you change the whole working color space. Simply go into preferences / color mgmt and set the working color spaces to ACEScct instead of ACEScg and everything works as expected, and the LUTs I’ve been trying to use behave.

Only caveat is that this changes the whole project working space. Doing it on a shot basis still requires some CM configs that I have to untangle. But that’s good progress for certain. Thx.

Didn’t see the tree for the forest there :slight_smile:

1 Like

Glad to be of (accidental) help! :+1:

@allklier - I’m sure that you already know this but you can save out the color policy to use with future projects.

1 Like

what an I missing? just use a green colormanagemebt node to go to acesCCt and then do a gapFX above like before? image automatically works in whatever the source is tagged as

workingspace → log ->acesCCt

what I do however find weird that there is no way to do this using a colorspace transform , there isnt anyhting acesCCt in there - odd!

becasue you could do 1 colormagement node/CTF file possibly that goes acesCG->cct->lut->acesCG so you could apply it in log space while keeping the working space for image linear

Exactly- all these transforms, but not one of the frequently used ones. And labeling is ambiguous.

I now know how to do it for the whole project.

I like your idea of putting then LUT in a sandwich of a color mgmt node.

Use the ctf builder to make what you want, then export the concatenation to a single proprietary CTF file.
Build your own library.
I built a library of common things which I call the flame_colortoolkit.
I don’t invent anything, just the recipe to create my one click CTF.

Can only mark one post as ‘solution’. But this gets the same credit…

Here’s the solve: ColorMgmt in TL-FX. The LUT Sandwich

image

Despite the poor labeling, it does what one assumes. Verified by checking same logic in Resolve

Project is in standard ACEScg working space.

1 Like

At one point, custom ColorMgmt node setups did not get written when archived. You might want to test that before you go too far down the road. The workaround is to save it the custom setup out as a .ctf somewhere in your system drive project or on your network and wrangle by hand. Flame!

1 Like

@hBomb42 - This can still be true.

If you add a custom LUT at any point, the path to the custom LUT gets injected into the XML and cannot be removed from the UI.

If you restore these nodes from an archive, and the LUTs don’t exist in the expected path the nodes will be empty.

They cannot be reset either since the XML has already been corrupted.

If you are using the CTF builder with any of the CTF files that come with flame, then things are fine.

am I blind? i disnt see it under interchange yesterday but it was late, yea this is how i would setup a showgrade bascially .

I mean you can also just do that of course, setup a custom view transform with your lut build in, i often just use one “showgrade” that I grade underneath.

I think this interchange is “gamma” only as you are staying AP1 throughout ? Man i never ever uses acesCC/t … I just use Tlog or logC mostly for this

1 Like

Well, that’s been my issue. These descriptions are ambiguous and not helpful.

Because it could be either. The reference to AP1 is pointless if it’s just a gamma change.

A correct description, assuming that’s what it does, would be ‘ACEScg → ACEScct’.

Meaning AP1/linear in, AP1/cct out.

And if you look at the description, it remains ambiguous. No more clarity. And the CTF includes both a 3x3 matrix and a 1D LUT.

1D LUT makes sense for gamma change, but a 3x3 matrix would usually indicate a colorspace change.

So what is it? Based on my testing it’s seems to be what I think it is, but without looking up the specific 3x3 matrix values it’s not certain. A visual comparison seems to match.

Screenshot 2024-10-09 at 8.14.11 AM

Screenshot 2024-10-09 at 8.17.24 AM

Might be time for a feature request… FL-03384