Bit Depth Considerations

Alex, those are great comparisons, amazing what the compression model does.

To a side topic I am still thinking about precision.

Half float is 16-bit, however there is one sign bit and 5 exponent bits which leaves 10 fraction bits. This can be thought of as using a 10-bit integer for differentiating the increments in a range of tonality which can be “floated” over an extended range of the 5-bit exponent. The “float” will allow for moving up and down a range, however the number of individual steps will remain the same. The precision remains fixed and at a level that I suspect might be too low when dealing with HDR ranges and for the discrimination of values important to the perception of textures.

For example I will present some practical observation from my photographic experiences.

I have an extensive background in Platinum/Palladium photographic printmaking as well as making what might now be termed analog negatives (optical/chemical film.) I also, for several years, explored making digital negatives (camera negative to digital scan to ink printed onto substrate) for this process. (The Pt/Pd process requires much UV light for exposure so printing required a contact negative (same size as resulting print.)

One thing I found from this exploration of Digital was that, whereas a gelatin silver print could be satisfactorily gleaned from a 10-bit digital ink-based negative, a Pt/Pd print would require at least 14-bits. I tried many ink printing techniques but could not successfully get a 14-bit ink printed digital negative. The Collotype Process comes very close (from examining such prints) but I did not have the means to pursue that.

Now why the 14-bit may be asked. That was what I determined necessary to deliver the character of the Pt/Pd print using a digital ink-based negative.

Pt/Pd prints have an inherent quality to discern very subtle changes in tone. Although not as white nor as black as a gelatin silver print, the Pt/Pd print will present many more increments of value between those limits. This is why a Pt/Pd print will deliver a much more tactile feel and perceived depth of the image, the qualities sought after from this process. (Of other photographic processes only the Carbon print can rival such qualities.)

I feel that delivering in HDR wide color can be, in a manner, like going from a gel-silver print to a Pt/Pd print, not in that the dynamic range has expanded (for with Pt/Pd it shrinks) but that there must be more steps/increments. This now presents double the problem as more bit depth will be needed for the larger dynamic range and more bit depth will be needed to provide for more increments of tone.

Another place where an increase in incremental tone values is desired is in the lower (darker) tones. Even though these extra increments may not be readily apparent VFX has shown advantage of having them as I surmise the apparent tactile quality will as well.

10-bit depth is not enough for HDR. And it will fail further when more steps are needed to provide for the subtle texture quality as well as providing for more increments in the lower tones.

Tactile quality (or micro texture) is valuable in helping draw one into and keep involved in the story. And not only that, it can help manipulate one’s feelings and perception. An orange must have the appropriate amount of tactile quality to feel like an orange. Skin must have appropriate tactile quality to appear alive. Film has been able to provide enough, digital can but, in the current circumstances, is being held back by limited precision. If tactile quality and texture are not of importance then why did ARRI go to the effort to make such an improvement in their last camera.

Please keep in mind that texture and tactile quality are not just contrast. They rely on subtle discrimination of tonal and color values.

Another field where this tactile quality is appreciated is medical imaging where 16-bit look up tables and calculations are utilized.

And another analogous example would be when having to move from 8-bit to 10-bit to cover P-3.

10-bit is just not enough for HDR. So whether 12, 14, 16 bit or even 11, half float is not going to be enough. Unfortunately this means that significantly more resources (hardware, energy and time) will be necessary. Calculations will just need a bit more precision (pun intended.) And although much of tactile quality concerns could be topics for ACES 3.0, it seems necessary that the calculations for now (ACES 2.0) should be of a higher precision.

It might be a good test to run the models with float32 and determine if there are notable fine increments worth preserving and also if any issues with rounding errors or whatever then become solved.

There’s a difference between file storage and processing bit-depth. ACES2065-4 does specify using 16-bit half float in OpenEXR, but the processing in ACES has always been specified as formulas, to be performed at the highest precision possible within the software or hardware’s capabilities. I don’t think we’re ever limiting any calculations to 16-bit precision, only using the definition of half float to establish reasonable values and limits for those that might be encountered when bringing in an ACES file. There are also considerations based on how scene-referred data is distributed and how the precision is allocated which make half float a completely reasonable choice and quite different from encodings intended for display, but that is not at all connected to this group’s task at hand.
I will split this and other threads related to bit-depth to their own thread to keep this one focused on its title.

IEEE Floating point precision is a complex problem when you consider normalised as well as sub-normals, but 16 bit half floats are a reasonable compromise for images.

Within the normalised floating point range you have 11 bits of precision per stop which can result in a n acceptable image for viewing, but yes some image processing needs more,

Sometimes you are better having a 16 bit log encoding as this can be ‘smoother’ than what happens at exponent boundaries in half float.

I’d always question using it for AOVs or other data channels without understanding how things were intended for use. Even 32 bit floats can run into issues when representing geometric positions when modelling geometry e.g. 2 space ships in a long distance battle, your camera can move between a close up of one to the other involving huge scale differences (1 AU is ~1.496e+14 mm) and the impact of moving from one coordinate to the other can end up with precision issues in producing a smooth camera move depending on what your unit scale is. Normals also suffer from these types of issue.

I guess what really perked my concern is that at the beginning of the flow chart for Input RGB is the box “Clamp to Half Float Limits.” ! would also suspect that using a GPU half float for output is very different than using the GPU at half float for calculations earlier in the process. I would hope this is not clamping or reducing useful RGB from the camera.

As to perhaps a semi-counterpoint to that presented about bit-depth in the meeting Wednesday 11/16, I call attention to how most of the steps of gradation are in the upper (lighter) end with scarcity in the lower.

I have not felt strongly about the usefulness of values high above 1000 nit and have felt that more was needed in the lower end. After all, the eye only sees so much and closes the iris when light gets bright. As well, it seems theaters are likely to keep well below 400 nit for HDR. So then why not apply the bits used in the higher end to give more gradient to lower (and mid) portions. And not just as gradation in luminance, but hue and saturation as well. I would hope that each, or even a few, steps would be indistinguishable meaning several would be required to give a noticeable change.

This shifting of steps to get finer gradation in certain portions is already in use for aerial and medical imaging. This is likely more for discussion for ACES 3.0, but I hope to maybe stir some thinking.

The PQ and HLG curves both already do this. Both Dolby and BBC R&D made plots (obviously each designed to emphasise the benefits of their own approach) showing their curve plotted against the Barten ramp of Just Noticeable Differences.

16Bit half float especially nice along with HDRI…

But maybe 11bit and lower bit depth is enough for HDRI values higher than 0.5 :thinking:

I think that what really matters with linear data is the relative difference between adjacent code values, not the absolute difference. If you look at that table, because the absolute differences remain the same for integer encoding, the relative difference (interval / absolute value) may be better in the higher part of the 0-1 range, but they are terrible for the smaller values.

That’s the idea behind the design of float encodings. The absolute intervals are the same across a certain range, and then once it gets down to a threshold the intervals halve in size. And the thresholds are designed to keep things way below noticeable differences, as shown on this plot from a Dolby presentation of various encodings against the Barten threshold of perceptibility (dotted line).

Linear 16-bit integer encoding is not shown on that plot, but if it were added it would cross either side of the Barten threshold, being way above it for smaller values, but below it for higher ones.

1 Like