Closed
Description
As a first step, I said that 8 bits is the minimum for RGB and CMYK spaces. Much commercial software uses 8bits for CMYK, and the entire Web is on 8bit sRGB currently. The wider the gamut, the more bits are needed to avoid banding. If values are stored in linear-light you also need more bits compared to a gamma-encoded or L* encoded space (because the steps are unevenly distributed, perceptually).
But:
- 10 bits is better for P3 and a98rgb, to have the same spacing as 8bit sRGB
- 10 is suboptimal for 2020 but allowed; 12 is recommended, The Rec BT.2020 standard does not even allow 8, what should we do here
- prophoto-rgb really needs 16 due to the superwide gamut
For all of these, 16bit unsigned integer or half float is a more reliable and realistic storage format. So can we increase the minimum? Need implementer input here.
(Color.js uses JavaScript number, i.e. double precision float, for component value storage and calculation).