ACEScct – A Quasi-Logarithmic Encoding of ACES Data for use within Color Grading Systems¶
Introduction¶
The Academy Color Encoding Specification (ACES) defines a common color encoding method using half-precision floating point values corresponding to linear exposure values encoded relative to a fixed set of extended-gamut RGB primaries. Many digital-intermediate color grading systems have been engineered assuming image data with primaries similar to the grading display and a logarithmic relationship between relative scene exposures and image code values.
This document describes a 32-bit single precision floating-point logarithm encoding of ACES known as ACEScct.
ACEScct uses values above 1.0 and below 0.0 to encode the entire range of ACES values. ACEScct values should not be clamped except as part of color correction needed to produce a desired artistic intent.
There is no image file container format specified for use with ACEScct as the encoding is intended to be transient and internal to software or hardware systems, and is specifically not intended for interchange or archiving.
For ACES values greater than 0.0078125, the ACEScct encoding function is identical to the pure-log encoding function of ACEScc. Below this point, the addition of a ”toe” results in a more distinct ”milking” or ”fogging” of shadows when a lift operation is applied when compared to the same operation applied in ACEScc. This difference in grading behavior is provided in response to colorist requests for behavior more similar to that of traditional legacy log film scan encodings.
Scope¶
This document describes a 32-bit floating point encoding of ACES for use within color grading systems.
Equivalent functions may be used for implementation purposes as long as correspondence of grading param- eters to this form of log implementation is properly maintained. This document is intended as a guideline to aid developers who are integrating an ACES workflow into a color correction system.
References¶
The following standards, specifications, articles, presentations, and texts are referenced in this text:
- ST 2065-1:2021 - SMPTE Standard - Academy Color Encoding Specification (ACES)
- RP 177:1993 - SMPTE Recommended Practice - Derivation of Basic Television Color Equations
- 754-2019 - IEEE Standard for Floating-Point Arithmetic
Specification¶
Naming conventions¶
The quasi-logarithmic encoding of ACES specified in this document shall be known as ACEScct.
Color component value encoding¶
ACEScct values are encoded as 32-bit floating-point numbers. This floating-point encoding uses 32 bits per component as described in IEEE 754.
Color space chromaticities¶
ACEScct uses a different set of primaries than ACES RGB primaries defined in SMPTE ST 2065-1. The CIE 1931 colorimetry of the ACEScct RGB primaries and white are specified below.
Color primaries¶
The chromaticity values of the RGB primaries (known as AP1) shall be those found below:
R | G | B | CIE x | CIE y | ||
---|---|---|---|---|---|---|
Red | 1.0 | 0.0 | 0.0 | 0.713 | 0.293 | |
Green | 0.0 | 1.0 | 0.0 | 0.165 | 0.830 | |
Blue | 0.0 | 0.0 | 1.0 | 0.128 | 0.044 |
White point¶
The white point shall be:
R | G | B | CIE x | CIE y | ||
---|---|---|---|---|---|---|
White | 1.0 | 1.0 | 1.0 | 0.32168 | 0.33767 |
ACEScct¶
The following functions shall be used to convert between ACES values, encoded according to SMPTE ST 2065-1, and ACEScct.
Encoding Function¶
ACES \(R\), \(G\), and \(B\) values shall be converted to \(lin_{AP1}\) \(R\), \(G\), and \(B\) values using the transformation matrix (\(TRA_1\)) calculated and applied using the methods provided in Section 4 of SMPTE RP 177:1993.
\(lin_{AP1}\) \(R\), \(G\), and \(B\) values shall be converted to ACEScct values according to Equation 1.
Note
Equation 2 shows the relationship between ACES \(R\), \(G\), and \(B\) values and \(lin_{AP1}\) \(R\), \(G\), and \(B\) values. \(TRA_{1}\), rounded to 10 significant digits, is derived from the product of \(NPM_{AP1}\) inverse and \(NPM_{AP0}\) calculated using methods provided in Section 3.3 of SMPTE RP 177:1993.
AP0 are the primaries of ACES specified in SMPTE ST 2065-1.
AP1 are the primaries of ACEScct specified in Color space chromaticities.
Decoding Function¶
ACEScct \(R\), \(G\), and \(B\) values shall be converted to \(lin_{AP1}\) values using Equation 3.
\(lin_{AP1}\) \(R\), \(G\), and \(B\) values shall be converted to ACES \(R\), \(G\), and \(B\) values using the transformation matrix (\(TRA_{2}\)) calculated and applied using the methods provided in Section 4 of SMPTE RP 177:1993.
Note
Equation 4 shows the relationship between ACES \(R\), \(G\), and \(B\) values and ACEScct \(R\), \(G\), and \(B\) values. \(TRA_{2}\), rounded to 10 significant digits, is derived from the product of \(NPM_{AP0}\) inverse and \(NPM_{AP1}\) calculated using methods provided in Section 3.3 of SMPTE RP 177:1993.
AP0 are the primaries of ACES specified in SMPTE ST 2065-1.
AP1 are the primaries of ACEScct specified in Color space chromaticities.
Appendices¶
Appendix A: Application of ASC CDL parameters to ACEScct image data¶
American Society of Cinematographers Color Decision List (ASC CDL) slope, offset, power, and saturation modifiers can be applied directly to ACEScct image data. To preserve the extended range of ACEScct values, no limiting function should be applied with ASC CDL parameters. The power function, however, should not be applied to any negative ACEScct values after slope and offset are applied. Slope, offset, and power are applied with the following function.
Note
ACEScct is not compatible with ASC CDL values generated on-set using the ACESproxy encoding. If there is a need to reproduce a look generated on-set where ACESproxy was used, ACEScc must be used in the dailies and/or DI environment to achieve a match.
ASC CDL Saturation is also applied with no limiting function: