Oklab Gamut Clipping - Making my own module

Oklab could be used to lower the saturation like in gamut clipping or gamut compression techniques without modify the perceptual hue

1 Like

I don’t know if it is super useful in my regular workflow. I primarily did this as a personal experiment to exercise my ability to write a module and learn about the oklab color space.

A couple of places I can see this module being used in vkdt is

  • fine tuning some color mappings that lie just past the rec2020 gamut.
  • [with some changes to the implementation,] clipping from rec2020 to something smaller like sRGB with some additional knobs to control how that compression is accomplished.

I can let @hanatos correct me, but I think the included colour module pretty much already does all this when performing gamut mapping. It’s implementation is based on the abney effect.

2 Likes

right… i mean… the saturation slider is kinda gamut aware, but only in this world. values outside spectral locus pose a problem. i haven’t been very motivated to try and come up with something that works beyond too… but in general it would of course be much nicer to have something that “just works” even when fed rubbish.

it follows the abney effect by using a lut constructed from spectra that have a main peak around the same wavelength. the observation/assumption is that surface reflectances keep their main lobe even under heavy indirect self-bounces. i.e. very rough surfaces still appear to have the same colour even though you’re looking at the reflectance spectrum multiplied to itself a couple of times. with that, it can walk the gamut in a couple of ways while keeping perceived hue (under this assumption) constant. unfortunately this kind of reasoning requires actual reflectance spectra (no negative energies).