i noticed we don’t have a nice post with images to point people to about this problem (see title). since recently @Billal asked about it again, i thought maybe an illustration helps. consider this picture i recently took in a museum:
it has severly blue lighting. the matrix is optimised for, uhm, maybe skin? cc24? certainly not for these extremes. you can see in the cie chart (top right), that those clipped blues are way beyond reason. of course messing with white balance (CAT16 here) doesn’t help:
i don’t have spectral measurements of this camera’s spectral sensitivity fuction, so i used vkdt mkssf to create one (using default parameters):
with that, you can create dcp profiles as @ggbutcher does. i created a look-up-table-based input device transform using vkdt mkclut:
and as you can see it keeps the starting points nicely within the spectral locus.
@niklasiivari recently vamped this code up to support a wider range of temperature interpolation, so you can now move relatively freely with the white balancing in this realm (staying within spectral locus):
…and then edit to taste, for instance add spektrafilm sim on top, now with reasonable starting point. note that this module contains now also a few spectral white balancing extra controls (because once we’re in spectral we might as well do things right):
hope that illustrates it well!
btw: while for spektrafilm/upsampling being inside spectral locus is enough, sometimes you’d want to limit your output to within rec2020 or even rec709. that’s possible with the gamut.pst, though i find it desaturates this particular image a bit much:
btw2: this is camera rgb (re-interpreting values as bt2020, you can tell they are inside the larger triangle in the cie diagram). while numerically well-behaved, the colour rendition is of course wrong:
btw3: i took screenshots of my 10bpc pq framebuffer here and tbh i don’t know what that does to the colours. looks about right on my screen, and you’ll get the idea following along the cie chart.








