ACEScct - A Quasi-Logarithmic Encoding of ACES Data for use within Color Grading Systems¶
Introduction¶
ACES2065-1 uses half-precision floating point values corresponding to linear exposure values encoded relative to a fixed set of extended-gamut RGB primaries. However, many digital-intermediate color grading systems have been engineered assuming image data with primaries more similar to the grading display and with a logarithmic relationship between relative scene exposures and image code values.
ACEScct utilizes a piecewise function with logarithmic and linear segments to transform linear ACES values into a non-linear representation. In addition, ACEScct uses the smaller AP1 primaries in order make encoded values better suited for color grading.
ACEScct maintains values above 1.0 and below 0.0 to encode the entire range of ACES values. The ACEScct value of 1.0 corresponds to an ACES value of ~222 or just over 10 stops above middle gray. 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 only. ACEScct is not intended for interchange or archiving.
Note
For ACES values greater than the break point of 0.0078125, the ACEScct encoding function is identical to the pure-log encoding function of ACEScc. Below the breakpoint, 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 was provided in response to colorist requests for behavior more similar to that of traditional legacy log film scan encodings and "camera log" encoding functions.
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 parameters 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.
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 the ACES RGB primaries defined in SMPTE ST 2065-1.
Color primaries¶
The CIE x,y chromaticity values of the RGB primaries shall be as listed in Table 1.
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 | 1.0 | 1.0 | 1.0 | 0.32168 | 0.33767 |
Table 1.ACEScct RGB primaries and white point chromaticity values
Note
These primaries and white are commonly referred to as "AP1". "AP0" is the primaries and white associated with the Academy Color Encoding Specificiation (SMPTE ST 2065-1).
ACEScct¶
The encoding and decoding functions for ACEScct consist of a color conversion matrix between AP0 and AP1 and the piecewise function that transforms between linear and the quasi-log encoding of ACEScct.
Encoding Function¶
Linear AP0 \(R\), \(G\), and \(B\) values shall be converted to linear AP1 \(R\), \(G\), and \(B\) values using the transformation matrix (\(TRA_1\)) calculated and applied using the method defined in Section 4 of SMPTE RP 177:1993.
Linear 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.
- where:
- \(A = 10.5402377416545\)
- \(B = 0.0729055341958355\)
- \(X_{break} = 0.0078125\)
- \(Y_{break} = 0.155251141552511\)
\(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:
References¶
The following standards, specifications, articles, presentations, and texts are referenced in this text: