Contrast LMT - Looking for Feedback

Hi all,

A group of us is looking to get broader feedback on a new “Contrast LMT” that @doug_walker has leading development of. The impetus for this LMT was some users seeking a drop-in adjustment to allow them to get the “finished” contrast of ACES 1 while still maintaining some of the other benefits of ACES 2.

To date, discussion of this work has occurred in the ACES Slack channel, with occasional updates given periodically at TSC meetings. We encourage you to join the ACES Slack channel if you have not done so already, but I’ll repost some of the key info here.

It’s worth stating clearly up front:

“this is a look, not the look”

While this Look is intended to be added to the aces-look repository, it should be thought of as any other Look, and is not intended to be a required piece of an ACES pipeline. It will, however, be a solid example of what a well-built LMT can look like.
We fully intend to provide additional example LMTs designed for specific use cases in the future. But for now, we’re limiting the scope and focus to just this one transform which will serve a specific use case. Just know there will be other options provided to allow “out-of-the-box” choices and to illustrate what is possible with Looks - but those will come in follow-on work.

Objective

This LMT is intended as a more refined replacement for the earlier sample contrast LMT that shipped with the initial ACES 2 release. That version did not hold up well in practice, so this is an attempt to provide a more refined and production-friendly version.

The goal is to get closer to the kind of “finished” contrast many grew accustomed to with ACES 1, while keeping the improved color behavior in ACES 2.

Feedback request

We’re looking for feedback on the colorfulness options to settle on the most appropriate adjustment option. The current OCIO config and DCTL provide a few options to compare, and are explained in the header comment section of the OCIO config.

The four looks provided are as follows:

  1. “AP1 curve” – Tonal adjustment is applied as an RGB curve in AP1 primaries
  2. “J curve” – Tonal adjustment is applied only to J, holding M and h constant
  3. “J curve + M gain” – Tonal adjustment is applied to J, with a constant 22% gain in M
  4. “J curve + M curve” – Tonal adjustment is applied to J, with an M gain that is a function of J

Options 1-3 are simpler but the current recommendation is option #4 the “J curve + M curve”.
All four options are mathematically straight-forward and have closed-form inverses.

Colorfulness objective: Keep saturation natural when the neutral scale is boosted, fixing the previous version’s tendency to oversaturate (especially skin tones)

After that is settled, we may issue an additional test config limited to looking only at tone scale + mid-gray options to finalize the contrast adjustment.

Tone scale objective: Add a sharper highlight rolloff for a more “finished” feel - roughly tracking ACES 1 contrast above mid-gray. Possibly adjust mid-gray placement a bit higher.

How to try it

OCIO

OCIO Config with multiple options for the Look Transform -
lmt_test1.ocio (45.5 KB)
Read the comments in the header for a description of the the options provided.

Note: The config requires OCIO 2.5.
For those without access to Flame or another app that supports OCIO 2.5, you can use OpenImageIO to process frames. Thanks to @zachlewis, it’s easy to install OIIO now via pip3 install openimageio and then use the oiiotool command-line program that it installs.

Here’s an example command to convert an ACES2065-1 OpenEXR file to an sRGB JPEG using a view with one of the look transforms from the config:

./oiiotool -i ACES_OT_VWG_SampleFrames.0074.exr --colorconfig lmt_test1.ocio --ociodisplay:from="ACES2065-1" "sRGB - Display" "ACES 2.0 - SDR 100 nits (Rec.709) - J curve + M curve" -o aces2-JcrvMcrv_0074.jpg

DCTL

Recognizing that the OCIO 2.5 requirement can be a bit of a hurdle for apps that don’t yet support it, Scott also put together a DCTL that matches the various options in Doug’s config to make it possible to test in Resolve.

What kind of feedback is helpful?

We are looking for feedback of the creative / preference variety:

  • Which options feel best?
  • Does it “look right” in practice?

If you have ideas for completely different technical approaches, that’s definitely welcome too, but we may spin those into separate threads so we can keep this one focused on refining this specific proposal. In fact, we’d love if anyone has interest in generating alternate LMTs to get involved, because as mentioned up top, providing more flexibility via LMTs is definitely on the roadmap.

1 Like

If the overall objective is to provide a starting point more closely to ACES 1 isn’t it about the whole range rather than sharper highlights?

I checked it out very briefly and felt that it looks off when the rest of the image remains exactly the same. While ACES 1 sort of has ‘the same highlights’ it’s overall contrast feels more natural and smooth when compared to ACES 2 which now looks a bit weird with that specific boost.

I had the same feeling that #4 is the best option if I were to pick one.
But I’d be curious to see if a broader ACES 1 contrast match is more effective.

@shebbe thanks for taking a look.

You’re right, and the highlight-only adjustment was intentional (at least for now). The plan is to validate the M adjustment options before introducing more tone scale variants, which would make the number of combinations to be evaluated overwhelming.

To focus testing, I created LMT_Test_OCIO_options.dctl to limits the options to those provided in the OCIO config.

If you want to check out with a full ACES 1 tone scale check LMT_Test_JM.dctl . It allows selecting a 1D look-up that will match the entire ACES 1 tone scale while still using the M-curve adjustment.

IMO, this is all just subjective preference. We can aim to select sensible defaults and follow on later to add contrast options (Low/Med/High) later.

I’ll defer to @doug_walker on any nuances in specific user requirements that sparked this request.

Ah thanks, I was not aware of the full context. The 1D LUT variant is indeed more what I was thinking.

I know it’s all in testing state now but I’m getting some artifacts in bright lights with the 1D LUT.

Win11/Resolve21beta/nvidia gpu