The 3d luts for ACES-cg..?

Hi, I’m new here, and I’m a beginner of ACES system.
I’m using ACES 1.2 (ACES OCIO) with Blender 3.6
I’m getting used to ACES system, and I have couple questions.

(1) I’m filming the actors via my Sony camera with slog2-sgmut.
And whenever I’m importing the actor’s video into ACES installed Blender,
I set the video’s [color-space : Input - Sony - S-Log2 - S-Gamut] in Blender.

And this is how we call ACES IDT I guess. But since there’s no ‘ODT’ in Blender 3.6,
I guess the Blender automatically changes the video’s slog2 format to ACES-cg system(Linear) as soon as I set the [color-space : Input - Sony - S-Log2 - S-Gamut].
Do I understand it correctly so far?

(2) I have my own lut for my slog2 videos (actor’s video).
So basically I’m using like Actor’s video = slog2 + my lut in Davinch Resolve.

But whenever I’m forcibly import my lut into ACES installed Blender, the color goes off.
Something like… red color over-boosted…etc
I believe it’s because the luts were made for sRGB/Rec709 based system which is un-linear.

So…is there any possible way that we can transfer the sRGB/Rec709 color-based Luts into ACES-cg linear system??

Hi Joe welcome!

The ODT is set on the Render->Color Management tab. This should match the display you are working on, or better yet, match your target deliverable which you will also have your monitor calibrated to.
image
(View Transform)

The way I believe it works is that the OCIO config lists ACEScg as the ‘scene-linear’ role, thus this is the space Blender will render in.

A custom look for ACES is possible but the best way to do this would be to create the look in the ACES grading space ACEScct which would still be scene-referred. So Camera → ACEScct [create a look and bake LUT] → ODT. You’d use the ODT while grading but you wouldn’t bake it into the LUT.

Then in OCIO you could add it as a look with it’s process space being ACEScct to match the space it was graded in. This should give you the exact same result.

If you already have a look that is both creative but also converts the image from SLog2 to Rec.709 this becomes trickier but would still be possible. It’s just that since the look also bakes tone mapping for that particular display into the image, it’s not as clean as it could be anymore and you wouldn’t be able to effectively deliver for SDR+HDR for example.

The way to set it up would be to make sure the LUT is applied in it’s expected input space and the inverse of the ODT it ends up in should be applied afterwards. You can do this inside OCIO but a simpler way I can think of is to create a new LUT in Resolve.

  • Make sure in Resolve you have set LUT interpolation to Tetrahedral.
  • Set color management to DaVinciYRGB
  • Add a clip to the timeline and jump to the color page
  • Add a CST node with AP1/ACEScct to SLog2/Sgamut and set the rest to none/off except Chromatic Adaptaion
  • Add a node with your look LUT
  • Add an ACES Transform node with Rec.709 to ACEScct
  • Rightclick the clip on the colorpage and Generate LUT as 33 or 65 cube
  • Add the new LUT which now expects ACEScct as IN and goes ACEScct OUT to your OCIO looks with processing space ACEScct. Also make sure there LUT interpolation for it is set to tetrahedral.

Let me know how that goes!

ACES 1.2 is built different from ACES 1.3. The old config has all things defined as a color space. You’ll have to add the look category yourself. The color_timing, compositing_log and texture_paint roles (first section of the config) should also be set to ACES - ACEScct

looks:
  - !<Look>
    name: LMT_showLUT
    process_space: color_timing
    transform: !<FileTransform> {src: showLUT.cube, interpolation: tetrahedral}

This is what you’d add to the config. And the LUT’s filename can be changed to match yours ofcourse.
You can add the looks section right above the color spaces section so you can navigate to it fairly quickly.

So… Regarding this, you meant this right?

As far as I’m seeing herre, I can’t see the [Chromatic Adaptaion] within CST in Davinch Resolve.
But so far good enough to ignore?

Thank you very very much for the feedback!
There’s couple points I’m lost…

Here’s my config.ocio followed by your direction.

roles:
color_picking: Output - sRGB
color_timing: ACES - ACEScct
compositing_linear: ACES - ACEScg
compositing_log: ACES - ACEScct
data: Utility - Raw
default: ACES - ACES2065-1
matte_paint: Utility - sRGB - Texture
reference: Utility - Raw
rendering: ACES - ACEScg
scene_linear: ACES - ACEScg
texture_paint: ACES - ACEScct

(1) Default : ACES - ACES2065-1 means, the whole blender scenes and sequencer works in ACES2065-1?

But suddenly it uses ACES - ACEScg when it comes to rendering the whole scene?

(2) Before I followed your direction, I wrote the lut (looks) like this in config.ocio

  • !
    name: My_Lut
    process_space: Input - Sony - S-Log2 - S-Gamut
    transform: !
    children:
    - ! {src: My_Lut.cube, interpolation: tetrahedral}
    - ! {src: Input - Sony - S-Log2 - S-Gamut, dst: Output - Rec.709}

Because I thought I need to change the video color from sony’s slog2-sgamut to Rec 709 by using My_Lut.cube due to my usual pattern in Davinch Resolve.

But you wrote simply process_space: color_timing

And it works better than my one. (there’s no red color over-boost)

The biggiest difference was like
process_space: Input - Sony - S-Log2 - S-Gamut
VS
process_space: color_timing

Then, what does it mean to be like
process_space: Input - Sony - S-Log2 - S-Gamut ??

I’m on my phone now so not the prettiest reply sorry about that.

You had it correct. It’s called white point adaptation that should remain checked!

Default is the fallback colorspace if no other role condition is met I believe. And you may be correct that it’s the rendering role that decides the rendering space:) I’ve never tested changing this but sounds more sensible than the scenelinear role.

That is actually how you’d do it inside OCIO so it seems you already understood how that works! You may see a difference because the OCIOv1 ACES 1.2 config is LUT based so doing display inverses may be less accurate than making the sandwich inside Resolve and creating an ACEScct in/out LUT out of it.

Process space means that OCIO will convert to that space before it applies the defined operations such as loading the LUT. After all operations are done it will convert from that space back to the native config space ACES 2065-1.

Hm now that i look at it again. The second transform you did in the look shouldnt that be the other way around? Assuming your lut applies the look + converts the image to Rec709. You need to end up back in SLog2Sgamut within the look stack otherwise subsequent conversions will not be correct because your process space is SL2/SGmt

I just fully followed your direction after you told me of ‘Whte Point Adaptatior’

And here’s funny thing happens haha.

The Luts I include in my OCIO was targetted to convert slog2 to Rec709.
So it works like this [slog2 → lut color → Rec709]

But after I convert the luts to ACEScct, I see the luts only works within ‘sRGB’ mode in Blender.
image

Only if I select [sRGB] in the View Transform It works.
If I select slog2_sgamut, then the color goes gray-ish even though I applied the luts in look
(BTW, I modified my OCIO to bring the slog2_sgamut into View Transform, due to it was defined in color-space in OCIO)

To be honest, I was actually thinking to select the slog2_sgamut as a View Transform,
and select any of my luts in look
like this:
image

Cause it looks more logical and intuitive to me haha.

Regardless what way it is,
I just want to double check the direction you shared:

In this direction,

View Transform: sRGB
Look: My_Lut

This is the way correctly works right??

It is not really the intended way to use ACES. The view trasform is the ODT which should always define a display not a camera space. To be fair, you’re already “hacking” your way in ACES since you arent using the RRT to tonemap the image but rather use whatyou have baked in the LUT. But for pipeline clarity you need to keep it theway I suggested. You don’t need the slog in the views. Just your LUTas a look and the view set to match your display. Whether you do thatthrough my method creating an ACEScct version of the LUT or via the conversion stack method you showed me inside OCIO config, both are viable.

Thank you very much for the answer!
Ok so, summarize what you said.
Even though my luts were made for slog2 to rec709, I need to set the View Transform as sRGB, due to View Transform is not Camera Space

Before I go, I just want to make sure.
I’m importing actor video(slog2_sgamut), everything is transparent but the actor, in blender.
So blender’s shader tab, is it correct to change the video’s color-space as Input sony slog2 sgamut?
Then blender willl automatically change slog2 video → ACES , right?
So I can blend its color with other objects in the scene,
Cause now everything of the scene, include the actor video, unified into ACES color system.

And if I add lut into Look, then it adds my lut’s color in my blender’s one. But eventually convert it to sRGB as long as I set the View Transform: sRGB
( ACES + Lut → Convert to sRGB)
So basically it’s the same color as in Davinch Resolve apply the same lut.
Did I understand it correctly?

That sounds about right yes:)
It’s always good to check and verify all in/out works as you expect it to between Blender, Resolve and also going in to post after making EXR renders.

1 Like

Thank you very very much for the explanation! it was a big help :slight_smile:

1 Like