imageworks / OpenColorIO-Configs

Color Configurations for OpenColorIO
opencolorio.org
449 stars 807 forks source link

Alternative to Log2 shaper for aces Output colorspaces #18

Closed michdolan closed 4 years ago

michdolan commented 5 years ago

The current use of Log2_48_nits_Shaper_to_linear.spi1d as the Output colorspace shaper has been problematic in our limited use of it at Imageworks. Particularly in animation, really saturated pixels with components well outside the [~0, ~16] input range are clipped, resulting in artifacts.

Instead we use an ACEScct shaper in our own aces configs, which performs very well in the same edge cases. I know other studios have made similar choices, or used another alternative shaper.

For future versions of the aces config (1.1, etc.), it would be worth considering an alternative. If example images are needed for stress testing, I could see about providing some.

hpd commented 5 years ago

Alternate shapers are supported by the config generation system. The two current options are Log2 (the default) and PQ. In fact, the HDR ODTs use the PQ shaper, even if you specify that Log2 shaper for the rest of the output transforms.

This function is used to generate the shaper LUTs https://github.com/imageworks/OpenColorIO-Configs/blob/master/aces_1.0.3/python/aces_ocio/colorspaces/aces.py#L1489

This function combines the shaper LUT and CTL (this is crucial) with the Output Transform https://github.com/imageworks/OpenColorIO-Configs/blob/master/aces_1.0.3/python/aces_ocio/colorspaces/aces.py#L1105

If you have a modification to the config that adds ACEScct as a shaper option, it would be gladly accepted.

One more thing. This script https://github.com/imageworks/OpenColorIO-Configs/blob/master/aces_1.0.3/python/bin/generate_comparison_images can be used to run a given image, like an identity 3D LUT image for example, through a generated config to compare the results of the config with the original CTL.

KelSolaar commented 5 years ago

I have done some tests with different covered range for the Log2 shaper, something like [-6.5, +10] seems to be working ok: https://acescentral.com/t/aces-1-1-discussion-tell-us-what-you-think/1421/11

michdolan commented 5 years ago

Thanks @KelSolaar ! I'll try to put this through some paces on some problem shots I have.

KelSolaar commented 5 years ago

The built config should be using ACEScc range: [-7.25,10.27], so at this stage, the difference with ACEScct is really just the toe.

KelSolaar commented 5 years ago

This was addressed in 1.1 on the colour-science fork.

michdolan commented 4 years ago

Thanks @KelSolaar !