Overview of Output Transform Structure¶
Overall Structure¶
The Output Transform is a concatenation of two separate submodules, the "Rendering Transform" and the "Display Encoding Transform" (Figure 1).
The Rendering Transform determines the image appearance, and is informed by the luminance of peak white as well as the limiting gamut (primaries and white point).
The Display Encoding Transform's role is to simply encodee the colorimetry produced by the Rendering Transform so that it is displayed as intended according to the device configuration (i.e. display primaries, calibrated white point, EOTF).
flowchart LR
id1((("ACES
2065-1")))-->id2{{"Rendering
Transform"}}
subgraph box1 ["Output Transform"]
id2 -->|"CIE
XYZ"|id3["Display
Encoding"]
end
id3 -->|"Code
values"|id4(Display)
Figure 1: The two main submodules of an Output Transform.
Rendering Transform Structure¶
The Rendering Transform portion of the Output Transform follows a progression as seen in Figure 2
flowchart LR
B[ACES
to
JMh]
C["Tonescale
(J Only)"]
D["Chroma
Compression
(M Only)"]
E["Gamut
Compression
(J & M)"]
F[JMh to
Limiting RGB]
subgraph box1 ["Rendering Transform"]
direction LR
B --> C --> D --> E --> F
end;
Figure 2: The main processing modules in the Rendering Transform.
The Rendering Transform applies tone-mapping and adjusts colorfulness based on the luminance and boundaries defined by the choice of target rendering gamut.
The Rendering Transform operates in a "JMh" color correlate space derived using a simplified version of the Hellwig 2022 Color Appearance Model (CAM). In the JMh color space, J correlates to lightness, M is colorfulness, and h is hue.
Operating in this JMh space allows the rendering to meet the design requirements established for ACES 2, including hue preservation and achieving a better "match" between outputs. Applying the tone-mapping to only the J component and adjusting M independently allows for the hue of the original ACES value to be maintained into the rendering space and on to the display.
Combined Steps¶
Each step is explained thoroughly on its own page.
flowchart LR
A("ACES
RGB
Input") -->
B[ACES
to
JMh] -->
C["Tonescale
(J Only)"] -->
D["Chroma
Compression
(M Only)"] -->
E["Gamut
Compression
(J & M)"] -->
H["White
Limiting"] -->
F["Display
Encoding"] -->
G(Display
RGB
Output);