It is the default, and has always been.
This is now done by default, because an 8-bit JPEG can only show 12.7 EV of dynamic range, and so if we set the look curve below 0.0152, any values below that point will all get rounded to zero, and you’ll no longer be able to discern any details down there.
(darktable's filmic FAQ - #164 by Matt_Maguire)
If the signal value _v_is in 0…1, the encoding rule is:
- linear: encoded = 12.92 * v (linear component value), if v < 0.0031308
- ‘gamma = 2.4’ curved: encoded = 1.055*v^(1/2.4) - 0.055, otherwise
This value is then multiplied by the max. allowed by the file format (8-bit: 255, 16-bit: 65535), and rounded.
For 8-bit [0…255], the smallest linear value that gets encoded as 1 in an sRGB file can be determined as follows:
- the smallest value that gets rounded to 1 is 0.5.
- the maximum value in an 8-bit file is 255, corresponding to 100%
- then, 0.5 corresponds to 0.5 / 255 = 0.001960784 (0.196… %).
- finally, to reverse the encoding above (small values are multiplied by 12.92), that has to be divided by 12.92, yielding
minimal_linear_component_value = 0.001960784 / 12.92 = 0.000151763, which is then rounded to 0.0152% on the UI.
In other words, using 0.0152% won’t make your image foggy or faded. This square has a smaller rectangle in the middle. The square was filled with (0, 0, 0), the rectangle in the middle with (1, 1, 1):