Unreal Color Pipeline
Table of Content
1. Gamut & Gamut Mapping
In computer graphic, colors and its saturations are commonly visualized as points on this chart commonly referred to as the xy horseshoe:
This shape shows all the colors a human eye can see. We can show the gamut by plotting the most saturated Red, Green and Blue primaries as xy coordinates to compare color spaces and devices. The line in the middle shows commonly used whitepoints that go from 3000k - 9000k (check).
Michael R. Pointer (1980)
In 1982 (check)

(Note: colors are expressed as threedimensional systems (with Yxy where Y is luminance and x,y color coordinates - and just showing the primaries as two dimensional points can be deceiving, so these graphs should be used with caution when comparing gamuts)
Common color spaces are sRGB/Rec709, Rec2020 and ACEScg (ACES AP1) as seen here:
(insert graph)
Additionally there are various other color spaces that are used for calculation and contain color primaries that lay outside the visible spectrum such as ACES AP0 as well as color spaces used for cameras such as ARRI wide gamut:
(insert graph)
- Locus Explanation (2D & 3D space)
- sRGB/Rec709 & Rec2020 & ACEScg
- Whitepoint
- Moving between Gamuts, Gamut mapping, color transforms

threedimensional model, overlapping points can lead to wrong conclusions:


2. Response Curve & Tone Mapping
- sRGB & Rec709
- PQ
- 8 vs 10/12bit data compression
- Toe/Knee



https://www.enspecifications.com/product/SMPTE-ST-2084-2014/
https://www.lightspace.lightillusion.com/uhdtv.html
About ST2084 and PQ Implementation. · Issue #401 · colour-science/colour · GitHub

3. LED Color Reproduction
- CRI spikes
- Strategies to overcome this limitation
4. Signal Flow
- Signal flow overview
5. Camera & Wall Calibration
- Strategies for Camera calibration
- 3x3 Matrix
- 3x 1D Lut
- 3D Luts
| 1D LUT | only lightness, contrast, gamma | no saturation |
|---|---|---|
| 3x3 MATRIX | color gamut transform, only global | no non-linear transform |
| 3D LUT | both gamut & curve, non- linear transforms | can be large, probe to non-obvious bumps |


https://www.lightspace.lightillusion.com/luts.html
6. Measurements Darkbay - Practical example
- CRI
- Primaries
- Max Brightness
CRI95
| Panel | CRI | R1 | Nits | x | y | CCT |
|---|---|---|---|---|---|---|
| Ruby | 38.4 | -161.7 | 101.66 | 0.3181 | 0.3283 | 6363.6 |
| 37.6 | -163.3 | 1467.54 | 0.3198 | 0.3295 | 6126.5 | |
| Panel | CRI | R1 | Nits | x | y | CCT |
|---|---|---|---|---|---|---|
| Ruby | 38.4 | -161.7 | 101.66 | 0.3181 | 0.3283 | 6363.6 |
| 37.6 | -163.3 | 1467.54 | 0.3198 | 0.3295 | 6126.5 | |
7. LED Limitations
- Color reproduction / CRI


Ruby 2.3 / Megapixel

8. Scanlines
9. Further readings/links
https://docs.unrealengine.com/4.27/en-US/WorkingWithMedia/ManagingColor/
https://docs.unrealengine.com/4.27/en-US/WorkingWithMedia/IntegratingMedia/InCameraVFX/InCameraVFXCameraCalibration/

Investigate
- “if you use PPM, it is preferable to use it Before Tonemapping.”
- How to account for individual color differences?
- Widest vs. Rec2020 Gamut on Megapixel Processors?
- Strategies to account for low level noise
- Tonemapping
- CRI, SSI, TLCI, and TM30

https://learn.foundry.com/nuke/content/reference_guide/color_nodes/generatelut.html
OCIO in Viewport
Once you've adjusted these settings, the Viewport will disable Tone Curve and insert color conversion into the post processing stage of rendering. It does this right after UE applies the Tone map but before everything else.
http://library.imageworks.com/pdfs/imageworks-library-cinematic_color.pdf
9. Texturing Workflow
https://community.acescentral.com/t/proper-texturing-workflow-for-unreal-engine/3145

https://community.acescentral.com/t/proper-texturing-workflow-for-unreal-engine/3145



