|
| 1 | +.. |
| 2 | + SPDX-License-Identifier: CC-BY-4.0 |
| 3 | + Copyright Contributors to the OpenColorIO Project. |
| 4 | +
|
| 5 | + |
| 6 | +OCIO 2.4 Release |
| 7 | +================ |
| 8 | + |
| 9 | +Timeline |
| 10 | +******** |
| 11 | + |
| 12 | +OpenColorIO 2.4 was delivered in September 2024 and is in the VFX Reference Platform for |
| 13 | +calendar year 2025. |
| 14 | + |
| 15 | + |
| 16 | +New Feature Guide |
| 17 | +================= |
| 18 | + |
| 19 | +ACES 2.0 Output Transforms (PREVIEW RELEASE) |
| 20 | +******************************************** |
| 21 | + |
| 22 | +The Academy Color Encoding System has released a new major version with a completely new |
| 23 | +set of Output Transforms (which are the transforms that convert from ACES2065-1 to a display |
| 24 | +color space). These transforms are much more sophisticated than ACES 1 and include a |
| 25 | +sophisticated gamut mapping algorithm that takes advantage of recent work in color appearance |
| 26 | +modeling. The invertibility of the transforms is also improved. |
| 27 | + |
| 28 | +**ACES 2 support in OCIO 2.4.0 is labelled a "Preview Release" to indicate that this is a |
| 29 | +work-in-progress that is not yet ready for production use. Both the processing results and |
| 30 | +the API for it will likely change in OCIO 2.4.1 and future releases.** |
| 31 | + |
| 32 | +The OCIO config files for ACES 2 are still under development, but prototype configs for |
| 33 | +testing may be downloaded from `this PR on the OpenColorIO-Config-ACES repo. |
| 34 | +<https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES/pull/130>`_ |
| 35 | + |
| 36 | +A preliminary technical description of the ACES 2 Output Transform algorithm may be found |
| 37 | +`at this link. <https://draftdocs.acescentral.com/output-transforms/technical-details/>`_ |
| 38 | + |
| 39 | + |
| 40 | +Built-in Configs |
| 41 | +**************** |
| 42 | + |
| 43 | +An updated set of built-in CG and Studio configs is included in the 2.4 release. These include |
| 44 | +the updates from the OCIO Configs Working Group over the past year. The updates include: |
| 45 | + |
| 46 | +* Updated texture asset color space names, following the work of the ASWF Color Interop Forum. |
| 47 | + (The previous names for all active color spaces have been preserved via an alias.) |
| 48 | +* Making the display color spaces active (allowing for easier display-to-display conversions). |
| 49 | + |
| 50 | +Additional updates for the Studio config include: |
| 51 | + |
| 52 | +* Addition of the Apple Log camera color space |
| 53 | + |
| 54 | +Given that the ACES 2 support is still a work-in-progress, the built-in configs in 2.4.0 |
| 55 | +are based on ACES 1.3. Versions for ACES 2 are under development and are planned for the |
| 56 | +OCIO 2.4.1 release. |
| 57 | + |
| 58 | +For Users |
| 59 | ++++++++++ |
| 60 | + |
| 61 | +The following URI strings may be provided anywhere you would normally provide a file path |
| 62 | +to a config (e.g. as the OCIO environment variable): |
| 63 | + |
| 64 | +To use the updated :ref:`aces_cg`, use this string for the config path: |
| 65 | + ocio://cg-config-v2.2.0_aces-v1.3_ocio-v2.4 |
| 66 | + |
| 67 | +To use the updated :ref:`aces_studio`, use this string for the config path: |
| 68 | + ocio://studio-config-v2.2.0_aces-v1.3_ocio-v2.4 |
| 69 | + |
| 70 | +This string will give you the current default config, which is the latest ACES CG Config: |
| 71 | + ocio://default |
| 72 | + |
| 73 | +This string now points to this latest CG config: |
| 74 | + ocio://cg-config-latest |
| 75 | + |
| 76 | +This string now points to this latest Studio config: |
| 77 | + ocio://studio-config-latest |
| 78 | + |
| 79 | + |
| 80 | +Tool Enhancements |
| 81 | +***************** |
| 82 | + |
| 83 | +For Users |
| 84 | ++++++++++ |
| 85 | + |
| 86 | +* There are now Python Wheels available for Python 3.13 (Python 3.7 support will be removed soon). |
| 87 | + |
| 88 | +* There is a ``bitdepth`` argument to ``ocioconvert`` to control the processing and writing bit-depth. |
| 89 | + |
| 90 | +* There is a ``ociocpuinfo`` utility that prints info about the CPU in your computer, especially |
| 91 | + which SIMD intrinsics it supports. As with the other command-line tools, this is available as part |
| 92 | + of an OCIO install when building from source or via PyPI. |
| 93 | + |
| 94 | + |
| 95 | +API Enhancements |
| 96 | +**************** |
| 97 | + |
| 98 | +For Developers |
| 99 | +++++++++++++++ |
| 100 | + |
| 101 | +You may find the following additions to the OCIO API useful: |
| 102 | + |
| 103 | +* There is now a ``hasAlias`` method on the ColorSpace and NamedTransform classes. |
| 104 | + |
| 105 | +* The FileTransform class has a new static method ``IsFormatExtensionSupported`` that |
| 106 | + checks if a specific LUT format file extension is supported by OpenColorIO. |
| 107 | + |
| 108 | + |
| 109 | +New Fixed Function Transforms |
| 110 | +***************************** |
| 111 | + |
| 112 | +For Config Authors |
| 113 | +++++++++++++++++++ |
| 114 | + |
| 115 | +The following new styles are available for use with the FixedFunctionTransform: |
| 116 | + |
| 117 | +* ``FIXED_FUNCTION_ACES_OUTPUT_TRANSFORM_20`` -- This implements the part of the ACES 2.0 |
| 118 | + Output Transform that converts from ACES2065-1 to the intended linear values in the limiting |
| 119 | + primaries. (This requires further steps to get to the intended display colorimetry, typically |
| 120 | + a clamp, scale, and matrix.) It takes 9 parameters: peak_luminance (in nits), followed by |
| 121 | + the chromaticity coordinates for the limiting gamut: [ red_x, red_y, green_x, green_y, blue_x, |
| 122 | + blue_y, white_x, white_y ]. **This is a work-in-progress and may change or be removed in |
| 123 | + future releases.** |
| 124 | + |
| 125 | +* ``FIXED_FUNCTION_ACES_RGB_TO_JMH_20`` -- This implements the conversion from a linear RGB |
| 126 | + space into the JMh (lightness, colorfulness, hue) color appearance model space that is used |
| 127 | + in the ACES 2 Output Transform algorithm. It takes 8 parameters which are the chromaticity |
| 128 | + coordinates of the linear RGB color space: [ red_x, red_y, green_x, green_y, blue_x, |
| 129 | + blue_y, white_x, white_y ]. **This is a work-in-progress and may change or be removed in |
| 130 | + future releases.** |
| 131 | + |
| 132 | +* ``FIXED_FUNCTION_ACES_TONESCALE_COMPRESS_20`` -- This implements the part of the ACES 2 |
| 133 | + Output Transform algorithm that modify the tonescale and chroma of the image when mapping from |
| 134 | + the scene-referred to display-referred image state. It takes one parameter: the peak_luminance |
| 135 | + of the target display device (in nits). **This is a work-in-progress and may change or be |
| 136 | + removed in future releases.** |
| 137 | + |
| 138 | +* ``FIXED_FUNCTION_ACES_GAMUT_COMPRESS_20`` -- This implements the part of the ACES 2 Output |
| 139 | + Transform algorithm that applies gamut compression to the target display gamut. It takes |
| 140 | + the same 9 parameters as ``FIXED_FUNCTION_ACES_OUTPUT_TRANSFORM_20``. **This is a work-in-progress |
| 141 | + and may change or be removed in future releases.** |
| 142 | + |
| 143 | +* ``FIXED_FUNCTION_LIN_TO_PQ`` -- This is the curve for SMPTE ST-2084 (PQ). It is scaled with 100 nits |
| 144 | + at 1.0. Negative values are mirrored around the origin. It takes no parameters. Note that this |
| 145 | + implementation is slower (especially on the CPU) than the Built-in Transform that implements |
| 146 | + the same function via a LUT1D rather than via a formula: ``CURVE - LINEAR_to_ST-2084``. The |
| 147 | + only advantage of the Fixed Function is that it does not use texture memory on the GPU. |
| 148 | + |
| 149 | +* ``FIXED_FUNCTION_LIN_TO_GAMMA_LOG`` -- This curve contains a parametrized gamma and log segment. |
| 150 | + It takes 10 parameters and is capable of implementing both the Apple Log curve and the OETF for |
| 151 | + Hybrid Log Gamma (HLG). The parameters are: |
| 152 | + [ mirrorPt, breakPt, gammaSeg_power, gammaSeg_slope, gammaSeg_off, logSeg_base, logSeg_logSlope, |
| 153 | + logSeg_logOff, logSeg_linSlope, logSeg_linOff ]. |
| 154 | + |
| 155 | + The exact formula may be found in the renderer code in `ops/fixedfunction/FixedFunctionOpCPU.cpp |
| 156 | + <https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/2f5ae2c568a4c1fb87e548716e2a12ac9e74d861/src/OpenColorIO/ops/fixedfunction/FixedFunctionOpCPU.cpp#L1908>`_ |
| 157 | + |
| 158 | + For implementing the Apple Log or HLG OETF curves, it is recommended to use the Built-in Transforms |
| 159 | + ``CURVE - APPLE_LOG_to_LINEAR`` and ``CURVE - HLG-OETF`` as they are faster (especially on the CPU) |
| 160 | + since they are implemented via a LUT1D rather than a formula. |
| 161 | + |
| 162 | +* ``FIXED_FUNCTION_LIN_TO_DOUBLE_LOG`` -- This curve contains two parameterized LogAffineTransforms |
| 163 | + with an optional middle linear segment. It takes 13 parameters and is capable of implementing the |
| 164 | + Canon Log 2 and Canon Log 3 curves. The parameters are: |
| 165 | + [ base, break1, break2, logSeg1_logSlope, logSeg1_logOff, logSeg1_linSlope, logSeg1_linOff |
| 166 | + logSeg2_logSlope, logSeg2_logOff, logSeg2_linSlope, logSeg2_linOff, linSeg_slope, linSeg_off ] |
| 167 | + |
| 168 | + The exact formula may be found in the renderer code in `ops/fixedfunction/FixedFunctionOpCPU.cpp |
| 169 | + <https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/2f5ae2c568a4c1fb87e548716e2a12ac9e74d861/src/OpenColorIO/ops/fixedfunction/FixedFunctionOpCPU.cpp#L2006>`_ |
| 170 | + |
| 171 | + For implementing the Canon Log 2 or 3 curves, it is recommended to use the Built-in Transforms |
| 172 | + ``CURVE - CANON_CLOG2_to_LINEAR`` and ``CURVE - CANON_CLOG3_to_LINEAR`` as they are faster |
| 173 | + (especially on the CPU) since they are implemented via a LUT1D rather than a formula. |
| 174 | + |
| 175 | + |
| 176 | +New Built-in Transforms |
| 177 | +*********************** |
| 178 | + |
| 179 | +For Config Authors |
| 180 | +++++++++++++++++++ |
| 181 | + |
| 182 | +In config files with ``ocio_profile_version`` set to 2.4 or higher, config authors may take |
| 183 | +advantage of the following new BuiltinTransform styles: |
| 184 | + |
| 185 | +* ``APPLE_LOG_to_ACES2065-1`` -- Converts Apple Log to ACES2065-1. |
| 186 | + |
| 187 | +* ``CURVE - APPLE_LOG_to_LINEAR`` -- Applies only the EOTF curve for Apple Log. |
| 188 | + |
| 189 | +* ``CURVE - HLG-OETF`` -- Applies the OETF curve for Hybrid Log Gamma. |
| 190 | + |
| 191 | +* ``CURVE - HLG-OETF-INVERSE`` -- Applies the inverse-OETF curve for Hybrid Log Gamma. |
| 192 | + |
| 193 | +* ``DISPLAY - CIE-XYZ-D65_to_DCDM-D65`` -- Implements a display color space to produce a |
| 194 | + Digital Cinema Distribution Master (DCDM) with a D65 creative white point. This uses the |
| 195 | + traditional 2.6 gamma SDR transfer function. |
| 196 | + |
| 197 | +* ``DISPLAY - CIE-XYZ-D65_to_ST2084-DCDM-D65`` -- Implements a display color space to produce an |
| 198 | + HDR Digital Cinema Distribution Master (DCDM) with a D65 creative white point. This implements |
| 199 | + the ST-2084 transfer function for HDR with an input Y value of 1.0 mapping to 100 nits. |
| 200 | + |
| 201 | +The following implement various View Transforms used by the ACES 2 Output Transforms: |
| 202 | + |
| 203 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0`` |
| 204 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D65_2.0`` |
| 205 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-108nit-P3-D65_2.0`` |
| 206 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-300nit-P3-D65_2.0`` |
| 207 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D65_2.0`` |
| 208 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0`` |
| 209 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D65_2.0`` |
| 210 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D65_2.0`` |
| 211 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-REC2020_2.0`` |
| 212 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-REC2020_2.0`` |
| 213 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-REC2020_2.0`` |
| 214 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-REC2020_2.0`` |
| 215 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC709-D65_2.0`` |
| 216 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-P3-D65_2.0`` |
| 217 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC2020-D65_2.0`` |
| 218 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D60-in-P3-D65_2.0`` |
| 219 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D60-in-XYZ-E_2.0`` |
| 220 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-108nit-P3-D60-in-P3-D65_2.0`` |
| 221 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-300nit-P3-D60-in-XYZ-E_2.0`` |
| 222 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D60-in-P3-D65_2.0`` |
| 223 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-P3-D65_2.0`` |
| 224 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D60-in-P3-D65_2.0`` |
| 225 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D60-in-P3-D65_2.0`` |
| 226 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D60-in-REC2020-D65_2.0`` |
| 227 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-REC2020-D65_2.0`` |
| 228 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D60-in-REC2020-D65_2.0`` |
| 229 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D60-in-REC2020-D65_2.0`` |
| 230 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-REC2020-D60-in-REC2020-D65_2.0`` |
| 231 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-REC2020-D60-in-REC2020-D65_2.0`` |
| 232 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-REC2020-D60-in-REC2020-D65_2.0`` |
| 233 | +* ``ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-REC2020-D60-in-REC2020-D65_2.0`` |
| 234 | + |
| 235 | + |
| 236 | +Release Notes |
| 237 | +============= |
| 238 | + |
| 239 | +For additional details, please see the GitHub release page: |
| 240 | + |
| 241 | +`OCIO 2.4.0 <https://github.com/AcademySoftwareFoundation/OpenColorIO/releases/tag/v2.4.0>`_ |
0 commit comments