Those aren’t necessarily the max distances if you include the noisy shadows. Here are the ACEScg values (no gamut mapper) for a particularly bad pixel in a dark area of Fabián Matas’ ALEXA Mini nightclub shot:
>>> RGB_ACEScg = [-0.00624, -0.00199, 0.00006]
>>> ach = np.max(RGB_ACEScg)
>>> diff = ach - RGB_ACEScg
>>> diff
array([ 0.0063 , 0.00205, 0. ])
>>> diff_norm = diff / ach
>>> diff_norm
array([ 105. , 34.16666667, 0. ])
When max(rgb)
is very small, normalising the distance by dividing by it produces very large numbers. I assume this is the logic behind the shadow roll off. But this means that negatives remain in the noise floor, requiring them to be dealt with in comp using another approach. Indeed if all three channels are negative, the normalised distance is negative (because you are dividing by ach = max(r, g, b)
which is still negative. So no roll off ever gets applied there.
Is this a problem? It certainly needs discussing. It doesn’t produce the coloured artefatcs that are the most obvious issue that we are combatting. But negative values are always potentially problematic, particularly if they are not immediately obvious.
This is similar to what I showed with the fire image during last night’s meeting. But it’s useful to show that it’s still an issue with a high end camera, not just a mid-range one like the FS-7.