diff --git a/.gitmodules b/.gitmodules
index 189f2238..e019b581 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
-[submodule "opencolorio_config_aces/config/reference/aces-system"]
- path = opencolorio_config_aces/config/reference/aces-system
- url = https://github.com/colour-science/aces-system
+[submodule "opencolorio_config_aces/config/reference/aces"]
+ path = opencolorio_config_aces/config/reference/aces
+ url = https://github.com/ampas/aces
diff --git a/docs/opencolorio_config_aces.clf.rst b/docs/opencolorio_config_aces.clf.rst
index 895a0405..0e46651f 100644
--- a/docs/opencolorio_config_aces.clf.rst
+++ b/docs/opencolorio_config_aces.clf.rst
@@ -43,6 +43,7 @@ Common LUT Format Generation
generate_clf_transforms_bmdfilm
generate_clf_transforms_canon
generate_clf_transforms_davinci
+ generate_clf_transforms_dji
generate_clf_transforms_itu
generate_clf_transforms_ocio
generate_clf_transforms_panasonic
diff --git a/docs/opencolorio_config_aces.config.rst b/docs/opencolorio_config_aces.config.rst
index c6c04e4d..371d19d8 100644
--- a/docs/opencolorio_config_aces.config.rst
+++ b/docs/opencolorio_config_aces.config.rst
@@ -82,6 +82,7 @@ Reference Configuration
version_aces_dev
classify_aces_ctl_transforms
discover_aces_ctl_transforms
+ filter_amf_components
filter_ctl_transforms
generate_amf_components
print_aces_taxonomy
diff --git a/docs/opencolorio_config_aces.utilities.rst b/docs/opencolorio_config_aces.utilities.rst
index a08aa824..fe9ea87c 100644
--- a/docs/opencolorio_config_aces.utilities.rst
+++ b/docs/opencolorio_config_aces.utilities.rst
@@ -40,3 +40,5 @@ Common
timestamp
as_bool
optional
+ filter_any
+ filter_all
diff --git a/opencolorio_config_aces/__init__.py b/opencolorio_config_aces/__init__.py
index 57c8e4ca..4c127b21 100644
--- a/opencolorio_config_aces/__init__.py
+++ b/opencolorio_config_aces/__init__.py
@@ -49,6 +49,7 @@
conversion_path,
ctl_transform_to_node,
discover_aces_ctl_transforms,
+ filter_amf_components,
filter_ctl_transforms,
filter_nodes,
generate_amf_components,
@@ -108,6 +109,7 @@
"conversion_path",
"ctl_transform_to_node",
"discover_aces_ctl_transforms",
+ "filter_amf_components",
"filter_ctl_transforms",
"filter_nodes",
"generate_amf_components",
diff --git a/opencolorio_config_aces/clf/__init__.py b/opencolorio_config_aces/clf/__init__.py
index e8aadc4b..c5a07164 100644
--- a/opencolorio_config_aces/clf/__init__.py
+++ b/opencolorio_config_aces/clf/__init__.py
@@ -14,6 +14,7 @@
generate_clf_transforms_bmdfilm,
generate_clf_transforms_canon,
generate_clf_transforms_davinci,
+ generate_clf_transforms_dji,
generate_clf_transforms_itu,
generate_clf_transforms_ocio,
generate_clf_transforms_panasonic,
@@ -35,6 +36,7 @@
"generate_clf_transforms_bmdfilm",
"generate_clf_transforms_canon",
"generate_clf_transforms_davinci",
+ "generate_clf_transforms_dji",
"generate_clf_transforms_itu",
"generate_clf_transforms_ocio",
"generate_clf_transforms_panasonic",
diff --git a/opencolorio_config_aces/clf/transforms/__init__.py b/opencolorio_config_aces/clf/transforms/__init__.py
index 950f54e6..5981a46e 100644
--- a/opencolorio_config_aces/clf/transforms/__init__.py
+++ b/opencolorio_config_aces/clf/transforms/__init__.py
@@ -19,6 +19,9 @@
from .canon import (
generate_clf_transforms_canon,
)
+from .dji import (
+ generate_clf_transforms_dji,
+)
from .itu import (
generate_clf_transforms_itu,
)
@@ -53,6 +56,9 @@
__all__ += [
"generate_clf_transforms_canon",
]
+__all__ += [
+ "generate_clf_transforms_dji",
+]
__all__ += [
"generate_clf_transforms_itu",
]
diff --git a/opencolorio_config_aces/clf/transforms/arri/generate.py b/opencolorio_config_aces/clf/transforms/arri/generate.py
index ba3e3a94..ee0ef70b 100644
--- a/opencolorio_config_aces/clf/transforms/arri/generate.py
+++ b/opencolorio_config_aces/clf/transforms/arri/generate.py
@@ -273,6 +273,10 @@ def _generate_logc3_transforms(
# Generate ARRI LogC3 to ACES 2065-1 Transform
name = f"ARRI_LogC3_EI{ei}_to_ACES2065-1"
aces_id = f"urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-logC-EI{ei}.a1.v2"
+
+ if ei == 800:
+ aces_id = "urn:ampas:aces:transformId:v2.0:CSC.Arri.LogC3_to_ACES.a2.v1"
+
input_descriptor = f"ARRI LogC3 (EI{ei})"
output_descriptor = "ACES2065-1"
clf_transform_id = format_clf_transform_id(FAMILY, GENUS, name, VERSION)
@@ -342,7 +346,7 @@ def _generate_logc4_transforms(
# Generate ARRI LogC4 to ACES 2065-1 Transform
name = "ARRI_LogC4_to_ACES2065-1"
- aces_id = "urn:ampas:aces:transformId:v2.0:CSC.Arri.LogCv4_to_ACES.a2.v1"
+ aces_id = "urn:ampas:aces:transformId:v2.0:CSC.Arri.LogC4_to_ACES.a2.v1"
input_descriptor = "ARRI LogC4"
output_descriptor = "ACES2065-1"
clf_transform_id = format_clf_transform_id(FAMILY, GENUS, name, VERSION)
diff --git a/opencolorio_config_aces/clf/transforms/arri/input/ARRI.Input.ARRI_LogC3_EI800_to_ACES2065-1.clf b/opencolorio_config_aces/clf/transforms/arri/input/ARRI.Input.ARRI_LogC3_EI800_to_ACES2065-1.clf
index 2f1455df..69848ae7 100644
--- a/opencolorio_config_aces/clf/transforms/arri/input/ARRI.Input.ARRI_LogC3_EI800_to_ACES2065-1.clf
+++ b/opencolorio_config_aces/clf/transforms/arri/input/ARRI.Input.ARRI_LogC3_EI800_to_ACES2065-1.clf
@@ -3,7 +3,7 @@
ARRI LogC3 (EI800)
ACES2065-1
- urn:ampas:aces:transformId:v2.0:CSC.Arri.LogCv3_to_ACES.a2.v1
+ urn:ampas:aces:transformId:v2.0:CSC.Arri.LogC3_to_ACES.a2.v1
diff --git a/opencolorio_config_aces/clf/transforms/arri/input/ARRI.Input.ARRI_LogC4_to_ACES2065-1.clf b/opencolorio_config_aces/clf/transforms/arri/input/ARRI.Input.ARRI_LogC4_to_ACES2065-1.clf
index 55b30872..9e6be0db 100644
--- a/opencolorio_config_aces/clf/transforms/arri/input/ARRI.Input.ARRI_LogC4_to_ACES2065-1.clf
+++ b/opencolorio_config_aces/clf/transforms/arri/input/ARRI.Input.ARRI_LogC4_to_ACES2065-1.clf
@@ -3,7 +3,7 @@
ARRI LogC4
ACES2065-1
- urn:ampas:aces:transformId:v2.0:CSC.Arri.LogCv4_to_ACES.a2.v1
+ urn:ampas:aces:transformId:v2.0:CSC.Arri.LogC4_to_ACES.a2.v1
diff --git a/opencolorio_config_aces/clf/transforms/dji/__init__.py b/opencolorio_config_aces/clf/transforms/dji/__init__.py
new file mode 100644
index 00000000..6cb50b1d
--- /dev/null
+++ b/opencolorio_config_aces/clf/transforms/dji/__init__.py
@@ -0,0 +1,10 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright Contributors to the OpenColorIO Project.
+
+from .generate import (
+ generate_clf_transforms_dji,
+)
+
+__all__ = [
+ "generate_clf_transforms_dji",
+]
diff --git a/opencolorio_config_aces/clf/transforms/dji/generate.py b/opencolorio_config_aces/clf/transforms/dji/generate.py
new file mode 100644
index 00000000..0525c943
--- /dev/null
+++ b/opencolorio_config_aces/clf/transforms/dji/generate.py
@@ -0,0 +1,173 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright Contributors to the OpenColorIO Project.
+"""
+*DJI* CLF Transforms Generation
+================================
+
+Defines procedures for generating DJI *Common LUT Format* (CLF)
+transforms:
+
+- :func:`opencolorio_config_aces.clf.generate_clf_transforms_dji`
+"""
+
+from __future__ import annotations
+
+from pathlib import Path
+
+import PyOpenColorIO as ocio
+
+from opencolorio_config_aces.clf.transforms import (
+ clf_basename,
+ format_clf_transform_id,
+ generate_clf_transform,
+ matrix_RGB_to_RGB_transform,
+)
+from opencolorio_config_aces.config import transform_factory
+
+__author__ = "OpenColorIO Contributors"
+__copyright__ = "Copyright Contributors to the OpenColorIO Project."
+__license__ = "New BSD License - https://opensource.org/licenses/BSD-3-Clause"
+__maintainer__ = "OpenColorIO Contributors"
+__email__ = "ocio-dev@lists.aswf.io"
+__status__ = "Production"
+
+__all__ = [
+ "FAMILY",
+ "GENUS",
+ "VERSION",
+ "generate_clf_transforms_dji",
+]
+
+FAMILY: str = "DJI"
+"""
+*CLF* transforms family.
+"""
+
+GENUS: str = "Input"
+"""
+*CLF* transforms genus.
+"""
+
+VERSION: str = "1.0"
+"""
+*CLF* transforms version.
+"""
+
+
+def generate_clf_transforms_dji(
+ output_directory: Path,
+) -> dict[Path, ocio.GroupTransform]:
+ """
+ Generate the *CLF* transforms for *D-Log - D-Gamut* plus matrix/curve.
+
+ Parameters
+ ----------
+ output_directory
+ Directory to write the *CLF* transform(s) to.
+
+ Returns
+ -------
+ :class:`dict`
+ Dictionary of *CLF* transforms and *OpenColorIO* `GroupTransform`
+ instances.
+
+ References
+ ----------
+ - Dji. (2017). White Paper on D-Log and D-Gamut of DJI Cinema Color
+ System (pp. 1-5). https://dl.djicdn.com/downloads/zenmuse+x7/20171010/\
+D-Log_D-Gamut_Whitepaper.pdf
+ """
+
+ output_directory.mkdir(parents=True, exist_ok=True)
+
+ clf_transforms = {}
+
+ base = 10.0
+
+ # Mathematically correct for transition at log = 0.14:
+ # lin_side_break = (0.14 - 0.0929) / 6.025 = 0.007817427385892119
+ # Optimized:
+ lin_side_break = 0.00758078675
+
+ log_side_slope = 1.0 / 3.89616
+ log_side_offset = 2.27752 / 3.89616
+ lin_side_slope = 0.9892
+ lin_side_offset = 0.0108
+
+ lct = transform_factory(
+ transform_type="LogCameraTransform",
+ transform_factory="Constructor",
+ base=base,
+ linSideBreak=[lin_side_break] * 3,
+ logSideSlope=[log_side_slope] * 3,
+ logSideOffset=[log_side_offset] * 3,
+ linSideSlope=[lin_side_slope] * 3,
+ linSideOffset=[lin_side_offset] * 3,
+ direction=ocio.TRANSFORM_DIR_INVERSE,
+ )
+
+ mtx = matrix_RGB_to_RGB_transform("DJI D-Gamut", "ACES2065-1", "CAT02")
+
+ # ACES transform ID from the CTL file
+ aces_transform_id = (
+ "urn:ampas:aces:transformId:v2.0:CSC.DJI.DLog_DGamut_to_ACES.a1.v1"
+ )
+
+ # Generate full transform.
+ name = "DLog_DGamut_to_ACES2065-1"
+ input_descriptor = "DJI D-Log - D-Gamut"
+ output_descriptor = "ACES2065-1"
+ clf_transform_id = format_clf_transform_id(FAMILY, GENUS, name, VERSION)
+ filename = output_directory / clf_basename(clf_transform_id)
+ clf_transforms[filename] = generate_clf_transform(
+ filename,
+ [lct, mtx],
+ clf_transform_id,
+ f"{input_descriptor} to {output_descriptor}",
+ input_descriptor,
+ output_descriptor,
+ aces_transform_id,
+ )
+
+ # Generate transform for primaries only.
+ name = "Linear_DGamut_to_ACES2065-1"
+ input_descriptor = "Linear DJI D-Gamut"
+ output_descriptor = "ACES2065-1"
+ clf_transform_id = format_clf_transform_id(FAMILY, GENUS, name, VERSION)
+ filename = output_directory / clf_basename(clf_transform_id)
+ clf_transforms[filename] = generate_clf_transform(
+ filename,
+ [mtx],
+ clf_transform_id,
+ f"{input_descriptor} to {output_descriptor}",
+ input_descriptor,
+ output_descriptor,
+ )
+
+ # Generate `NamedTransform` for log curve only.
+ name = "DLog-Curve_to_Linear"
+ input_descriptor = "DJI D-Log Log (arbitrary primaries)"
+ output_descriptor = "DJI D-Log Linear (arbitrary primaries)"
+ clf_transform_id = format_clf_transform_id(FAMILY, GENUS, name, VERSION)
+ filename = output_directory / clf_basename(clf_transform_id)
+ clf_transforms[filename] = generate_clf_transform(
+ filename,
+ [lct],
+ clf_transform_id,
+ f'{input_descriptor.replace(" (arbitrary primaries)", "")} to Linear Curve',
+ input_descriptor,
+ output_descriptor,
+ )
+
+ return clf_transforms
+
+
+if __name__ == "__main__":
+ import logging
+
+ logging.basicConfig()
+ logging.getLogger().setLevel(logging.INFO)
+
+ output_directory = Path(__file__).parent.resolve() / "input"
+
+ generate_clf_transforms_dji(output_directory)
diff --git a/opencolorio_config_aces/clf/transforms/dji/input/DJI.Input.DLog-Curve.clf b/opencolorio_config_aces/clf/transforms/dji/input/DJI.Input.DLog-Curve.clf
new file mode 100644
index 00000000..2c039395
--- /dev/null
+++ b/opencolorio_config_aces/clf/transforms/dji/input/DJI.Input.DLog-Curve.clf
@@ -0,0 +1,8 @@
+
+
+ DJI D-Log Log (arbitrary primaries)
+ DJI D-Log Linear (arbitrary primaries)
+
+
+
+
diff --git a/opencolorio_config_aces/clf/transforms/dji/input/DJI.Input.DLog_DGamut_to_ACES2065-1.clf b/opencolorio_config_aces/clf/transforms/dji/input/DJI.Input.DLog_DGamut_to_ACES2065-1.clf
new file mode 100644
index 00000000..d8e9e7b9
--- /dev/null
+++ b/opencolorio_config_aces/clf/transforms/dji/input/DJI.Input.DLog_DGamut_to_ACES2065-1.clf
@@ -0,0 +1,18 @@
+
+
+ DJI D-Log - D-Gamut
+ ACES2065-1
+
+ urn:ampas:aces:transformId:v2.0:CSC.DJI.DLog_DGamut_to_ACES.a1.v1
+
+
+
+
+
+
+ 0.691279245585754 0.214382527745956 0.0943382266682902
+ 0.0662224037667752 1.0116160801876 -0.0778384839543733
+-0.0172985410341745 -0.0773788501012682 1.09467739113544
+
+
+
diff --git a/opencolorio_config_aces/clf/transforms/dji/input/DJI.Input.Linear_DGamut_to_ACES2065-1.clf b/opencolorio_config_aces/clf/transforms/dji/input/DJI.Input.Linear_DGamut_to_ACES2065-1.clf
new file mode 100644
index 00000000..aed9d69a
--- /dev/null
+++ b/opencolorio_config_aces/clf/transforms/dji/input/DJI.Input.Linear_DGamut_to_ACES2065-1.clf
@@ -0,0 +1,12 @@
+
+
+ Linear DJI D-Gamut
+ ACES2065-1
+
+
+ 0.691279245585754 0.214382527745956 0.0943382266682902
+ 0.0662224037667752 1.0116160801876 -0.0778384839543733
+-0.0172985410341745 -0.0773788501012682 1.09467739113544
+
+
+
diff --git a/opencolorio_config_aces/config/__init__.py b/opencolorio_config_aces/config/__init__.py
index c37ad899..484883ae 100644
--- a/opencolorio_config_aces/config/__init__.py
+++ b/opencolorio_config_aces/config/__init__.py
@@ -30,6 +30,7 @@
conversion_path,
ctl_transform_to_node,
discover_aces_ctl_transforms,
+ filter_amf_components,
filter_ctl_transforms,
filter_nodes,
generate_amf_components,
@@ -75,6 +76,7 @@
"conversion_path",
"ctl_transform_to_node",
"discover_aces_ctl_transforms",
+ "filter_amf_components",
"filter_ctl_transforms",
"filter_nodes",
"generate_amf_components",
diff --git a/opencolorio_config_aces/config/cg/generate/config.py b/opencolorio_config_aces/config/cg/generate/config.py
index 5765327f..4ff8707a 100644
--- a/opencolorio_config_aces/config/cg/generate/config.py
+++ b/opencolorio_config_aces/config/cg/generate/config.py
@@ -14,7 +14,7 @@
import logging
import re
from collections import defaultdict
-from collections.abc import Callable, Mapping
+from collections.abc import Callable
from pathlib import Path
from typing import Any
@@ -42,17 +42,19 @@
)
from opencolorio_config_aces.config.reference import (
DescriptionStyle,
+ filter_amf_components,
generate_config_aces,
)
from opencolorio_config_aces.config.reference.generate.config import (
COLORSPACE_SCENE_ENCODING_REFERENCE,
- HEADER_AMF_COMPONENTS,
TEMPLATE_ACES_TRANSFORM_ID,
format_optional_prefix,
transform_data_aliases,
)
from opencolorio_config_aces.utilities import (
attest,
+ filter_all,
+ filter_any,
optional,
timestamp,
validate_method,
@@ -170,7 +172,6 @@ def clf_transform_to_colorspace_name(clf_transform: CLFTransform) -> str:
def clf_transform_to_description(
clf_transform: CLFTransform,
describe: DescriptionStyle = DescriptionStyle.LONG_UNION,
- amf_components: Mapping[str, Any] | None = None,
direction: str = "Forward",
) -> str | None:
"""
@@ -184,9 +185,6 @@ def clf_transform_to_description(
describe : bool, optional
Whether to use the full *CLF* transform description or just the
first line.
- amf_components : mapping, optional
- *ACES* *AMF* components used to extend the *ACES* *CTL* transform
- description.
direction : str, optional
Direction of transform -- determines order of transform descriptors.
{"Forward", "Reverse"}
@@ -198,17 +196,11 @@ def clf_transform_to_description(
*OpenColorIO* `Colorspace` or `NamedTransform` description.
"""
- amf_components = optional(amf_components, {})
-
description = None
if describe != DescriptionStyle.NONE:
description = []
- if describe in (
- DescriptionStyle.OPENCOLORIO,
- DescriptionStyle.SHORT,
- DescriptionStyle.SHORT_UNION,
- ):
+ if describe in (DescriptionStyle.SHORT_UNION, DescriptionStyle.LONG_UNION):
if clf_transform.description is not None:
if direction.lower() == "forward":
description.append(
@@ -220,43 +212,23 @@ def clf_transform_to_description(
f"Convert {clf_transform.output_descriptor} "
f"to {clf_transform.input_descriptor}"
)
- elif describe in ( # noqa: SIM102
- DescriptionStyle.OPENCOLORIO,
- DescriptionStyle.LONG,
- DescriptionStyle.LONG_UNION,
- ):
+ elif describe in (DescriptionStyle.LONG_UNION,):
if clf_transform.description is not None:
description.append("\n" + clf_transform.description)
- if len(description) > 0:
- description.append("")
+ if len(description) > 0:
+ description.append("")
- description.append(
- TEMPLATE_CLF_TRANSFORM_ID.format(
- clf_transform.clf_transform_id.clf_transform_id
- ),
- )
+ description.append(
+ TEMPLATE_CLF_TRANSFORM_ID.format(
+ clf_transform.clf_transform_id.clf_transform_id
+ ),
+ )
- aces_transform_id = clf_transform.information.get("ACEStransformID")
- if aces_transform_id:
- aces_transform_id = aces_transform_id.aces_transform_id
- description.append(TEMPLATE_ACES_TRANSFORM_ID.format(aces_transform_id))
-
- if describe in (
- DescriptionStyle.AMF,
- DescriptionStyle.SHORT_UNION,
- DescriptionStyle.LONG_UNION,
- ):
- amf_components_description = [
- TEMPLATE_ACES_TRANSFORM_ID.format(amf_aces_transform_id)
- for amf_aces_transform_id in amf_components.get(
- aces_transform_id, []
- )
- ]
- if amf_components_description:
- description.append("")
- description.append(HEADER_AMF_COMPONENTS)
- description.extend(amf_components_description)
+ aces_transform_id = clf_transform.information.get("ACEStransformID")
+ if aces_transform_id:
+ aces_transform_id = aces_transform_id.aces_transform_id
+ description.append(TEMPLATE_ACES_TRANSFORM_ID.format(aces_transform_id))
description = "\n".join(description).strip()
@@ -300,7 +272,6 @@ def clf_transform_to_family(
def clf_transform_to_colorspace(
clf_transform: CLFTransform,
describe: DescriptionStyle = DescriptionStyle.LONG_UNION,
- amf_components: Mapping[str, Any] | None = None,
signature_only: bool = False,
**kwargs: Any,
) -> dict[str, Any] | ocio.ColorSpace:
@@ -313,9 +284,6 @@ def clf_transform_to_colorspace(
*CLF* transform.
describe : bool, optional
*CLF* transform description style.
- amf_components : mapping, optional
- *ACES* *AMF* components used to extend the *ACES* *CTL* transform
- description.
signature_only : bool, optional
Whether to return the *OpenColorIO* `Colorspace` signature only, i.e.,
the arguments for its instantiation.
@@ -335,9 +303,7 @@ def clf_transform_to_colorspace(
signature = {
"name": clf_transform_to_colorspace_name(clf_transform),
"family": clf_transform_to_family(clf_transform),
- "description": clf_transform_to_description(
- clf_transform, describe, amf_components, "Forward"
- ),
+ "description": clf_transform_to_description(clf_transform, describe, "Forward"),
}
file_transform = {
@@ -367,7 +333,6 @@ def clf_transform_to_colorspace(
def clf_transform_to_named_transform(
clf_transform: CLFTransform,
describe: DescriptionStyle = DescriptionStyle.LONG_UNION,
- amf_components: Mapping[str, Any] | None = None,
signature_only: bool = False,
**kwargs: Any,
) -> dict[str, Any] | ocio.NamedTransform:
@@ -380,9 +345,6 @@ def clf_transform_to_named_transform(
*CLF* transform.
describe : bool, optional
*CLF* transform description style.
- amf_components : mapping, optional
- *ACES* *AMF* components used to extend the *ACES* *CTL* transform
- description.
signature_only : bool, optional
Whether to return the *OpenColorIO* `NamedTransform` signature only,
i.e., the arguments for its instantiation.
@@ -412,12 +374,12 @@ def clf_transform_to_named_transform(
if is_reference(clf_transform.source):
signature["inverse_transform"] = file_transform # pyright: ignore
signature["description"] = clf_transform_to_description( # pyright: ignore
- clf_transform, describe, amf_components, direction="Reverse"
+ clf_transform, describe, direction="Reverse"
)
else:
signature["forward_transform"] = file_transform # pyright: ignore
signature["description"] = clf_transform_to_description( # pyright: ignore
- clf_transform, describe, amf_components, direction="Forward"
+ clf_transform, describe, direction="Forward"
)
signature.update(kwargs)
@@ -437,7 +399,6 @@ def clf_transform_to_named_transform(
def style_to_colorspace(
style: str,
describe: DescriptionStyle = DescriptionStyle.LONG_UNION,
- amf_components: Mapping[str, Any] | None = None,
signature_only: bool = False,
scheme: str = "Modern 1", # noqa: ARG001
**kwargs: Any,
@@ -452,9 +413,6 @@ def style_to_colorspace(
describe : int, optional
Any value from the
:class:`opencolorio_config_aces.DescriptionStyle` enum.
- amf_components : mapping, optional
- *ACES* *AMF* components used to extend the *ACES* *CTL* transform
- description.
signature_only : bool, optional
Whether to return the *OpenColorIO* view `Colorspace` signature only,
i.e., the arguments for its instantiation.
@@ -494,7 +452,7 @@ def style_to_colorspace(
clf_transform = kwargs.pop("clf_transform", None)
if clf_transform:
colorspace_signature = clf_transform_to_colorspace(
- clf_transform, describe, amf_components, True, **kwargs
+ clf_transform, describe, True, **kwargs
)
description = colorspace_signature["description"]
signature.update(colorspace_signature)
@@ -547,7 +505,6 @@ def style_to_colorspace(
def style_to_named_transform(
style: str,
describe: DescriptionStyle = DescriptionStyle.LONG_UNION,
- amf_components: Mapping[str, Any] | None = None,
signature_only: bool = False,
scheme: str = "Modern 1", # noqa: ARG001
**kwargs: Any,
@@ -562,9 +519,6 @@ def style_to_named_transform(
describe : int, optional
Any value from the
:class:`opencolorio_config_aces.DescriptionStyle` enum.
- amf_components : mapping, optional
- *ACES* *AMF* components used to extend the *ACES* *CTL* transform
- description.
signature_only : bool, optional
Whether to return the *OpenColorIO* view `Colorspace` signature only,
i.e., the arguments for its instantiation.
@@ -604,7 +558,7 @@ def style_to_named_transform(
clf_transform = kwargs.pop("clf_transform", None)
if clf_transform:
colorspace_signature = clf_transform_to_colorspace(
- clf_transform, describe, amf_components, True, **kwargs
+ clf_transform, describe, True, **kwargs
)
signature.update(colorspace_signature)
signature.pop("from_reference", None)
@@ -612,7 +566,6 @@ def style_to_named_transform(
description = clf_transform_to_description(
clf_transform,
describe,
- amf_components,
"Reverse" if is_reference(source) else "Forward",
)
else:
@@ -865,6 +818,7 @@ def generate_config_cg(
describe=describe,
scheme=scheme,
analytical=False,
+ additional_filterers=additional_filterers,
additional_data=True,
)
@@ -926,6 +880,7 @@ def clf_transform_from_style(style: str) -> CLFTransform | None:
"aliases",
"encoding",
"categories",
+ "interop_id",
],
)
@@ -1017,24 +972,6 @@ def transform_filterer(transform: dict[str, Any]) -> bool:
return False
- def filter_any(
- array: list[dict[str, Any]], filterers: list[Callable[[dict[str, Any]], bool]]
- ) -> list[dict[str, Any]]:
- """Filter array elements passing any of the filterers."""
-
- filtered = [a for a in array if any(filterer(a) for filterer in filterers)]
-
- return filtered
-
- def filter_all(
- array: list[dict[str, Any]], filterers: list[Callable[[dict[str, Any]], bool]]
- ) -> list[dict[str, Any]]:
- """Filter array elements passing all of the filterers."""
-
- filtered = [a for a in array if all(filterer(a) for filterer in filterers)]
-
- return filtered
-
# "Colorspaces" Filtering
# =======================
any_colorspace_filterers = [
@@ -1189,21 +1126,37 @@ def remove_existing_named_transform(name: str) -> None:
kwargs = {
"describe": describe,
- "amf_components": amf_components,
"signature_only": True,
"aliases": transform_data_aliases(transform_data),
"encoding": transform_data.get("encoding"),
"categories": transform_data.get("categories"),
+ "interop_id": transform_data.get("interop_id"),
}
style = transform_data["builtin_transform_style"]
clf_transform_id = transform_data["clf_transform_id"]
if style:
+ clf_transform = clf_transform_from_style(style)
+
+ filtered_amf_components = None
+ if (
+ aces_transform_id := clf_transform.information.get( # pyright: ignore
+ "ACEStransformID"
+ )
+ ) is not None:
+ filtered_amf_components = filter_amf_components(
+ amf_components,
+ aces_transform_id.aces_transform_id,
+ )
+
kwargs.update(
{
"style": style,
- "clf_transform": clf_transform_from_style(style),
+ "clf_transform": clf_transform,
+ "interchange_mapping": None
+ if filtered_amf_components is None
+ else {"amf_transform_ids": "\n".join(filtered_amf_components)},
}
)
@@ -1248,7 +1201,24 @@ def remove_existing_named_transform(name: str) -> None:
f'"{clf_transform_id}" "CLF" transform does not exist!',
)
- kwargs["clf_transform"] = clf_transform
+ filtered_amf_components = None
+ if (
+ aces_transform_id := clf_transform.information.get( # pyright: ignore
+ "ACEStransformID"
+ )
+ ) is not None:
+ filtered_amf_components = filter_amf_components(
+ amf_components, aces_transform_id.aces_transform_id
+ )
+
+ kwargs.update(
+ {
+ "clf_transform": clf_transform,
+ "interchange_mapping": None
+ if filtered_amf_components is None
+ else {"amf_transform_ids": "\n".join(filtered_amf_components)},
+ }
+ )
if transform_data["interface"] == "NamedTransform":
LOGGER.info(
@@ -1341,6 +1311,34 @@ def ordering(element: dict[str, Any]) -> int:
data.view_transforms = sorted(data.view_transforms, key=ordering)
data.looks = sorted(data.looks, key=ordering)
+ # Virtual Display Shared Views
+ # ============================
+ data.virtual_display_shared_views = list(
+ {
+ shared_view["view"]
+ for shared_view in data.shared_views
+ if shared_view["display"]
+ in [
+ a["name"]
+ for a in data.colorspaces
+ if a.get("family") == "Display" and a.get("encoding") == "sdr-video"
+ ]
+ }
+ )
+
+ # Virtual Display Views
+ # =====================
+ data.virtual_display_views = [
+ {
+ "view": "Raw",
+ "view_transform": "",
+ "colorspace": "Raw",
+ "looks": "",
+ "rule": "",
+ "description": "",
+ }
+ ]
+
data.profile_version = build_configuration.ocio
config = generate_config(data, config_name, validate)
diff --git a/opencolorio_config_aces/config/cg/generate/resources/OpenColorIO-Config-ACES CG and Studio Transforms - v3 - CG Config - Mapping.csv b/opencolorio_config_aces/config/cg/generate/resources/Loading... - CG Config - Mapping.csv
similarity index 67%
rename from opencolorio_config_aces/config/cg/generate/resources/OpenColorIO-Config-ACES CG and Studio Transforms - v3 - CG Config - Mapping.csv
rename to opencolorio_config_aces/config/cg/generate/resources/Loading... - CG Config - Mapping.csv
index 84779512..d4ea56d7 100644
--- a/opencolorio_config_aces/config/cg/generate/resources/OpenColorIO-Config-ACES CG and Studio Transforms - v3 - CG Config - Mapping.csv
+++ b/opencolorio_config_aces/config/cg/generate/resources/Loading... - CG Config - Mapping.csv
@@ -1,28 +1,29 @@
-Ordering,Colorspace,Legacy,ACEStransformID,CLFtransformID,Interface,BuiltinTransform Style,Aliases,Encoding,Categories
-100,ACEScc,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScc_to_ACES.a2.v1,,ColorSpace,ACEScc_to_ACES2065-1,"acescc,acescc_ap1,ACES - ACEScc",log,file-io
-100,ACEScct,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScct_to_ACES.a2.v1,,ColorSpace,ACEScct_to_ACES2065-1,"acescct,acescct_ap1,ACES - ACEScct",log,"file-io,working-space"
-100,ACEScg,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScg_to_ACES.a2.v1,,ColorSpace,ACEScg_to_ACES2065-1,"acescg,lin_ap1,lin_ap1_scene,ACES - ACEScg",scene-linear,"file-io,working-space,texture"
-300,ACES 1.3 Reference Gamut Compression,FALSE,urn:ampas:aces:transformId:v2.0:Look.Academy.ReferenceGamutCompress.a2.v1,,Look,,,scene-linear,
-400,Rec709-D65_100nit_in_Rec709-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,sdr-video,file-io
-410,P3-D65_100nit_in_P3-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D65_2.0,,sdr-video,file-io
-415,P3-D65_1000nit_in_P3-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_P3-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,,hdr-video,file-io
-425,P3-D65_48nit_in_P3-D65_Gamma2pt6,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_48nit_in_P3-D65_Gamma2pt6.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D65_2.0,,sdr-video,file-io
-435,Rec709-D65_100nit_in_Rec709-D65_BT1886,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec709-D65_BT1886.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,sdr-video,file-io
-440,sRGB - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:Linear_to_sRGB-Curve:1.0,NamedTransform,,"crv_srgb,Utility - Curve - sRGB",sdr-video,file-io
-441,Rec.1886 - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:Linear_to_Rec1886-Curve:1.0,NamedTransform,,"crv_rec1886,Utility - Curve - Rec.1886",sdr-video,file-io
-446,P3-D65_1000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,,hdr-video,file-io
-456,Rec2100-D65_1000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_1000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-REC2020_2.0,,hdr-video,file-io
-477,P3-D65_1000nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,,hdr-video,file-io
-500,sRGB Encoded Rec.709 (sRGB),TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB-Encoded-Rec709:1.0,ColorSpace,,"srgb_texture,srgb_rec709_scene,Utility - sRGB - Texture,Input - Generic - sRGB - Texture,sRGB - Texture,srgb_tx",sdr-video,"file-io,texture"
-501,Gamma 1.8 Encoded Rec.709,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma1.8_Encoded_Rec709:1.0,ColorSpace,,"g18_rec709,Utility - Gamma 1.8 - Rec.709 - Texture,Gamma 1.8 Rec.709 - Texture,g18_rec709_tx,g18_rec709_scene",sdr-video,"file-io,texture"
-502,Gamma 2.2 Encoded Rec.709,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.2_Encoded_Rec709:1.0,ColorSpace,,"g22_rec709,Utility - Gamma 2.2 - Rec.709 - Texture,Gamma 2.2 Rec.709 - Texture,g22_rec709_tx,g22_rec709_scene",sdr-video,"file-io,texture"
-503,Gamma 2.4 Encoded Rec.709,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.4_Encoded_Rec709:1.0,ColorSpace,,"g24_rec709,rec709_display,Utility - Rec.709 - Display,Gamma 2.4 Rec.709 - Texture,g24_rec709_tx",sdr-video,"file-io,texture"
-505,sRGB Encoded P3-D65,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB_Encoded_P3-D65:1.0,ColorSpace,,"srgb_p3d65,srgb_displayp3,srgb_p3d65_scene,sRGB Encoded P3-D65 - Texture,srgb_encoded_p3d65_tx",sdr-video,"file-io,texture"
-506,Gamma 2.2 Encoded AdobeRGB,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.2_Encoded_AdobeRGB:1.0,ColorSpace,,"adobergb,g22_adobergb_scene",sdr-video,"file-io,texture"
-507,sRGB Encoded AP1,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB_Encoded_AP1:1.0,ColorSpace,,"srgb_ap1,srgb_ap1_scene,sRGB Encoded AP1 - Texture,srgb_encoded_ap1_tx",sdr-video,"file-io,texture"
-508,Gamma 2.2 Encoded AP1,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.2_Encoded_AP1:1.0,ColorSpace,,"g22_ap1,Gamma 2.2 AP1 - Texture,g22_ap1_tx,g22_ap1_scene",sdr-video,"file-io,texture"
-520,CIE XYZ-D65 - Scene-referred,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_CIE_XYZ-D65-Scene-referred:1.0,ColorSpace,,lin_ciexyzd65_scene,scene-linear,file-io
-520,Linear AdobeRGB,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_AdobeRGB:1.0,ColorSpace,,"lin_adobergb,lin_adobergb_scene,Utility - Linear - Adobe RGB",scene-linear,"file-io,texture"
-520,Linear P3-D65,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_P3-D65:1.0,ColorSpace,,"lin_p3d65,lin_displayp3,lin_p3d65_scene,Utility - Linear - P3-D65,Linear Display P3",scene-linear,"file-io,working-space,texture"
-520,Linear Rec.2020,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_Rec2020:1.0,ColorSpace,,"lin_rec2020,lin_rec2020_scene,Utility - Linear - Rec.2020",scene-linear,"file-io,texture"
-520,Linear Rec.709 (sRGB),TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_Rec709:1.0,ColorSpace,,"lin_rec709,lin_rec709_scene,lin_srgb,Utility - Linear - sRGB,Utility - Linear - Rec.709",scene-linear,"file-io,working-space,texture"
+Ordering,Colorspace,Legacy,ACEStransformID,CLFtransformID,Interface,BuiltinTransform Style,Aliases,Encoding,Categories,InteropId
+100,ACEScc,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScc_to_ACES.a2.v1,,ColorSpace,ACEScc_to_ACES2065-1,"acescc,acescc_ap1,ACES - ACEScc",log,file-io,ocio:acescc_ap1_scene
+100,ACEScct,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScct_to_ACES.a2.v1,,ColorSpace,ACEScct_to_ACES2065-1,"acescct,acescct_ap1,ACES - ACEScct",log,"file-io,working-space",ocio:acescct_ap1_scene
+100,ACEScg,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScg_to_ACES.a2.v1,,ColorSpace,ACEScg_to_ACES2065-1,"acescg,lin_ap1,lin_ap1_scene,ACES - ACEScg",scene-linear,"file-io,working-space,texture",lin_ap1_scene
+300,ACES 1.3 Reference Gamut Compression,FALSE,urn:ampas:aces:transformId:v2.0:Look.Academy.ReferenceGamutCompress.a2.v1,,Look,,,scene-linear,,
+400,Rec709-D65_100nit_in_Rec709-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,sdr-video,file-io,srgb_rec709_display
+405,Rec709-D65_100nit_in_Rec709-D65_Gamma2pt2,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec709-D65_Gamma2pt2.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,sdr-video,file-io,g22_rec709_display
+415,P3-D65_100nit_in_P3-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D65_2.0,,sdr-video,file-io,srgb_p3d65_display
+420,P3-D65_1000nit_in_P3-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_P3-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,,edr-video,file-io,srgbe_p3d65_display
+430,P3-D65_48nit_in_P3-D65_Gamma2pt6,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_48nit_in_P3-D65_Gamma2pt6.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D65_2.0,,sdr-video,file-io,g26_p3d65_display
+440,Rec709-D65_100nit_in_Rec709-D65_BT1886,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec709-D65_BT1886.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,sdr-video,file-io,g24_rec709_display
+440,sRGB - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:Linear_to_sRGB-Curve:1.0,NamedTransform,,"crv_srgb,Utility - Curve - sRGB",sdr-video,file-io,
+441,Rec.1886 - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:Linear_to_Rec1886-Curve:1.0,NamedTransform,,"crv_rec1886,Utility - Curve - Rec.1886",sdr-video,file-io,
+451,P3-D65_1000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,,hdr-video,file-io,pq_rec2020_display
+461,Rec2100-D65_1000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_1000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-REC2020_2.0,,hdr-video,file-io,pq_rec2020_display
+482,P3-D65_1000nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,,hdr-video,file-io,pq_p3d65_display
+500,sRGB Encoded Rec.709 (sRGB),TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB-Encoded-Rec709:1.0,ColorSpace,,"srgb_texture,srgb_rec709_scene,Utility - sRGB - Texture,Input - Generic - sRGB - Texture,sRGB - Texture,srgb_tx",sdr-video,"file-io,texture",srgb_rec709_scene
+501,Gamma 1.8 Encoded Rec.709,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma1.8_Encoded_Rec709:1.0,ColorSpace,,"g18_rec709,Utility - Gamma 1.8 - Rec.709 - Texture,Gamma 1.8 Rec.709 - Texture,g18_rec709_tx,g18_rec709_scene",sdr-video,"file-io,texture",g18_rec709_scene
+502,Gamma 2.2 Encoded Rec.709,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.2_Encoded_Rec709:1.0,ColorSpace,,"g22_rec709,Utility - Gamma 2.2 - Rec.709 - Texture,Gamma 2.2 Rec.709 - Texture,g22_rec709_tx,g22_rec709_scene",sdr-video,"file-io,texture",g22_rec709_scene
+503,Gamma 2.4 Encoded Rec.709,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.4_Encoded_Rec709:1.0,ColorSpace,,"g24_rec709,rec709_display,Utility - Rec.709 - Display,Gamma 2.4 Rec.709 - Texture,g24_rec709_tx",sdr-video,"file-io,texture",ocio:g24_rec709_scene
+505,sRGB Encoded P3-D65,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB_Encoded_P3-D65:1.0,ColorSpace,,"srgb_p3d65,srgb_displayp3,srgb_p3d65_scene,sRGB Encoded P3-D65 - Texture,srgb_encoded_p3d65_tx",sdr-video,"file-io,texture",srgb_p3d65_scene
+506,Gamma 2.2 Encoded AdobeRGB,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.2_Encoded_AdobeRGB:1.0,ColorSpace,,"adobergb,g22_adobergb_scene",sdr-video,"file-io,texture",g22_adobergb_scene
+507,sRGB Encoded AP1,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB_Encoded_AP1:1.0,ColorSpace,,"srgb_ap1,srgb_ap1_scene,sRGB Encoded AP1 - Texture,srgb_encoded_ap1_tx",sdr-video,"file-io,texture",srgb_ap1_scene
+508,Gamma 2.2 Encoded AP1,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.2_Encoded_AP1:1.0,ColorSpace,,"g22_ap1,Gamma 2.2 AP1 - Texture,g22_ap1_tx,g22_ap1_scene",sdr-video,"file-io,texture",g22_ap1_scene
+520,CIE XYZ-D65 - Scene-referred,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_CIE_XYZ-D65-Scene-referred:1.0,ColorSpace,,lin_ciexyzd65_scene,scene-linear,file-io,lin_ciexyzd65_scene
+520,Linear AdobeRGB,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_AdobeRGB:1.0,ColorSpace,,"lin_adobergb,lin_adobergb_scene,Utility - Linear - Adobe RGB",scene-linear,"file-io,texture",lin_adobergb_scene
+520,Linear P3-D65,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_P3-D65:1.0,ColorSpace,,"lin_p3d65,lin_displayp3,lin_p3d65_scene,Utility - Linear - P3-D65,Linear Display P3",scene-linear,"file-io,working-space,texture",lin_p3d65_scene
+520,Linear Rec.2020,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_Rec2020:1.0,ColorSpace,,"lin_rec2020,lin_rec2020_scene,Utility - Linear - Rec.2020",scene-linear,"file-io,texture",lin_rec2020_scene
+520,Linear Rec.709 (sRGB),TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_Rec709:1.0,ColorSpace,,"lin_rec709,lin_rec709_scene,lin_srgb,Utility - Linear - sRGB,Utility - Linear - Rec.709",scene-linear,"file-io,working-space,texture",lin_rec709_scene
diff --git a/opencolorio_config_aces/config/generation/beautifiers.py b/opencolorio_config_aces/config/generation/beautifiers.py
index aa748072..11772390 100644
--- a/opencolorio_config_aces/config/generation/beautifiers.py
+++ b/opencolorio_config_aces/config/generation/beautifiers.py
@@ -173,6 +173,7 @@
PATTERNS_DISPLAY_NAME: dict[str, str] = {
"G2.6-": "",
+ "G2.2": "Gamma 2.2",
"-BFD": "",
"DisplayP3": "Display P3",
"REC.1886": "Rec.1886",
@@ -182,6 +183,7 @@
"-Rec.": " Rec.",
"-1000nit": "",
"P3-HDR": "P3 HDR",
+ "- MIRROR NEGS": "",
# Legacy Substitutions
"dcdm": "DCDM",
"p3": "P3",
diff --git a/opencolorio_config_aces/config/generation/common.py b/opencolorio_config_aces/config/generation/common.py
index bb64decb..5fda3095 100644
--- a/opencolorio_config_aces/config/generation/common.py
+++ b/opencolorio_config_aces/config/generation/common.py
@@ -93,6 +93,11 @@ class ConfigData:
views : array_like, optional
Config views, an iterable of dicts of display, view
and `Colorspace` names.
+ virtual_display_shared_views : array_like, optional
+ Config virtual display shared views, an iterable of shared view names.
+ virtual_display_views : array_like, optional
+ Config virtual display views, an iterable of dicts of view, `ViewTransform`,
+ `Colorspace` names, looks, rule name and description.
active_displays : array_like, optional
Config active displays, an iterable of display names.
active_views : array_like, optional
@@ -144,6 +149,8 @@ class ConfigData:
looks: list[dict[str, Any] | ocio.Look] = field(default_factory=list)
shared_views: list[dict[str, Any]] = field(default_factory=list)
views: list[dict[str, Any]] = field(default_factory=list)
+ virtual_display_shared_views: list[str] = field(default_factory=list)
+ virtual_display_views: list[dict[str, Any]] = field(default_factory=list)
active_displays: list[str] = field(default_factory=list)
active_views: list[str] = field(default_factory=list)
file_rules: list[dict[str, Any]] = field(default_factory=list)
@@ -365,6 +372,33 @@ def generate_config(
LOGGER.debug('Adding "%s" view to "%s" display.', view, display)
config.addDisplaySharedView(display, view)
+ for virtual_display_shared_view in data.virtual_display_shared_views:
+ LOGGER.debug(
+ 'Adding "%s" virtual display shared view.', virtual_display_shared_view
+ )
+ config.addVirtualDisplaySharedView(virtual_display_shared_view)
+
+ for virtual_display_view in data.virtual_display_views:
+ view_name = virtual_display_view["view"]
+ view_transform = virtual_display_view["view_transform"]
+ colorspace = virtual_display_view["colorspace"]
+ looks = virtual_display_view.get("looks", "")
+ rule = virtual_display_view.get("rule", "")
+ description = virtual_display_view.get("description", "")
+ LOGGER.debug(
+ 'Adding "%s" virtual display view using "%s" view transform, "%s" '
+ 'colorspace, "%s" looks, "%s" rule and "%s" description.',
+ view_name,
+ view_transform,
+ colorspace,
+ looks,
+ rule,
+ description,
+ )
+ config.addVirtualDisplayView(
+ view_name, view_transform, colorspace, looks, rule, description
+ )
+
if data.active_displays:
LOGGER.debug('Activating "%s" displays.', data.active_displays)
config.setActiveDisplays(",".join(data.active_displays))
@@ -375,8 +409,7 @@ def generate_config(
if data.file_rules:
file_rules = ocio.FileRules()
- rule_index = 0
- for file_rule in reversed(data.file_rules):
+ for i, file_rule in enumerate(data.file_rules):
name = file_rule["name"]
colorspace = file_rule["colorspace"]
regex = file_rule.get("regex")
@@ -397,8 +430,7 @@ def generate_config(
regex,
colorspace,
)
- file_rules.insertRule(rule_index, name, colorspace, regex)
- rule_index += 1
+ file_rules.insertRule(i, name, colorspace, regex)
else:
LOGGER.debug(
'Adding "%s" file rule with "%s" pattern and "%s" '
@@ -408,15 +440,20 @@ def generate_config(
extension,
colorspace,
)
- file_rules.insertRule(rule_index, name, colorspace, pattern, extension)
- rule_index += 1
+ file_rules.insertRule(i, name, colorspace, pattern, extension)
config.setFileRules(file_rules)
if data.viewing_rules:
viewing_rules = ocio.ViewingRules()
- for _i, _viewing_rule in enumerate(reversed(data.viewing_rules)):
- LOGGER.warning("Inserting a viewing rule is not supported yet!")
- # viewing_rules.insertRule()
+ for i, viewing_rule in enumerate(data.viewing_rules):
+ name = viewing_rule["name"]
+ encodings = viewing_rule["encodings"]
+ LOGGER.debug(
+ 'Adding "%s" viewing rule with "%s" encodings.', name, encodings
+ )
+ viewing_rules.insertRule(i, name)
+ for encoding in encodings:
+ viewing_rules.addEncoding(i, encoding)
config.setViewingRules(viewing_rules)
if data.default_view_transform is not None:
diff --git a/opencolorio_config_aces/config/generation/configuration.py b/opencolorio_config_aces/config/generation/configuration.py
index 2c9e8658..39a6264c 100644
--- a/opencolorio_config_aces/config/generation/configuration.py
+++ b/opencolorio_config_aces/config/generation/configuration.py
@@ -90,20 +90,20 @@ def extended_fields(self) -> dict[str, str]:
BUILD_CONFIGURATIONS: list[BuildConfiguration] = [
BuildConfiguration(
aces=Version(2, 0),
- colorspaces=Version(3, 0, 0),
- ocio=Version(2, 4),
+ colorspaces=Version(4, 0, 0),
+ ocio=Version(2, 5),
variant="",
),
BuildConfiguration(
aces=Version(2, 0),
- colorspaces=Version(3, 0, 0),
- ocio=Version(2, 4),
+ colorspaces=Version(4, 0, 0),
+ ocio=Version(2, 5),
variant="D60 Views",
),
BuildConfiguration(
aces=Version(2, 0),
- colorspaces=Version(3, 0, 0),
- ocio=Version(2, 4),
+ colorspaces=Version(4, 0, 0),
+ ocio=Version(2, 5),
variant="All Views",
),
]
@@ -120,6 +120,9 @@ def extended_fields(self) -> dict[str, str]:
"view_transform_filterers": [lambda x: "D60 in" not in x["name"]],
"shared_view_filterers": [lambda x: "D60 in" not in x["view_transform"]],
"view_filterers": [lambda x: "D60 in" not in x["view"]],
+ "amf_component_display_filterers": [
+ lambda x: "-D60_" not in x["transform_id"]
+ ],
},
},
"D60 Views": {
@@ -140,6 +143,7 @@ def extended_fields(self) -> dict[str, str]:
or x["view"] == "Un-tone-mapped"
or x["view"] == "Raw"
],
+ "amf_component_display_filterers": [lambda x: "-D60_" in x["transform_id"]],
},
},
"All Views": {"any": {}, "all": {}},
diff --git a/opencolorio_config_aces/config/generation/factories.py b/opencolorio_config_aces/config/generation/factories.py
index 49601815..d65bab85 100644
--- a/opencolorio_config_aces/config/generation/factories.py
+++ b/opencolorio_config_aces/config/generation/factories.py
@@ -124,6 +124,8 @@ def colorspace_factory(
from_reference: Mapping[str, Any] | ocio.Transform | None = None,
is_data: bool | None = None,
reference_space: str | int | None = None,
+ interop_id: str | None = None,
+ interchange_mapping: dict[str, str] | None = None,
base_colorspace: Mapping[str, Any] | ocio.ColorSpace | None = None,
**kwargs: Any,
) -> ocio.ColorSpace:
@@ -156,10 +158,18 @@ def colorspace_factory(
*To Reference* *OpenColorIO* transform.
from_reference : dict or object, optional
*From Reference* *OpenColorIO* transform.
- reference_space : unicode or ReferenceSpaceType, optional
- *OpenColorIO* `Colorspace` reference space.
is_data : bool, optional
Whether the `Colorspace` represents data.
+ reference_space : unicode or ReferenceSpaceType, optional
+ *OpenColorIO* `Colorspace` reference space.
+ interop_id : unicode, optional
+ *Color Interop Forum* ID.
+ See https://github.com/AcademySoftwareFoundation/ColorInterop/blob/\
+5aebc3f37ac192c86694a47bb92fa65cc95e4e67/Recommendations/\
+01_TextureAssetColorSpaces/TextureAssetColorSpaces.md
+ interchange_mapping : dict, optional
+ Mapping of key and value pairs for interchange, e.g.,
+ `amf_transform_ids` or `icc_profile_name`.
base_colorspace : dict or ColorSpace, optional
*OpenColorIO* base `Colorspace` inherited for initial attribute values.
@@ -252,6 +262,13 @@ def colorspace_factory(
if is_data is not None:
colorspace.setIsData(is_data) # pyright: ignore
+ if interop_id is not None:
+ colorspace.setInteropID(interop_id) # pyright: ignore
+
+ if interchange_mapping is not None:
+ for key, value in interchange_mapping.items():
+ colorspace.setInterchangeAttribute(key, value) # pyright: ignore
+
return colorspace
@@ -366,6 +383,7 @@ def view_transform_factory(
from_reference: Mapping[str, Any] | ocio.Transform | None = None,
reference_space: str | int | None = None,
base_view_transform: Mapping[str, Any] | ocio.ViewTransform | None = None,
+ interchange_mapping: dict[str, str] | None = None,
**kwargs: Any,
) -> ocio.ViewTransform:
"""
@@ -446,6 +464,10 @@ def view_transform_factory(
if description is not None:
view_transform.setDescription(description) # pyright: ignore
+ if interchange_mapping is not None:
+ for key, value in interchange_mapping.items():
+ view_transform.setInterchangeAttribute(key, value) # pyright: ignore
+
return view_transform
@@ -456,6 +478,7 @@ def look_factory(
forward_transform: Mapping[str, Any] | ocio.Transform | None = None,
inverse_transform: Mapping[str, Any] | ocio.Transform | None = None,
base_look: Mapping[str, Any] | ocio.Look | None = None,
+ interchange_mapping: dict[str, str] | None = None,
**kwargs: Any,
) -> ocio.Look:
"""
@@ -517,6 +540,10 @@ def look_factory(
if description is not None:
look.setDescription(description) # pyright: ignore
+ if interchange_mapping is not None:
+ for key, value in interchange_mapping.items():
+ look.setInterchangeAttribute(key, value) # pyright: ignore
+
return look
diff --git a/opencolorio_config_aces/config/reference/__init__.py b/opencolorio_config_aces/config/reference/__init__.py
index 8d94d86f..28e5ae0f 100644
--- a/opencolorio_config_aces/config/reference/__init__.py
+++ b/opencolorio_config_aces/config/reference/__init__.py
@@ -6,6 +6,7 @@
discover_aces_ctl_transforms,
classify_aces_ctl_transforms,
unclassify_ctl_transforms,
+ filter_amf_components,
filter_ctl_transforms,
generate_amf_components,
print_aces_taxonomy,
@@ -26,6 +27,7 @@
"discover_aces_ctl_transforms",
"classify_aces_ctl_transforms",
"unclassify_ctl_transforms",
+ "filter_amf_components",
"filter_ctl_transforms",
"generate_amf_components",
"print_aces_taxonomy",
diff --git a/opencolorio_config_aces/config/reference/aces b/opencolorio_config_aces/config/reference/aces
new file mode 160000
index 00000000..c2a37a08
--- /dev/null
+++ b/opencolorio_config_aces/config/reference/aces
@@ -0,0 +1 @@
+Subproject commit c2a37a08f898d28ba589a7835028c1442b95f02e
diff --git a/opencolorio_config_aces/config/reference/aces-system b/opencolorio_config_aces/config/reference/aces-system
deleted file mode 160000
index c2c58130..00000000
--- a/opencolorio_config_aces/config/reference/aces-system
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit c2c58130ab8e1d288ed2fb415efae0672fdbf6d4
diff --git a/opencolorio_config_aces/config/reference/discover/__init__.py b/opencolorio_config_aces/config/reference/discover/__init__.py
index 39ffe4b3..4d32aeb5 100644
--- a/opencolorio_config_aces/config/reference/discover/__init__.py
+++ b/opencolorio_config_aces/config/reference/discover/__init__.py
@@ -6,6 +6,7 @@
discover_aces_ctl_transforms,
classify_aces_ctl_transforms,
unclassify_ctl_transforms,
+ filter_amf_components,
filter_ctl_transforms,
generate_amf_components,
print_aces_taxonomy,
@@ -24,6 +25,7 @@
"discover_aces_ctl_transforms",
"classify_aces_ctl_transforms",
"unclassify_ctl_transforms",
+ "filter_amf_components",
"filter_ctl_transforms",
"generate_amf_components",
"print_aces_taxonomy",
diff --git a/opencolorio_config_aces/config/reference/discover/classify.py b/opencolorio_config_aces/config/reference/discover/classify.py
index caeaafa3..a2112927 100644
--- a/opencolorio_config_aces/config/reference/discover/classify.py
+++ b/opencolorio_config_aces/config/reference/discover/classify.py
@@ -32,6 +32,8 @@
from opencolorio_config_aces.utilities import (
attest,
+ filter_all,
+ filter_any,
message_box,
optional,
paths_common_ancestor,
@@ -70,6 +72,7 @@
"filter_ctl_transforms",
"print_aces_taxonomy",
"generate_amf_components",
+ "filter_amf_components",
]
LOGGER: logging.Logger = logging.getLogger(__name__)
@@ -195,14 +198,12 @@ def _exclusion_filterer_ARRIIDT(ctl_transform: CTLTransform) -> bool:
PATTERNS_DESCRIPTION_CTL : dict
"""
-PATH_AMF_COMPONENTS_FILE: Path = (
- Path(__file__).parents[0] / "resources" / "ACES_AMF_Components.json"
-)
+PATH_TRANSFORMS_FILE: Path = Path(__file__).parents[1] / "aces" / "transforms.json"
"""
-Path to the *ACES* *AMF* components file.
+Path to the *ACES* transforms file containing comprehensive metadata.
-PATH_AMF_COMPONENTS_FILE : unicode
+PATH_TRANSFORMS_FILE : unicode
"""
@@ -255,7 +256,7 @@ def patch_invalid_aces_transform_id(aces_transform_id: str) -> str:
ROOT_TRANSFORMS_CTL: str = os.path.normpath(
os.environ.get(
"OPENCOLORIO_CONFIG_CTL__CTL_TRANSFORMS_ROOT",
- os.path.join(os.path.dirname(__file__), "../", "aces-system"),
+ os.path.join(os.path.dirname(__file__), "../", "aces"),
)
)
"""
@@ -1459,23 +1460,16 @@ def print_aces_taxonomy() -> None:
def generate_amf_components(
- ctl_transforms: dict[str, dict[str, dict[str, CTLTransform | CTLTransformPair]]]
- | list[CTLTransform],
- raise_exception: bool = False,
+ include_previous_transform_ids: bool = False,
) -> dict[str, list[str]]:
"""
- Generate the *ACES* *AMF* components from given *ACES* *CTL* transforms.
+ Generate the *ACES* *AMF* components from the `transforms.json` file.
Parameters
----------
- ctl_transforms : dict or list
- *ACES* *CTL* transforms as returned by
- :func:`opencolorio_config_aces.classify_aces_ctl_transforms` or
- :func:`opencolorio_config_aces.unclassify_aces_ctl_transforms`
- definitions.
- raise_exception : bool, optional
- Whether to raise an exception if an *ACES* *ACEStransformID* is
- missing.
+ include_previous_transform_ids : bool
+ Whether to include the previous *ACEStransformID* in the *ACES* *AMF*
+ components.
Returns
-------
@@ -1485,78 +1479,131 @@ def generate_amf_components(
amf_components = defaultdict(list)
- with open(PATH_AMF_COMPONENTS_FILE) as json_file:
- content = json_file.readlines()
- content = json.loads(
- "\n".join([line for line in content if not line.strip().startswith("//")])
- )
+ with open(PATH_TRANSFORMS_FILE) as json_file:
+ json_data = json.load(json_file)
- attest(content["header"]["schema_version"].split(".")[0] == "1")
+ all_transforms = [
+ transform
+ for version_data in json_data["transformsData"].values()
+ for transform in version_data["transforms"]
+ ]
- amf_components_implicit = content["amf_components"]
+ for transform in all_transforms:
+ transform_id = transform["transformId"]
- if isinstance(ctl_transforms, Mapping):
- ctl_transforms = unclassify_ctl_transforms(ctl_transforms)
+ amf_components[transform_id].append(transform_id)
- # Checking that the explicit "ACEStransformID" do exist.
- for aces_transform_id, relations in amf_components_implicit.items():
- explicit_aces_transform_ids = [aces_transform_id]
- explicit_aces_transform_ids.extend(relations)
-
- for explicit_aces_transform_id in explicit_aces_transform_ids:
- filtered_ctl_transforms = filter_ctl_transforms(
- ctl_transforms,
- [
- lambda x, y=explicit_aces_transform_id: (
- x.aces_transform_id.aces_transform_id == y
- )
- ],
+ if include_previous_transform_ids:
+ amf_components[transform_id].extend(
+ transform["previousEquivalentTransformIds"]
)
- ctl_transform = next(iter(filtered_ctl_transforms), None)
+ if (inverse_transform_id := transform.get("inverseTransformId")) is not None:
+ amf_components[inverse_transform_id].append(inverse_transform_id)
+ amf_components[inverse_transform_id].append(transform_id)
- if ctl_transform is None:
- exception_message = (
- f'"aces-dev" has no transform with '
- f'"{explicit_aces_transform_id}" "ACEStransformID!'
+ amf_components[transform_id].append(inverse_transform_id)
+
+ if include_previous_transform_ids:
+ amf_components[inverse_transform_id].extend(
+ transform["previousEquivalentTransformIds"]
)
- if raise_exception:
- attest(False, exception_message)
- else:
- LOGGER.critical(exception_message)
+ return {
+ key: sorted({transform_id for transform_id in transform_ids if transform_id})
+ for key, transform_ids in amf_components.items()
+ if transform_ids
+ }
- for ctl_transform in ctl_transforms:
- aces_transform_id = ctl_transform.aces_transform_id.aces_transform_id
-
- for siblings in [
- ctl_transform.siblings
- for ctl_transform in filter_ctl_transforms(
- ctl_transforms,
- [
- lambda x, y=aces_transform_id: (
- x.aces_transform_id.aces_transform_id == y
- )
- ],
- )
- ]:
- for sibling in siblings:
- amf_components[aces_transform_id].append(
- sibling.aces_transform_id.aces_transform_id
- )
- # Extending with explicit relations.
- for aces_transform_id, relations in amf_components_implicit.items():
- amf_components[aces_transform_id].extend(relations)
+def filter_amf_components(
+ amf_components: dict[str, list[str]],
+ aces_transform_id: str,
+ filter_any_filterers: list[Callable[[dict[str, Any]], bool]] | None = None,
+ filter_all_filterers: list[Callable[[dict[str, Any]], bool]] | None = None,
+) -> list[str]:
+ """
+ Filter the *ACES* *AMF* components for specified *ACEStransformID*.
- # Generating the permutations.
- for aces_transform_id, relations in amf_components.copy().items():
- for relation in relations:
- amf_components[relation] = sorted(
- {*relations, *amf_components[relation], aces_transform_id} - {relation}
+ Parameters
+ ----------
+ amf_components : dict
+ *ACES* *AMF* components to filter.
+ aces_transform_id : str
+ *ACEStransformID* to filter the *ACES* *AMF* components with.
+ filter_any_filterers : list[Callable[[dict[str, Any]], bool]] | None, optional
+ List of filter functions for OR logic filtering. Each function should
+ accept a dictionary with *transform_id* key and return True if the
+ element passes the filter condition.
+ filter_all_filterers : list[Callable[[dict[str, Any]], bool]] | None, optional
+ List of filter functions for AND logic filtering. Each function should
+ accept a dictionary with *transform_id* key and return True if the
+ element passes the filter condition.
+
+ Returns
+ -------
+ list
+ Filtered *ACES* *AMF* components.
+
+ Examples
+ --------
+ >>> amf_components = {
+ ... "DISPLAY - CIE-XYZ-D65_to_sRGB - MIRROR NEGS": [
+ ... 'urn:ampas:aces:transformId:v2.0:Output.Academy.\
+Rec709-D65_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1',
+ ... 'urn:ampas:aces:transformId:v2.0:InvOutput.Academy.\
+Rec709-D65_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1',
+ ... 'urn:ampas:aces:transformId:v2.0:Output.Academy.\
+Rec709-D60_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1',
+ ... 'urn:ampas:aces:transformId:v2.0:InvOutput.Academy.\
+Rec709-D60_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1'
+ ... ]
+ ... }
+ >>> filterers_all = [lambda x: "-D60_" not in x['transform_id']]
+ >>> filter_amf_components(
+ ... amf_components,
+ ... "DISPLAY - CIE-XYZ-D65_to_sRGB - MIRROR NEGS",
+ ... filterers_all
+ ... ) # doctest: +ELLIPSIS
+ ['urn:ampas:aces:transformId:v2.0:InvOutput.Academy.\
+Rec709-D65_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1', \
+'urn:ampas:aces:transformId:v2.0:Output.Academy.\
+Rec709-D65_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1']
+ >>> filterers_all = [lambda x: "-D60_" in x['transform_id']]
+ >>> filter_amf_components(
+ ... amf_components,
+ ... "DISPLAY - CIE-XYZ-D65_to_sRGB - MIRROR NEGS",
+ ... filterers_all
+ ... ) # doctest: +ELLIPSIS
+ ['urn:ampas:aces:transformId:v2.0:InvOutput.Academy.\
+Rec709-D60_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1', \
+'urn:ampas:aces:transformId:v2.0:Output.Academy.\
+Rec709-D60_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1']
+ """
+
+ filtered_amf_components = amf_components.get(aces_transform_id, [])
+
+ if filter_any_filterers or filter_all_filterers:
+ filtered_amf_components_dicts = [
+ {"transform_id": transform_id} for transform_id in filtered_amf_components
+ ]
+
+ if filter_any_filterers:
+ filtered_amf_components_dicts = filter_any(
+ filtered_amf_components_dicts, filter_any_filterers
+ )
+
+ if filter_all_filterers:
+ filtered_amf_components_dicts = filter_all(
+ filtered_amf_components_dicts, filter_all_filterers
)
- return dict(amf_components)
+ filtered_amf_components = [
+ filtered_amf_components_dict["transform_id"]
+ for filtered_amf_components_dict in filtered_amf_components_dicts
+ ]
+
+ return sorted(filtered_amf_components)
if __name__ == "__main__":
diff --git a/opencolorio_config_aces/config/reference/discover/resources/ACES_AMF_Components.json b/opencolorio_config_aces/config/reference/discover/resources/ACES_AMF_Components.json
deleted file mode 100644
index 93d01bc7..00000000
--- a/opencolorio_config_aces/config/reference/discover/resources/ACES_AMF_Components.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "header": {
- "schema_version": "1.0.0"
- },
- "amf_components": {
- "urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.BMDFilm_WideGamut_Gen5_to_ACES.a1.v1": [
- "urn:ampas:aces:transformId:v2.0:CSC.Blackmagic.BMDFilm_WideGamut_Gen5_to_ACES.a2.v1"
- ],
- "urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.LogC_EI800_AWG_to_ACES.a1.1.0": [
- "urn:ampas:aces:transformId:v2.0:CSC.Arri.LogCv3_to_ACES.a2.v1"
- ],
- "urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.SLog3_SGamut3_to_ACES.a1.1.0": [
- "urn:ampas:aces:transformId:v2.0:CSC.Sony.SLog3_SGamut3_to_ACES.a2.v1"
- ],
- "urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.SLog3_SGamut3Cine_to_ACES.a1.1.0": [
- "urn:ampas:aces:transformId:v2.0:CSC.Sony.SLog3_SGamut3Cine_to_ACES.a2.v1"
- ],
- "urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.SLog3_Venice_SGamut3_to_ACES.a1.1.0": [
- "urn:ampas:aces:transformId:v2.0:CSC.Sony.Venice_SLog3_SGamut3_to_ACES.a2.v1"
- ],
- "urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.SLog3_Venice_SGamut3Cine_to_ACES.a1.1.0": [
- "urn:ampas:aces:transformId:v2.0:CSC.Sony.Venice_SLog3_SGamut3Cine_to_ACES.a2.v1"
- ],
- // Not a published "ACEStransformID" but was approved by "Graeme Natress"
- // during private discussions with "Carol Payne" and "Doug Walker" in March 2022.
- "urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.Log3G10_RWG_to_ACES.a1.1.0": [
- "urn:ampas:aces:transformId:v2.0:CSC.Red.Log3G10_RWG_to_ACES.a2.v1"
- ],
- // The related "ACEStransformID" is not in "aces-dev" but available online
- // in the following "IDT" : https://pro-av.panasonic.net/en/\
- // cinema_camera_varicam_eva/support/download_data/\
- // idt_panasonic_forV35_ver100.zip
- "urn:ampas:aces:transformId:v2.0:CSC.Panasonic.VLog_VGamut_to_ACES.a2.v1": [
- "urn:ampas:aces:transformId:v1.5:IDT.Panasonic.VLog_VGamut.a1.v1"
- ],
- // The related "ACEStransformID" are not yet in "aces-dev" but pending in
- // a pull request: https://github.com/ampas/aces-dev/pull/137
- "urn:ampas:aces:transformId:v2.0:CSC.Arri.LogCv4_to_ACES.a2.v1": [
- "urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.LogC4_to_ACES.a1.1.0",
- "urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_LogC4.a1.1.0"
- ]
- }
-}
diff --git a/opencolorio_config_aces/config/reference/generate/config.py b/opencolorio_config_aces/config/reference/generate/config.py
index 2a9bc10e..b38250ba 100644
--- a/opencolorio_config_aces/config/reference/generate/config.py
+++ b/opencolorio_config_aces/config/reference/generate/config.py
@@ -44,6 +44,7 @@
from opencolorio_config_aces.config.reference import (
classify_aces_ctl_transforms,
discover_aces_ctl_transforms,
+ filter_amf_components,
filter_ctl_transforms,
generate_amf_components,
unclassify_ctl_transforms,
@@ -72,7 +73,6 @@
"COLORSPACE_SCENE_ENCODING_REFERENCE",
"FAMILY_DISPLAY_REFERENCE",
"TEMPLATE_ACES_TRANSFORM_ID",
- "HEADER_AMF_COMPONENTS",
"DescriptionStyle",
"format_optional_prefix",
"format_swapped_affix",
@@ -134,13 +134,6 @@
TEMPLATE_ACES_TRANSFORM_ID : unicode
"""
-HEADER_AMF_COMPONENTS: str = "AMF Components\n--------------"
-"""
-Header for the description of the *ACES* *AMF* components.
-
-HEADER_AMF_COMPONENTS : unicode
-"""
-
class DescriptionStyle(Flag):
"""
@@ -152,9 +145,8 @@ class DescriptionStyle(Flag):
OPENCOLORIO = auto()
SHORT = auto()
LONG = auto()
- AMF = auto()
- SHORT_UNION = ACES | OPENCOLORIO | SHORT | AMF
- LONG_UNION = ACES | OPENCOLORIO | LONG | AMF
+ SHORT_UNION = ACES | OPENCOLORIO | SHORT
+ LONG_UNION = ACES | OPENCOLORIO | LONG
def format_optional_prefix(name: str, prefix: str, scheme: str = "Modern 1") -> str:
@@ -316,7 +308,6 @@ def ctl_transform_to_transform_family(
def ctl_transform_to_description(
ctl_transform: CTLTransform,
describe: DescriptionStyle = DescriptionStyle.LONG_UNION,
- amf_components: dict[str, list[str]] | None = None,
factory: Callable[..., Any] = colorspace_factory,
**kwargs: Any,
) -> str | None:
@@ -331,9 +322,6 @@ def ctl_transform_to_description(
describe : bool, optional
*ACES* *CTL* transform description style. Any value from the
:class:`opencolorio_config_aces.DescriptionStyle` enum.
- amf_components : mapping, optional
- *ACES* *AMF* components used to extend the *ACES* *CTL* transform
- description.
factory : callable, optional
Factory used to adjust the code paths because of slight difference
of signature between the *OpenColorIO* `Colorspace` and `Look`.
@@ -350,14 +338,10 @@ def ctl_transform_to_description(
*OpenColorIO* `Colorspace` or `Look` description.
"""
- amf_components = optional(amf_components, {})
-
description = None
if describe != DescriptionStyle.NONE:
description = []
-
if describe in (
- DescriptionStyle.OPENCOLORIO,
DescriptionStyle.SHORT_UNION,
DescriptionStyle.LONG_UNION,
):
@@ -372,53 +356,28 @@ def ctl_transform_to_description(
"inverse_transform",
]
)
+
transforms = [
transform
for transform in (kwargs.get(forward), kwargs.get(inverse))
if transform is not None
]
+
transform = produce_transform(next(iter(transforms), None))
+
if isinstance(transform, ocio.BuiltinTransform):
description.append(transform.getDescription())
- if describe in (
- DescriptionStyle.ACES,
- DescriptionStyle.ACES | DescriptionStyle.SHORT,
- DescriptionStyle.SHORT_UNION,
- DescriptionStyle.LONG_UNION,
- ):
+ if describe in (DescriptionStyle.LONG_UNION,):
if len(description) > 0:
description.append("")
aces_transform_id = ctl_transform.aces_transform_id.aces_transform_id
- if describe in (
- DescriptionStyle.ACES,
- DescriptionStyle.ACES | DescriptionStyle.SHORT,
- DescriptionStyle.SHORT_UNION,
- ):
- description.append(TEMPLATE_ACES_TRANSFORM_ID.format(aces_transform_id))
- else:
- description.append("CTL Transform")
- description.append(f'{"=" * len(description[-1])}\n')
- description.append(f"{ctl_transform.description}\n")
- description.append(TEMPLATE_ACES_TRANSFORM_ID.format(aces_transform_id))
-
- if describe in (
- DescriptionStyle.AMF,
- DescriptionStyle.SHORT_UNION,
- DescriptionStyle.LONG_UNION,
- ):
- amf_components_description = [
- TEMPLATE_ACES_TRANSFORM_ID.format(amf_aces_transform_id)
- for amf_aces_transform_id in amf_components.get(
- aces_transform_id, []
- )
- ]
- if amf_components_description:
- description.append("")
- description.append(HEADER_AMF_COMPONENTS)
- description.extend(amf_components_description)
+ description.append("CTL Transform")
+ description.append(f'{"=" * len(description[-1])}\n')
+ description.append(f"{ctl_transform.description}\n")
+ description.append(TEMPLATE_ACES_TRANSFORM_ID.format(aces_transform_id))
description = "\n".join(description)
@@ -428,7 +387,6 @@ def ctl_transform_to_description(
def ctl_transform_to_colorspace(
ctl_transform: CTLTransform,
describe: DescriptionStyle = DescriptionStyle.LONG_UNION,
- amf_components: dict[str, list[str]] | None = None,
signature_only: bool = False,
scheme: str = "Modern 1",
analytical: bool = True,
@@ -445,9 +403,6 @@ def ctl_transform_to_colorspace(
describe : bool, optional
*ACES* *CTL* transform description style. Any value from the
:class:`opencolorio_config_aces.DescriptionStyle` enum.
- amf_components : mapping, optional
- *ACES* *AMF* components used to extend the *OpenColorIO* `Colorspace`
- description.
signature_only : bool, optional
Whether to return the *OpenColorIO* `Colorspace` signature only, i.e.,
the arguments for its instantiation.
@@ -474,7 +429,7 @@ def ctl_transform_to_colorspace(
name = ctl_transform_to_colorspace_name(ctl_transform)
family = ctl_transform_to_transform_family(ctl_transform, analytical)
description = ctl_transform_to_description(
- ctl_transform, describe, amf_components, colorspace_factory, **kwargs
+ ctl_transform, describe, colorspace_factory, **kwargs
)
signature = {
@@ -499,7 +454,6 @@ def ctl_transform_to_colorspace(
def ctl_transform_to_look(
ctl_transform: CTLTransform,
describe: DescriptionStyle = DescriptionStyle.LONG_UNION,
- amf_components: dict[str, list[str]] | None = None,
signature_only: bool = False,
scheme: str = "Modern 1",
analytical: bool = True,
@@ -516,9 +470,6 @@ def ctl_transform_to_look(
describe : bool, optional
*ACES* *CTL* transform description style. Any value from the
:class:`opencolorio_config_aces.DescriptionStyle` enum.
- amf_components : mapping, optional
- *ACES* *AMF* components used to extend the *OpenColorIO* `Look`
- description.
signature_only : bool, optional
Whether to return the *OpenColorIO* `Look` signature only, i.e., the
arguments for its instantiation.
@@ -545,7 +496,7 @@ def ctl_transform_to_look(
name = ctl_transform_to_look_name(ctl_transform)
family = ctl_transform_to_transform_family(ctl_transform, analytical)
description = ctl_transform_to_description(
- ctl_transform, describe, amf_components, look_factory, **kwargs
+ ctl_transform, describe, look_factory, **kwargs
)
signature = {
@@ -566,7 +517,6 @@ def style_to_view_transform(
style: str,
ctl_transforms: list[CTLTransform],
describe: DescriptionStyle = DescriptionStyle.LONG_UNION,
- amf_components: dict[str, list[str]] | None = None,
signature_only: bool = False,
scheme: str = "Modern 1",
**kwargs: Any,
@@ -584,9 +534,6 @@ class instances corresponding to the given style.
describe : int, optional
Any value from the :class:`opencolorio_config_aces.DescriptionStyle`
enum.
- amf_components : mapping, optional
- *ACES* *AMF* components used to extend the *OpenColorIO* `ViewTransform`
- description.
signature_only : bool, optional
Whether to return the *OpenColorIO* `ViewTransform` signature only,
i.e., the arguments for its instantiation.
@@ -606,9 +553,6 @@ class instances corresponding to the given style.
*OpenColorIO* `ViewTransform` or its signature for given style.
"""
- if amf_components is None:
- amf_components = {}
-
name = beautify_view_transform_name(style)
builtin_transform = ocio.BuiltinTransform(style)
@@ -617,18 +561,12 @@ class instances corresponding to the given style.
description = []
if describe in (
- DescriptionStyle.OPENCOLORIO,
DescriptionStyle.SHORT_UNION,
DescriptionStyle.LONG_UNION,
):
description.append(builtin_transform.getDescription())
- if describe in (
- DescriptionStyle.ACES,
- DescriptionStyle.ACES | DescriptionStyle.SHORT,
- DescriptionStyle.SHORT_UNION,
- DescriptionStyle.LONG_UNION,
- ):
+ if describe in (DescriptionStyle.LONG_UNION,):
aces_transform_ids, aces_descriptions = zip(
*[
(
@@ -642,53 +580,22 @@ class instances corresponding to the given style.
if len(description) > 0:
description.append("")
- if describe in (
- DescriptionStyle.ACES | DescriptionStyle.SHORT,
- DescriptionStyle.SHORT_UNION,
- ):
- description.extend(
+ description.append(
+ f'CTL Transform{"s" if len(aces_transform_ids) >= 2 else ""}'
+ )
+ description.append(f'{"=" * len(description[-1])}\n')
+
+ description.append(
+ f'\n{"-" * 80}\n\n'.join(
[
- f"ACEStransformID: {aces_transform_id}"
- for aces_transform_id in aces_transform_ids
+ (
+ f"{aces_descriptions[i]}\n\n"
+ f"ACEStransformID: {aces_transform_id}\n"
+ )
+ for i, aces_transform_id in enumerate(aces_transform_ids)
]
)
- else:
- description.append(
- f'CTL Transform{"s" if len(aces_transform_ids) >= 2 else ""}'
- )
- description.append(f'{"=" * len(description[-1])}\n')
-
- description.append(
- f'\n{"-" * 80}\n\n'.join(
- [
- (
- f"{aces_descriptions[i]}\n\n"
- f"ACEStransformID: {aces_transform_id}\n"
- )
- for i, aces_transform_id in enumerate(aces_transform_ids)
- ]
- )
- )
-
- if describe in (
- DescriptionStyle.AMF,
- DescriptionStyle.SHORT_UNION,
- DescriptionStyle.LONG_UNION,
- ):
- amf_components_description = []
- for aces_transform_id in aces_transform_ids:
- amf_components_description.extend(
- [
- TEMPLATE_ACES_TRANSFORM_ID.format(amf_aces_transform_id)
- for amf_aces_transform_id in amf_components.get(
- aces_transform_id, []
- )
- ]
- )
- if amf_components_description:
- description.append("")
- description.append(HEADER_AMF_COMPONENTS)
- description.extend(amf_components_description)
+ )
description = "\n".join(description)
@@ -719,7 +626,6 @@ class instances corresponding to the given style.
def style_to_display_colorspace(
style: str,
describe: DescriptionStyle = DescriptionStyle.OPENCOLORIO,
- amf_components: dict[str, list[str]] | None = None,
signature_only: bool = False,
scheme: str = "Modern 1",
**kwargs: Any,
@@ -735,9 +641,6 @@ def style_to_display_colorspace(
describe : int, optional
Any value from the :class:`opencolorio_config_aces.DescriptionStyle`
enum.
- amf_components : mapping, optional
- *ACES* *AMF* components used to extend the *OpenColorIO* display
- `Colorspace` description.
signature_only : bool, optional
Whether to return the *OpenColorIO* display `Colorspace` signature only,
i.e., the arguments for its instantiation.
@@ -757,9 +660,6 @@ def style_to_display_colorspace(
*OpenColorIO* display `Colorspace` or its signature for given style.
"""
- if amf_components is None:
- amf_components = {}
-
kwargs.setdefault("family", FAMILY_DISPLAY_REFERENCE)
name = beautify_display_name(style)
@@ -770,7 +670,6 @@ def style_to_display_colorspace(
description = []
if describe in (
- DescriptionStyle.OPENCOLORIO,
DescriptionStyle.SHORT_UNION,
DescriptionStyle.LONG_UNION,
):
@@ -779,19 +678,6 @@ def style_to_display_colorspace(
if len(description) > 0:
description.append("")
- if describe in (
- DescriptionStyle.AMF,
- DescriptionStyle.SHORT_UNION,
- DescriptionStyle.LONG_UNION,
- ):
- amf_components_description = [
- TEMPLATE_ACES_TRANSFORM_ID.format(amf_aces_transform_id)
- for amf_aces_transform_id in amf_components.get(style, [])
- ]
- if amf_components_description:
- description.append(HEADER_AMF_COMPONENTS)
- description.extend(amf_components_description)
-
description = "\n".join(description)
signature = {
@@ -840,6 +726,9 @@ def transform_data_aliases(transform_data: dict[str, Any]) -> list[str]:
if not aliases:
aliases = []
+ if (interop_id := transform_data.get("interop_id")) is not None:
+ aliases.append(interop_id)
+
if as_bool(transform_data["legacy"]):
return [transform_data["colorspace"], *aliases]
else:
@@ -951,6 +840,8 @@ def generate_config_aces(
config_mapping_file_path: Any = PATH_TRANSFORMS_MAPPING_FILE_REFERENCE,
scheme: str = "Modern 1",
analytical: bool = True,
+ additional_filterers: dict[str, dict[str, list[Callable[[Any], bool]]]]
+ | None = None,
additional_data: bool = False,
) -> Any:
"""
@@ -988,6 +879,21 @@ def generate_config_aces(
Whether to generate *OpenColorIO* transform families that analytically
match the given *ACES* *CTL* transform, i.e., true to the *aces-dev*
reference but not necessarily user-friendly.
+ additional_filterers : dict, optional
+ Additional filterers to further include or exclude components from the
+ generated config.
+
+ .. code-block:: python
+
+ filterer = [lambda x: "-D60_" not in x["transform_id"]]
+
+ {
+ "any": {},
+ "all": {
+ "amf_component_display_filterers": filterer,
+ },
+ },
+
additional_data : bool, optional
Whether to return additional data.
@@ -1004,12 +910,16 @@ def generate_config_aces(
config_name_aces(build_configuration),
)
+ # TODO: Implement full filtering for all the transforms that is defined
+ # in the *CG* config.
+ additional_filterers = optional(additional_filterers, {"any": {}, "all": {}})
+
LOGGER.debug('Using %s "Builtin" transforms...', list(BUILTIN_TRANSFORMS.keys()))
ctl_transforms = unclassify_ctl_transforms(
classify_aces_ctl_transforms(discover_aces_ctl_transforms())
)
- amf_components = generate_amf_components(ctl_transforms)
+ amf_components = generate_amf_components()
LOGGER.debug('Using %s "CTL" transforms...', ctl_transforms)
@@ -1028,9 +938,11 @@ def generate_config_aces(
"builtin_transform_style",
"linked_display_colorspace_style",
"interface",
+ "viewing_rule",
"encoding",
"categories",
"aliases",
+ "interop_id",
],
)
@@ -1055,6 +967,20 @@ def generate_config_aces(
)
continue
+ # Extending the "AMF" relations.
+ if not amf_components.get(style):
+ amf_components[style] = []
+
+ if (
+ aces_transform_id := transform_data.get("aces_transform_id")
+ ) is not None:
+ amf_components[style].extend(
+ {
+ aces_transform_id,
+ *amf_components.get(aces_transform_id, []),
+ }
+ )
+
# Checking whether the linked "DisplayColorspace"
# "BuiltinTransform" style exists.
style = transform_data["linked_display_colorspace_style"]
@@ -1129,6 +1055,7 @@ def generate_config_aces(
"description": 'The "Academy Color Encoding System" reference colorspace.',
"encoding": "scene-linear",
"categories": ["file-io", "texture"],
+ "interop_id": "lin_ap0_scene",
}
scene_reference_colorspace["aliases"] = [
beautify_alias(scene_reference_colorspace["name"]),
@@ -1143,10 +1070,12 @@ def generate_config_aces(
"description": 'The "CIE XYZ (D65)" display connection colorspace.',
"reference_space": "REFERENCE_SPACE_DISPLAY",
"encoding": "display-linear",
+ "interop_id": "ocio:lin_ciexyzd65_display",
}
display_reference_colorspace["aliases"] = [ # pyright: ignore
"cie_xyz_d65_display",
"lin_ciexyzd65_display",
+ "ocio:lin_ciexyzd65_display",
]
raw_colorspace = {
@@ -1156,6 +1085,7 @@ def generate_config_aces(
"is_data": True,
"categories": ["file-io", "texture"],
"encoding": "data",
+ "interop_id": "data",
}
raw_colorspace["aliases"] = [
beautify_alias(raw_colorspace["name"]),
@@ -1182,9 +1112,13 @@ def generate_config_aces(
style,
[transform_data["ctl_transform"]],
describe,
- amf_components,
signature_only=True,
scheme=scheme,
+ interchange_mapping={
+ "amf_transform_ids": "\n".join(
+ filter_amf_components(amf_components, style)
+ )
+ },
)
view_transform["transforms_data"] = [transform_data]
view_transforms.append(view_transform)
@@ -1198,12 +1132,26 @@ def generate_config_aces(
display = style_to_display_colorspace(
display_style,
describe,
- amf_components,
signature_only=True,
scheme=scheme,
encoding=transform_data.get("encoding"),
categories=transform_data.get("categories"),
aliases=transform_data_aliases(transform_data),
+ interop_id=transform_data.get("interop_id"),
+ interchange_mapping={
+ "amf_transform_ids": "\n".join(
+ filter_amf_components(
+ amf_components,
+ display_style,
+ additional_filterers["any"].get(
+ "amf_component_display_filterers"
+ ),
+ additional_filterers["all"].get(
+ "amf_component_display_filterers"
+ ),
+ )
+ )
+ },
)
display["transforms_data"] = [transform_data]
display_name = display["name"]
@@ -1220,6 +1168,7 @@ def generate_config_aces(
"display": display_name,
"view": view_transform_name,
"view_transform": view_transform_name,
+ "rule": transform_data["viewing_rule"],
}
if shared_view not in shared_views:
LOGGER.info(
@@ -1234,7 +1183,6 @@ def generate_config_aces(
look = ctl_transform_to_look(
ctl_transform,
describe,
- amf_components,
signature_only=True,
scheme=scheme,
analytical=analytical,
@@ -1243,6 +1191,11 @@ def generate_config_aces(
"style": style,
},
process_space=scene_reference_colorspace["name"],
+ interchange_mapping={
+ "amf_transform_ids": "\n".join(
+ filter_amf_components(amf_components, style)
+ )
+ },
)
look["transforms_data"] = [transform_data]
if look not in looks:
@@ -1256,7 +1209,6 @@ def generate_config_aces(
colorspace = ctl_transform_to_colorspace(
ctl_transform,
describe,
- amf_components,
signature_only=True,
scheme=scheme,
analytical=analytical,
@@ -1267,6 +1219,15 @@ def generate_config_aces(
encoding=transform_data.get("encoding"),
categories=transform_data.get("categories"),
aliases=transform_data_aliases(transform_data),
+ interop_id=transform_data.get("interop_id"),
+ interchange_mapping={
+ "amf_transform_ids": "\n".join(
+ filter_amf_components(
+ amf_components,
+ ctl_transform.aces_transform_id.aces_transform_id,
+ )
+ )
+ },
)
colorspace["transforms_data"] = [transform_data]
if colorspace not in colorspaces:
@@ -1330,12 +1291,42 @@ def ordering(element: str) -> int:
"transform_type": "BuiltinTransform",
"style": "UTILITY - ACES-AP0_to_CIE-XYZ-D65_BFD",
},
+ "rule": "Any Scene-linear or Log",
+ }
+
+ video_view_transform = {
+ "name": "Video (colorimetric)",
+ "from_reference": {
+ "transform_type": "MatrixTransform",
+ "matrix": [
+ 1.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 1.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 1.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 0.0000000000,
+ 1.0000000000,
+ ],
+ },
+ "reference_space": ocio.REFERENCE_SPACE_DISPLAY,
+ "rule": "Any Video",
}
+
for display_name in display_names:
untonemapped_shared_view = {
"display": display_name,
"view": untonemapped_view_transform["name"],
"view_transform": untonemapped_view_transform["name"],
+ "rule": untonemapped_view_transform["rule"],
}
LOGGER.info(
'Adding "%s" shared view to "%s" display.',
@@ -1346,6 +1337,21 @@ def ordering(element: str) -> int:
if untonemapped_shared_view not in shared_views:
shared_views.append(untonemapped_shared_view)
+ video_shared_view = {
+ "display": display_name,
+ "view": video_view_transform["name"],
+ "view_transform": video_view_transform["name"],
+ "rule": video_view_transform["rule"],
+ }
+ LOGGER.info(
+ 'Adding "%s" shared view to "%s" display.',
+ video_shared_view["view"],
+ display_name,
+ )
+
+ if video_shared_view not in shared_views:
+ shared_views.append(video_shared_view)
+
raw_view = {
"display": display_name,
"view": "Raw",
@@ -1382,16 +1388,38 @@ def ordering(element: str) -> int:
},
colorspaces=colorspaces + displays,
looks=looks,
- view_transforms=[*view_transforms, untonemapped_view_transform],
+ view_transforms=[
+ *view_transforms,
+ untonemapped_view_transform,
+ video_view_transform,
+ ],
shared_views=shared_views,
views=shared_views + views,
active_displays=display_names,
- active_views=[*active_views, "Un-tone-mapped", "Raw"],
+ active_views=[*active_views, "Un-tone-mapped", "Video (colorimetric)", "Raw"],
file_rules=[
{
- "name": "Default",
+ "name": "EXR",
"colorspace": scene_reference_colorspace["name"],
- }
+ "pattern": "*",
+ "extension": "exr",
+ },
+ {
+ "name": "Movies",
+ "colorspace": "Rec.1886 Rec.709 - Display",
+ "regex": ".*\\.([mM][pP]4|[mM][oO][vV]|[mM][xX][fF])$",
+ },
+ {
+ "name": "Default",
+ "colorspace": "sRGB - Display",
+ },
+ ],
+ viewing_rules=[
+ {"name": "Any Scene-linear or Log", "encodings": ["log", "scene-linear"]},
+ {
+ "name": "Any Video",
+ "encodings": ["sdr-video", "hdr-video", "edr-video", "display-linear"],
+ },
],
default_view_transform=untonemapped_view_transform["name"],
profile_version=build_configuration.ocio,
diff --git a/opencolorio_config_aces/config/reference/generate/resources/Loading... - Reference Config - Mapping.csv b/opencolorio_config_aces/config/reference/generate/resources/Loading... - Reference Config - Mapping.csv
new file mode 100644
index 00000000..cdb98e71
--- /dev/null
+++ b/opencolorio_config_aces/config/reference/generate/resources/Loading... - Reference Config - Mapping.csv
@@ -0,0 +1,68 @@
+Ordering,ACEStransformID,Colorspace,Legacy,BuiltinTransform Style,Linked DisplayColorSpace Style,Interface,ViewingRule,Encoding,Categories,Aliases,InteropId
+100,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScc_to_ACES.a2.v1,ACES - ACEScc,TRUE,ACEScc_to_ACES2065-1,,ColorSpace,,log,file-io,"acescc,acescc_ap1",ocio:acescc_ap1_scene
+100,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScct_to_ACES.a2.v1,ACES - ACEScct,TRUE,ACEScct_to_ACES2065-1,,ColorSpace,,log,"file-io,working-space","acescct,acescct_ap1",ocio:acescct_ap1_scene
+100,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScg_to_ACES.a2.v1,ACES - ACEScg,TRUE,ACEScg_to_ACES2065-1,,ColorSpace,,scene-linear,"file-io,working-space,texture","acescg,lin_ap1,lin_ap1_scene,ACES - ACEScg",lin_ap1_scene
+100,urn:ampas:aces:transformId:v2.0:CSC.Academy.ADX10_to_ACES.a2.v1,Input - ADX - ADX10,TRUE,ADX10_to_ACES2065-1,,ColorSpace,,log,file-io,adx10,ocio:adx10_apd_scene
+100,urn:ampas:aces:transformId:v2.0:CSC.Academy.ADX16_to_ACES.a2.v1,Input - ADX - ADX16,TRUE,ADX16_to_ACES2065-1,,ColorSpace,,log,file-io,adx16,ocio:adx16_apd_scene
+105,urn:ampas:aces:transformId:v2.0:CSC.Apple.AppleLog_BT2020_to_ACES.a2.v1,,FALSE,APPLE_LOG_to_ACES2065-1,,ColorSpace,,log,file-io,,ocio:applelog_rec2020_scene
+110,urn:ampas:aces:transformId:v2.0:CSC.Arri.LogC3_to_ACES.a2.v1,,FALSE,ARRI_ALEXA-LOGC-EI800-AWG_to_ACES2065-1,,ColorSpace,,log,file-io,logc3ei800_alexawide,ocio:arrilogc3_awg3_scene
+110,urn:ampas:aces:transformId:v2.0:CSC.Arri.LogC4_to_ACES.a2.v1,,FALSE,ARRI_LOGC4_to_ACES2065-1,,ColorSpace,,log,file-io,,
+130,urn:ampas:aces:transformId:v2.0:CSC.Panasonic.VLog_VGamut_to_ACES.a2.v1,,FALSE,PANASONIC_VLOG-VGAMUT_to_ACES2065-1,,ColorSpace,,log,file-io,vlog_vgamut,ocio:vlog_vgamut_scene
+135,urn:ampas:aces:transformId:v2.0:CSC.Red.Log3G10_RWG_to_ACES.a2.v1,,FALSE,RED_LOG3G10-RWG_to_ACES2065-1,,ColorSpace,,log,file-io,log3g10_rwg,ocio:redlog3g10_rwg_scene
+140,urn:ampas:aces:transformId:v2.0:CSC.Sony.SLog3_SGamut3_to_ACES.a2.v1,,FALSE,SONY_SLOG3-SGAMUT3_to_ACES2065-1,,ColorSpace,,log,file-io,slog3_sgamut3,ocio:slog3_sgamut3_scene
+140,urn:ampas:aces:transformId:v2.0:CSC.Sony.SLog3_SGamut3Cine_to_ACES.a2.v1,,FALSE,SONY_SLOG3-SGAMUT3.CINE_to_ACES2065-1,,ColorSpace,,log,file-io,slog3_sgamut3cine,ocio:slog3_sgamut3cine_scene
+140,urn:ampas:aces:transformId:v2.0:CSC.Sony.Venice_SLog3_SGamut3_to_ACES.a2.v1,,FALSE,SONY_SLOG3-SGAMUT3-VENICE_to_ACES2065-1,,ColorSpace,,log,file-io,slog3_venice_sgamut3,ocio:slog3_sgamut3venice_scene
+140,urn:ampas:aces:transformId:v2.0:CSC.Sony.Venice_SLog3_SGamut3Cine_to_ACES.a2.v1,,FALSE,SONY_SLOG3-SGAMUT3.CINE-VENICE_to_ACES2065-1,,ColorSpace,,log,file-io,slog3_venice_sgamut3cine,ocio:slog3_sgamut3cinevenice_scene
+300,urn:ampas:aces:transformId:v2.0:Look.Academy.ReferenceGamutCompress.a2.v1,,FALSE,ACES-LMT - ACES 1.3 Reference Gamut Compression,,Look,,,,,
+400,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,DISPLAY - CIE-XYZ-D65_to_sRGB - MIRROR NEGS,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,srgb_rec709_display
+401,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC709-D65_2.0,DISPLAY - CIE-XYZ-D65_to_sRGB - MIRROR NEGS,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,srgb_rec709_display
+405,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec709-D65_Gamma2pt2.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,DISPLAY - CIE-XYZ-D65_to_G2.2-REC.709 - MIRROR NEGS,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,g22_rec709_display
+406,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_Rec709-D65_Gamma2pt2.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC709-D65_2.0,DISPLAY - CIE-XYZ-D65_to_G2.2-REC.709 - MIRROR NEGS,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,g22_rec709_display
+410,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_48nit_in_XYZ-E_Gamma2pt6.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_DCDM-D65,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,g26_xyzd65_display
+411,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_48nit_in_XYZ-E_Gamma2pt6.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D60-in-XYZ-E_2.0,DISPLAY - CIE-XYZ-D65_to_DCDM-D65,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,g26_xyzd65_display
+415,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_DisplayP3,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,srgb_p3d65_display
+416,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_DisplayP3,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,srgb_p3d65_display
+420,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_P3-D65_sRGB-Piecewise.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_DisplayP3-HDR,ViewTransform,Any Scene-linear or Log,edr-video,file-io,,srgbe_p3d65_display
+421,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_1000nit_in_P3-D65_sRGB-Piecewise.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_DisplayP3-HDR,ViewTransform,Any Scene-linear or Log,edr-video,file-io,,srgbe_p3d65_display
+422,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,DISPLAY - CIE-XYZ-D65_to_DisplayP3-HDR,ViewTransform,Any Scene-linear or Log,edr-video,file-io,,srgb_p3d65_display
+423,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_DisplayP3-HDR,ViewTransform,Any Scene-linear or Log,edr-video,file-io,,srgb_p3d65_display
+430,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_48nit_in_P3-D65_Gamma2pt6.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_G2.6-P3-D65 - MIRROR NEGS,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,g26_p3d65_display
+431,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_48nit_in_P3-D65_Gamma2pt6.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_G2.6-P3-D65 - MIRROR NEGS,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,g26_p3d65_display
+435,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_48nit_in_P3-D65_Gamma2pt6.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,DISPLAY - CIE-XYZ-D65_to_G2.6-P3-D65 - MIRROR NEGS,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,g26_p3d65_display
+436,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_48nit_in_P3-D65_Gamma2pt6.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_G2.6-P3-D65 - MIRROR NEGS,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,g26_p3d65_display
+440,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec709-D65_BT1886.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,DISPLAY - CIE-XYZ-D65_to_REC.1886-REC.709 - MIRROR NEGS,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,g24_rec709_display
+441,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_Rec709-D65_BT1886.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC709-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.1886-REC.709 - MIRROR NEGS,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,g24_rec709_display
+445,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_Rec2100-D65_HLG.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-HLG-1000nit,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,hlg_rec2020_display
+446,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_1000nit_in_Rec2100-D65_HLG.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-HLG-1000nit,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,hlg_rec2020_display
+450,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_500nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_rec2020_display
+451,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_rec2020_display
+451,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_2000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_rec2020_display
+451,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_4000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_rec2020_display
+455,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_500nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_rec2020_display
+456,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_1000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_rec2020_display
+456,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_2000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_rec2020_display
+456,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_4000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_rec2020_display
+460,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_500nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-REC2020_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_rec2020_display
+461,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_1000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-REC2020_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_rec2020_display
+461,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_2000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-REC2020_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_rec2020_display
+461,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_4000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-REC2020_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_rec2020_display
+465,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D60_500nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-REC2020-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_rec2020_display
+466,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D60_1000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-REC2020-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_rec2020_display
+466,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D60_2000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-REC2020-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_rec2020_display
+466,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D60_4000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-REC2020-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_rec2020_display
+470,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,pq_rec2020_display
+470,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,pq_rec2020_display
+475,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_300nit_in_XYZ-E_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-300nit-P3-D60-in-XYZ-E_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-DCDM-D65,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_xyzd65_display
+475,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_300nit_in_XYZ-E_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-300nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-DCDM-D65,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_xyzd65_display
+480,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_108nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-108nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_p3d65_display
+481,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_500nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_p3d65_display
+482,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_p3d65_display
+482,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_2000nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_p3d65_display
+482,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_4000nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_p3d65_display
+485,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_108nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-108nit-P3-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_p3d65_display
+486,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_500nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_p3d65_display
+487,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_1000nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_p3d65_display
+487,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_2000nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_p3d65_display
+487,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_4000nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,Any Scene-linear or Log,hdr-video,file-io,,pq_p3d65_display
+490,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,pq_p3d65_display
+491,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,Any Scene-linear or Log,sdr-video,file-io,,pq_p3d65_display
diff --git a/opencolorio_config_aces/config/reference/generate/resources/OpenColorIO-Config-ACES Reference Transforms - v3 - Reference Config - Mapping.csv b/opencolorio_config_aces/config/reference/generate/resources/OpenColorIO-Config-ACES Reference Transforms - v3 - Reference Config - Mapping.csv
deleted file mode 100644
index 10175256..00000000
--- a/opencolorio_config_aces/config/reference/generate/resources/OpenColorIO-Config-ACES Reference Transforms - v3 - Reference Config - Mapping.csv
+++ /dev/null
@@ -1,68 +0,0 @@
-Ordering,ACEStransformID,Colorspace,Legacy,BuiltinTransform Style,Linked DisplayColorSpace Style,Interface,Encoding,Categories,Aliases
-100,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScc_to_ACES.a2.v1,ACES - ACEScc,TRUE,ACEScc_to_ACES2065-1,,ColorSpace,log,file-io,"acescc,acescc_ap1"
-100,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScct_to_ACES.a2.v1,ACES - ACEScct,TRUE,ACEScct_to_ACES2065-1,,ColorSpace,log,"file-io,working-space","acescct,acescct_ap1"
-100,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScg_to_ACES.a2.v1,ACES - ACEScg,TRUE,ACEScg_to_ACES2065-1,,ColorSpace,scene-linear,"file-io,working-space,texture","acescg,lin_ap1,lin_ap1_scene,ACES - ACEScg"
-100,urn:ampas:aces:transformId:v2.0:CSC.Academy.ADX10_to_ACES.a2.v1,Input - ADX - ADX10,TRUE,ADX10_to_ACES2065-1,,ColorSpace,log,file-io,adx10
-100,urn:ampas:aces:transformId:v2.0:CSC.Academy.ADX16_to_ACES.a2.v1,Input - ADX - ADX16,TRUE,ADX16_to_ACES2065-1,,ColorSpace,log,file-io,adx16
-105,urn:ampas:aces:transformId:v2.0:CSC.Apple.AppleLog_BT2020_to_ACES.a2.v1,,FALSE,APPLE_LOG_to_ACES2065-1,,ColorSpace,log,file-io,
-110,urn:ampas:aces:transformId:v2.0:CSC.Arri.LogCv3_to_ACES.a2.v1,,FALSE,ARRI_ALEXA-LOGC-EI800-AWG_to_ACES2065-1,,ColorSpace,log,file-io,logc3ei800_alexawide
-110,urn:ampas:aces:transformId:v2.0:CSC.Arri.LogCv4_to_ACES.a2.v1,,FALSE,ARRI_LOGC4_to_ACES2065-1,,ColorSpace,log,file-io,
-130,urn:ampas:aces:transformId:v2.0:CSC.Panasonic.VLog_VGamut_to_ACES.a2.v1,,FALSE,PANASONIC_VLOG-VGAMUT_to_ACES2065-1,,ColorSpace,log,file-io,vlog_vgamut
-135,urn:ampas:aces:transformId:v2.0:CSC.Red.Log3G10_RWG_to_ACES.a2.v1,,FALSE,RED_LOG3G10-RWG_to_ACES2065-1,,ColorSpace,log,file-io,log3g10_rwg
-140,urn:ampas:aces:transformId:v2.0:CSC.Sony.SLog3_SGamut3_to_ACES.a2.v1,,FALSE,SONY_SLOG3-SGAMUT3_to_ACES2065-1,,ColorSpace,log,file-io,slog3_sgamut3
-140,urn:ampas:aces:transformId:v2.0:CSC.Sony.SLog3_SGamut3Cine_to_ACES.a2.v1,,FALSE,SONY_SLOG3-SGAMUT3.CINE_to_ACES2065-1,,ColorSpace,log,file-io,slog3_sgamut3cine
-140,urn:ampas:aces:transformId:v2.0:CSC.Sony.Venice_SLog3_SGamut3_to_ACES.a2.v1,,FALSE,SONY_SLOG3-SGAMUT3-VENICE_to_ACES2065-1,,ColorSpace,log,file-io,slog3_venice_sgamut3
-140,urn:ampas:aces:transformId:v2.0:CSC.Sony.Venice_SLog3_SGamut3Cine_to_ACES.a2.v1,,FALSE,SONY_SLOG3-SGAMUT3.CINE-VENICE_to_ACES2065-1,,ColorSpace,log,file-io,slog3_venice_sgamut3cine
-300,urn:ampas:aces:transformId:v2.0:Look.Academy.ReferenceGamutCompress.a2.v1,,FALSE,ACES-LMT - ACES 1.3 Reference Gamut Compression,,Look,,,
-400,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,DISPLAY - CIE-XYZ-D65_to_sRGB,ViewTransform,sdr-video,file-io,
-401,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC709-D65_2.0,DISPLAY - CIE-XYZ-D65_to_sRGB,ViewTransform,sdr-video,file-io,
-405,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_48nit_in_XYZ-E_Gamma2pt6.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_DCDM-D65,ViewTransform,sdr-video,file-io,
-406,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_48nit_in_XYZ-E_Gamma2pt6.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D60-in-XYZ-E_2.0,DISPLAY - CIE-XYZ-D65_to_DCDM-D65,ViewTransform,sdr-video,file-io,
-410,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_DisplayP3,ViewTransform,sdr-video,file-io,
-411,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_DisplayP3,ViewTransform,sdr-video,file-io,
-415,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_P3-D65_sRGB-Piecewise.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_DisplayP3-HDR,ViewTransform,hdr-video,file-io,
-416,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_1000nit_in_P3-D65_sRGB-Piecewise.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_DisplayP3-HDR,ViewTransform,hdr-video,file-io,
-417,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,DISPLAY - CIE-XYZ-D65_to_DisplayP3-HDR,ViewTransform,hdr-video,file-io,
-418,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_DisplayP3-HDR,ViewTransform,hdr-video,file-io,
-420,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec709-D65_Gamma2pt2.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,DISPLAY - CIE-XYZ-D65_to_G2.2-REC.709,ViewTransform,sdr-video,file-io,
-421,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_Rec709-D65_Gamma2pt2.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC709-D65_2.0,DISPLAY - CIE-XYZ-D65_to_G2.2-REC.709,ViewTransform,sdr-video,file-io,
-425,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_48nit_in_P3-D65_Gamma2pt6.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_G2.6-P3-D65,ViewTransform,sdr-video,file-io,
-426,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_48nit_in_P3-D65_Gamma2pt6.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_G2.6-P3-D65,ViewTransform,sdr-video,file-io,
-430,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_48nit_in_P3-D65_Gamma2pt6.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,DISPLAY - CIE-XYZ-D65_to_G2.6-P3-D65,ViewTransform,sdr-video,file-io,
-431,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_48nit_in_P3-D65_Gamma2pt6.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_G2.6-P3-D65,ViewTransform,sdr-video,file-io,
-435,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec709-D65_BT1886.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,DISPLAY - CIE-XYZ-D65_to_REC.1886-REC.709,ViewTransform,sdr-video,file-io,
-436,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_Rec709-D65_BT1886.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC709-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.1886-REC.709,ViewTransform,sdr-video,file-io,
-440,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_Rec2100-D65_HLG.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-HLG-1000nit,ViewTransform,hdr-video,file-io,
-441,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_1000nit_in_Rec2100-D65_HLG.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-HLG-1000nit,ViewTransform,hdr-video,file-io,
-445,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_500nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,hdr-video,file-io,
-446,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,hdr-video,file-io,
-446,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_2000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,hdr-video,file-io,
-446,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_4000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,hdr-video,file-io,
-450,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_500nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,hdr-video,file-io,
-451,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_1000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,hdr-video,file-io,
-451,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_2000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,hdr-video,file-io,
-451,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_4000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,hdr-video,file-io,
-455,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_500nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-REC2020_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,hdr-video,file-io,
-456,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_1000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-REC2020_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,hdr-video,file-io,
-456,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_2000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-REC2020_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,hdr-video,file-io,
-456,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_4000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-REC2020_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,hdr-video,file-io,
-460,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D60_500nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-REC2020-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,hdr-video,file-io,
-461,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D60_1000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-REC2020-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,hdr-video,file-io,
-461,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D60_2000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-REC2020-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,hdr-video,file-io,
-461,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D60_4000nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-REC2020-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,hdr-video,file-io,
-465,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,sdr-video,file-io,
-465,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec2100-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ,ViewTransform,sdr-video,file-io,
-470,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_300nit_in_XYZ-E_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-300nit-P3-D60-in-XYZ-E_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-DCDM-D65,ViewTransform,hdr-video,file-io,
-470,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_300nit_in_XYZ-E_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-300nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-DCDM-D65,ViewTransform,hdr-video,file-io,
-475,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_108nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-108nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,hdr-video,file-io,
-476,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_500nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,hdr-video,file-io,
-477,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,hdr-video,file-io,
-477,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_2000nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,hdr-video,file-io,
-477,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_4000nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,hdr-video,file-io,
-480,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_108nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-108nit-P3-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,hdr-video,file-io,
-481,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_500nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,hdr-video,file-io,
-482,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_1000nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,hdr-video,file-io,
-482,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_2000nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,hdr-video,file-io,
-482,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_4000nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D60-in-P3-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,hdr-video,file-io,
-485,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,sdr-video,file-io,
-486,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_P3-D65_ST2084.a2.v1,,FALSE,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC2020-D65_2.0,DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65,ViewTransform,sdr-video,file-io,
diff --git a/opencolorio_config_aces/config/studio/generate/resources/OpenColorIO-Config-ACES CG and Studio Transforms - v3 - Studio Config - Mapping.csv b/opencolorio_config_aces/config/studio/generate/resources/Loading... - Studio Config - Mapping.csv
similarity index 60%
rename from opencolorio_config_aces/config/studio/generate/resources/OpenColorIO-Config-ACES CG and Studio Transforms - v3 - Studio Config - Mapping.csv
rename to opencolorio_config_aces/config/studio/generate/resources/Loading... - Studio Config - Mapping.csv
index cf252256..70044ceb 100644
--- a/opencolorio_config_aces/config/studio/generate/resources/OpenColorIO-Config-ACES CG and Studio Transforms - v3 - Studio Config - Mapping.csv
+++ b/opencolorio_config_aces/config/studio/generate/resources/Loading... - Studio Config - Mapping.csv
@@ -1,106 +1,111 @@
-Ordering,Colorspace,Legacy,ACEStransformID,CLFtransformID,Interface,BuiltinTransform Style,Aliases,Encoding,Categories
-100,ACEScc,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScc_to_ACES.a2.v1,,ColorSpace,ACEScc_to_ACES2065-1,"acescc,acescc_ap1,ACES - ACEScc",log,file-io
-100,ACEScct,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScct_to_ACES.a2.v1,,ColorSpace,ACEScct_to_ACES2065-1,"acescct,acescct_ap1,ACES - ACEScct",log,"file-io,working-space"
-100,ACEScg,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScg_to_ACES.a2.v1,,ColorSpace,ACEScg_to_ACES2065-1,"acescg,lin_ap1,lin_ap1_scene,ACES - ACEScg",scene-linear,"file-io,working-space,texture"
-100,Input - ADX - ADX10,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Academy.ADX10_to_ACES.a2.v1,,ColorSpace,ADX10_to_ACES2065-1,"adx10,Input - ADX - ADX10",log,file-io
-100,Input - ADX - ADX16,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Academy.ADX16_to_ACES.a2.v1,,ColorSpace,ADX16_to_ACES2065-1,"adx16,Input - ADX - ADX16",log,file-io
-105,Apple Log,FALSE,urn:ampas:aces:transformId:v2.0:CSC.Apple.AppleLog_BT2020_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:Apple:Input:Apple_Log_to_ACES2065-1:1.0,ColorSpace,APPLE_LOG_to_ACES2065-1,,log,file-io
-105,Apple Log - Curve,FALSE,,urn:aswf:ocio:transformId:1.0:Apple:Input:Apple_Log-Curve_to_Linear:1.0,NamedTransform,CURVE - APPLE_LOG_to_LINEAR,,log,file-io
-110,ARRI LogC3 - Curve (EI800),TRUE,,urn:aswf:ocio:transformId:1.0:ARRI:Input:ARRI_LogC3_Curve_EI800_to_Linear:1.0,NamedTransform,,crv_logc3ei800,log,file-io
-110,ARRI LogC3 (EI800),TRUE,urn:ampas:aces:transformId:v2.0:CSC.Arri.LogCv3_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:ARRI:Input:ARRI_LogC3_EI800_to_ACES2065-1:1.0,ColorSpace,,"logc3ei800_alexawide,Input - ARRI - V3 LogC (EI800) - Wide Gamut",log,file-io
-110,Linear ARRI Wide Gamut 3,TRUE,,urn:aswf:ocio:transformId:1.0:ARRI:Input:Linear_ARRI_Wide_Gamut_3_to_ACES2065-1:1.0,ColorSpace,,"lin_alexawide,Input - ARRI - Linear - ALEXA Wide Gamut",scene-linear,file-io
-111,ARRI LogC4,FALSE,urn:ampas:aces:transformId:v2.0:CSC.Arri.LogCv4_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:ARRI:Input:ARRI_LogC4_to_ACES2065-1:1.0,ColorSpace,,,log,file-io
-111,ARRI LogC4 - Curve,FALSE,,urn:aswf:ocio:transformId:1.0:ARRI:Input:ARRI_LogC4_Curve_to_Linear:1.0,NamedTransform,,,log,file-io
-111,Linear ARRI Wide Gamut 4,FALSE,,urn:aswf:ocio:transformId:1.0:ARRI:Input:Linear_ARRI_Wide_Gamut_4_to_ACES2065-1:1.0,ColorSpace,,lin_awg4,scene-linear,file-io
-115,BMDFilm Gen5 Log - Curve,FALSE,,urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:BMDFilm_Gen5_Log-Curve_to_Linear:1.0,NamedTransform,,,log,file-io
-115,BMDFilm WideGamut Gen5,FALSE,urn:ampas:aces:transformId:v2.0:CSC.Blackmagic.BMDFilm_WideGamut_Gen5_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:BMDFilm_WideGamut_Gen5_to_ACES2065-1:1.0,ColorSpace,,,log,file-io
-115,Linear BMD WideGamut Gen5,FALSE,,urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:Linear_BMD_WideGamut_Gen5_to_ACES2065-1:1.0,ColorSpace,,,scene-linear,file-io
-116,DaVinci Intermediate Log - Curve,FALSE,,urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:DaVinci_Intermediate_Log-Curve_to_Linear:1.0,NamedTransform,,,log,file-io
-116,DaVinci Intermediate WideGamut,FALSE,,urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:DaVinci_Intermediate_WideGamut_to_ACES2065-1:1.0,ColorSpace,,,log,file-io
-116,Linear DaVinci WideGamut,FALSE,,urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:Linear_DaVinci_WideGamut_to_ACES2065-1:1.0,ColorSpace,,,scene-linear,file-io
-120,C-Log2 - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:Canon:Input:CLog2-Curve_to_Linear:1.0,NamedTransform,CURVE - CANON_CLOG2_to_LINEAR,"crv_canonlog2,Input - Canon - Curve - Canon-Log2",log,file-io
-120,CanonLog2 CinemaGamut D55,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Canon.CLog2_CGamut_to_ACES.a1.v1,urn:aswf:ocio:transformId:1.0:Canon:Input:CanonLog2_CinemaGamut-D55_to_ACES2065-1:1.0,ColorSpace,CANON_CLOG2-CGAMUT_to_ACES2065-1,"canonlog2_cgamutday,Input - Canon - Canon-Log2 - Cinema Gamut Daylight",log,file-io
-120,Linear CinemaGamut D55,TRUE,,urn:aswf:ocio:transformId:1.0:Canon:Input:Linear-CinemaGamut-D55_to_ACES2065-1:1.0,ColorSpace,,"lin_canoncgamutday,Input - Canon - Linear - Canon Cinema Gamut Daylight",scene-linear,file-io
-121,C-Log3 - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:Canon:Input:CLog3-Curve_to_Linear:1.0,NamedTransform,CURVE - CANON_CLOG3_to_LINEAR,"crv_canonlog3,Input - Canon - Curve - Canon-Log3",log,file-io
-121,CanonLog3 CinemaGamut D55,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Canon.CLog3_CGamut_to_ACES.a1.v1,urn:aswf:ocio:transformId:1.0:Canon:Input:CanonLog3_CinemaGamut-D55_to_ACES2065-1:1.0,ColorSpace,CANON_CLOG3-CGAMUT_to_ACES2065-1,"canonlog3_cgamutday,Input - Canon - Canon-Log3 - Cinema Gamut Daylight",log,file-io
-130,Linear V-Gamut,TRUE,,urn:aswf:ocio:transformId:1.0:Panasonic:Input:Linear_VGamut_to_ACES2065-1:1.0,ColorSpace,,"lin_vgamut,Input - Panasonic - Linear - V-Gamut",scene-linear,file-io
-130,V-Log - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:Panasonic:Input:VLog-Curve_to_Linear:1.0,NamedTransform,,"crv_vlog,Input - Panasonic - Curve - V-Log",log,file-io
-130,V-Log V-Gamut,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Panasonic.VLog_VGamut_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:Panasonic:Input:VLog_VGamut_to_ACES2065-1:1.0,ColorSpace,,"vlog_vgamut,Input - Panasonic - V-Log - V-Gamut",log,file-io
-135,Linear REDWideGamutRGB,TRUE,,urn:aswf:ocio:transformId:1.0:RED:Input:Linear_REDWideGamutRGB_to_ACES2065-1:1.0,ColorSpace,,"lin_rwg,Input - RED - Linear - REDWideGamutRGB",scene-linear,file-io
-135,Log3G10 - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:RED:Input:Log3G10-Curve_to_Linear:1.0,NamedTransform,,"crv_rl3g10,Input - RED - Curve - REDLog3G10",log,file-io
-135,Log3G10 REDWideGamutRGB,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Red.Log3G10_RWG_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:RED:Input:Log3G10_REDWideGamutRGB_to_ACES2065-1:1.0,ColorSpace,,"rl3g10_rwg,Input - RED - REDLog3G10 - REDWideGamutRGB",log,file-io
-140,Linear S-Gamut3,TRUE,,urn:aswf:ocio:transformId:1.0:Sony:Input:Linear_SGamut3_to_ACES2065-1:1.0,ColorSpace,,"lin_sgamut3,Input - Sony - Linear - S-Gamut3",scene-linear,file-io
-140,S-Log3 - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3-Curve_to_Linear:1.0,NamedTransform,,"crv_slog3,Input - Sony - Curve - S-Log3",log,file-io
-140,S-Log3 S-Gamut3,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Sony.SLog3_SGamut3_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3_SGamut3_to_ACES2065-1:1.0,ColorSpace,,"slog3_sgamut3,Input - Sony - S-Log3 - S-Gamut3",log,file-io
-141,Linear S-Gamut3.Cine,TRUE,,urn:aswf:ocio:transformId:1.0:Sony:Input:Linear_SGamut3Cine_to_ACES2065-1:1.0,ColorSpace,,"lin_sgamut3cine,Input - Sony - Linear - S-Gamut3.Cine",scene-linear,file-io
-141,S-Log3 S-Gamut3.Cine,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Sony.SLog3_SGamut3Cine_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3_SGamut3Cine_to_ACES2065-1:1.0,ColorSpace,,"slog3_sgamutcine,Input - Sony - S-Log3 - S-Gamut3.Cine",log,file-io
-142,Linear Venice S-Gamut3,TRUE,,urn:aswf:ocio:transformId:1.0:Sony:Input:Linear_Venice_SGamut3_to_ACES2065-1:1.0,ColorSpace,,"lin_venice_sgamut3,Input - Sony - Linear - Venice S-Gamut3",scene-linear,file-io
-142,S-Log3 Venice S-Gamut3,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Sony.Venice_SLog3_SGamut3_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3_Venice_SGamut3_to_ACES2065-1:1.0,ColorSpace,,"slog3_venice_sgamut3,Input - Sony - S-Log3 - Venice S-Gamut3",log,file-io
-143,Linear Venice S-Gamut3.Cine,TRUE,,urn:aswf:ocio:transformId:1.0:Sony:Input:Linear_Venice_SGamut3Cine_to_ACES2065-1:1.0,ColorSpace,,"lin_venice_sgamut3cine,Input - Sony - Linear - Venice S-Gamut3.Cine",scene-linear,file-io
-143,S-Log3 Venice S-Gamut3.Cine,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Sony.Venice_SLog3_SGamut3Cine_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3_Venice_SGamut3Cine_to_ACES2065-1:1.0,ColorSpace,,"slog3_venice_sgamutcine,Input - Sony - S-Log3 - Venice S-Gamut3.Cine",log,file-io
-300,ACES 1.3 Reference Gamut Compression,FALSE,urn:ampas:aces:transformId:v2.0:Look.Academy.ReferenceGamutCompress.a2.v1,,Look,,,scene-linear,
-300,SDR Tonescale Match,FALSE,urn:ampas:aces:transformId:v2.0:Look.Academy.v1_SDR_Tonescale_Match.a2.v1,,Look,,,scene-linear,
-400,Rec709-D65_100nit_in_Rec709-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,sdr-video,file-io
-401,Rec709-D60_100nit_in_Rec709-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC709-D65_2.0,,sdr-video,file-io
-410,P3-D65_100nit_in_P3-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D65_2.0,,sdr-video,file-io
-411,P3-D60_100nit_in_P3-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D60-in-P3-D65_2.0,,sdr-video,file-io
-415,P3-D65_1000nit_in_P3-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_P3-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,,hdr-video,file-io
-416,P3-D60_1000nit_in_P3-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_1000nit_in_P3-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-P3-D65_2.0,,hdr-video,file-io
-417,Rec709-D65_100nit_in_P3-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,hdr-video,file-io
-418,Rec709-D60_100nit_in_P3-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-P3-D65_2.0,,hdr-video,file-io
-425,P3-D65_48nit_in_P3-D65_Gamma2pt6,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_48nit_in_P3-D65_Gamma2pt6.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D65_2.0,,sdr-video,file-io
-426,P3-D60_48nit_in_P3-D65_Gamma2pt6,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_48nit_in_P3-D65_Gamma2pt6.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D60-in-P3-D65_2.0,,sdr-video,file-io
-430,Rec709-D65_48nit_in_P3-D65_Gamma2pt6,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_48nit_in_P3-D65_Gamma2pt6.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,sdr-video,file-io
-431,Rec709-D60_48nit_in_P3-D65_Gamma2pt6,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_48nit_in_P3-D65_Gamma2pt6.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-P3-D65_2.0,,sdr-video,file-io
-435,Rec709-D65_100nit_in_Rec709-D65_BT1886,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec709-D65_BT1886.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,sdr-video,file-io
-436,Rec709-D60_100nit_in_Rec709-D65_BT1886,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_Rec709-D65_BT1886.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC709-D65_2.0,,sdr-video,file-io
-440,P3-D65_1000nit_in_Rec2100-D65_HLG,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_Rec2100-D65_HLG.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,,hdr-video,file-io
-440,sRGB - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:Linear_to_sRGB-Curve:1.0,NamedTransform,,"crv_srgb,Utility - Curve - sRGB",sdr-video,file-io
-441,P3-D60_1000nit_in_Rec2100-D65_HLG,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_1000nit_in_Rec2100-D65_HLG.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-REC2020-D65_2.0,,hdr-video,file-io
-441,Rec.1886 - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:Linear_to_Rec1886-Curve:1.0,NamedTransform,,"crv_rec1886,Utility - Curve - Rec.1886",sdr-video,file-io
-442,Rec.709 - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:ITU:Utility:Linear_to_Rec709-Curve:1.0,NamedTransform,,"crv_rec709,Utility - Curve - Rec.709",sdr-video,file-io
-443,ST-2084 - Curve,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:Linear_to_ST2084-Curve:1.0,NamedTransform,CURVE - LINEAR_to_ST-2084,,hdr-video,file-io
-445,P3-D65_500nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_500nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D65_2.0,,hdr-video,file-io
-446,P3-D65_1000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,,hdr-video,file-io
-446,P3-D65_2000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_2000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D65_2.0,,hdr-video,file-io
-446,P3-D65_4000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_4000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D65_2.0,,hdr-video,file-io
-450,P3-D60_500nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_500nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D60-in-REC2020-D65_2.0,,hdr-video,file-io
-451,P3-D60_1000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_1000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-REC2020-D65_2.0,,hdr-video,file-io
-451,P3-D60_2000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_2000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D60-in-REC2020-D65_2.0,,hdr-video,file-io
-451,P3-D60_4000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_4000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D60-in-REC2020-D65_2.0,,hdr-video,file-io
-455,Rec2100-D65_500nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_500nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-REC2020_2.0,,hdr-video,file-io
-456,Rec2100-D65_1000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_1000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-REC2020_2.0,,hdr-video,file-io
-456,Rec2100-D65_2000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_2000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-REC2020_2.0,,hdr-video,file-io
-456,Rec2100-D65_4000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_4000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-REC2020_2.0,,hdr-video,file-io
-460,Rec2100-D60_500nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D60_500nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-REC2020-D60-in-REC2020-D65_2.0,,hdr-video,file-io
-461,Rec2100-D60_1000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D60_1000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-REC2020-D60-in-REC2020-D65_2.0,,hdr-video,file-io
-461,Rec2100-D60_2000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D60_2000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-REC2020-D60-in-REC2020-D65_2.0,,hdr-video,file-io
-461,Rec2100-D60_4000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D60_4000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-REC2020-D60-in-REC2020-D65_2.0,,hdr-video,file-io
-465,Rec709-D60_100nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC2020-D65_2.0,,sdr-video,file-io
-465,Rec709-D65_100nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,sdr-video,file-io
-475,P3-D65_108nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_108nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-108nit-P3-D65_2.0,,hdr-video,file-io
-476,P3-D65_500nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_500nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D65_2.0,,hdr-video,file-io
-477,P3-D65_1000nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,,hdr-video,file-io
-477,P3-D65_2000nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_2000nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D65_2.0,,hdr-video,file-io
-477,P3-D65_4000nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_4000nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D65_2.0,,hdr-video,file-io
-480,P3-D60_108nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_108nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-108nit-P3-D60-in-P3-D65_2.0,,hdr-video,file-io
-481,P3-D60_500nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_500nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D60-in-P3-D65_2.0,,hdr-video,file-io
-482,P3-D60_1000nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_1000nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-P3-D65_2.0,,hdr-video,file-io
-482,P3-D60_2000nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_2000nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D60-in-P3-D65_2.0,,hdr-video,file-io
-482,P3-D60_4000nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_4000nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D60-in-P3-D65_2.0,,hdr-video,file-io
-485,Rec709-D65_100nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,sdr-video,file-io
-486,Rec709-D60_100nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC2020-D65_2.0,,sdr-video,file-io
-500,sRGB Encoded Rec.709 (sRGB),TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB-Encoded-Rec709:1.0,ColorSpace,,"srgb_texture,srgb_rec709_scene,Utility - sRGB - Texture,Input - Generic - sRGB - Texture,sRGB - Texture,srgb_tx",sdr-video,"file-io,texture"
-501,Gamma 1.8 Encoded Rec.709,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma1.8_Encoded_Rec709:1.0,ColorSpace,,"g18_rec709,Utility - Gamma 1.8 - Rec.709 - Texture,Gamma 1.8 Rec.709 - Texture,g18_rec709_tx,g18_rec709_scene",sdr-video,"file-io,texture"
-502,Gamma 2.2 Encoded Rec.709,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.2_Encoded_Rec709:1.0,ColorSpace,,"g22_rec709,Utility - Gamma 2.2 - Rec.709 - Texture,Gamma 2.2 Rec.709 - Texture,g22_rec709_tx,g22_rec709_scene",sdr-video,"file-io,texture"
-503,Gamma 2.4 Encoded Rec.709,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.4_Encoded_Rec709:1.0,ColorSpace,,"g24_rec709,rec709_display,Utility - Rec.709 - Display,Gamma 2.4 Rec.709 - Texture,g24_rec709_tx",sdr-video,"file-io,texture"
-504,Camera Rec.709,TRUE,,urn:aswf:ocio:transformId:1.0:ITU:Utility:AP0_to_Camera_Rec709:1.0,ColorSpace,,"rec709_camera,Utility - Rec.709 - Camera",sdr-video,file-io
-505,sRGB Encoded P3-D65,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB_Encoded_P3-D65:1.0,ColorSpace,,"srgb_p3d65,srgb_displayp3,srgb_p3d65_scene,sRGB Encoded P3-D65 - Texture,srgb_encoded_p3d65_tx",sdr-video,"file-io,texture"
-506,Gamma 2.2 Encoded AdobeRGB,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.2_Encoded_AdobeRGB:1.0,ColorSpace,,"adobergb,g22_adobergb_scene",sdr-video,"file-io,texture"
-507,sRGB Encoded AP1,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB_Encoded_AP1:1.0,ColorSpace,,"srgb_ap1,srgb_ap1_scene,sRGB Encoded AP1 - Texture,srgb_encoded_ap1_tx",sdr-video,"file-io,texture"
-508,Gamma 2.2 Encoded AP1,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.2_Encoded_AP1:1.0,ColorSpace,,"g22_ap1,Gamma 2.2 AP1 - Texture,g22_ap1_tx,g22_ap1_scene",sdr-video,"file-io,texture"
-520,CIE XYZ-D65 - Scene-referred,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_CIE_XYZ-D65-Scene-referred:1.0,ColorSpace,,lin_ciexyzd65_scene,scene-linear,file-io
-520,Linear AdobeRGB,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_AdobeRGB:1.0,ColorSpace,,"lin_adobergb,lin_adobergb_scene,Utility - Linear - Adobe RGB",scene-linear,"file-io,texture"
-520,Linear P3-D65,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_P3-D65:1.0,ColorSpace,,"lin_p3d65,lin_displayp3,lin_p3d65_scene,Utility - Linear - P3-D65,Linear Display P3",scene-linear,"file-io,working-space,texture"
-520,Linear Rec.2020,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_Rec2020:1.0,ColorSpace,,"lin_rec2020,lin_rec2020_scene,Utility - Linear - Rec.2020",scene-linear,"file-io,texture"
-520,Linear Rec.709 (sRGB),TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_Rec709:1.0,ColorSpace,,"lin_rec709,lin_rec709_scene,lin_srgb,Utility - Linear - sRGB,Utility - Linear - Rec.709",scene-linear,"file-io,working-space,texture"
+Ordering,Colorspace,Legacy,ACEStransformID,CLFtransformID,Interface,BuiltinTransform Style,Aliases,Encoding,Categories,InteropId
+100,ACEScc,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScc_to_ACES.a2.v1,,ColorSpace,ACEScc_to_ACES2065-1,"acescc,acescc_ap1,ACES - ACEScc",log,file-io,ocio:acescc_ap1_scene
+100,ACEScct,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScct_to_ACES.a2.v1,,ColorSpace,ACEScct_to_ACES2065-1,"acescct,acescct_ap1,ACES - ACEScct",log,"file-io,working-space",ocio:acescct_ap1_scene
+100,ACEScg,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Academy.ACEScg_to_ACES.a2.v1,,ColorSpace,ACEScg_to_ACES2065-1,"acescg,lin_ap1,lin_ap1_scene,ACES - ACEScg",scene-linear,"file-io,working-space,texture",lin_ap1_scene
+100,Input - ADX - ADX10,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Academy.ADX10_to_ACES.a2.v1,,ColorSpace,ADX10_to_ACES2065-1,"adx10,Input - ADX - ADX10",log,file-io,ocio:adx10_apd_scene
+100,Input - ADX - ADX16,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Academy.ADX16_to_ACES.a2.v1,,ColorSpace,ADX16_to_ACES2065-1,"adx16,Input - ADX - ADX16",log,file-io,ocio:adx16_apd_scene
+105,Apple Log,FALSE,urn:ampas:aces:transformId:v2.0:CSC.Apple.AppleLog_BT2020_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:Apple:Input:Apple_Log_to_ACES2065-1:1.0,ColorSpace,APPLE_LOG_to_ACES2065-1,,log,file-io,ocio:applelog_rec2020_scene
+105,Apple Log - Curve,FALSE,,urn:aswf:ocio:transformId:1.0:Apple:Input:Apple_Log-Curve_to_Linear:1.0,NamedTransform,CURVE - APPLE_LOG_to_LINEAR,,log,file-io,
+110,ARRI LogC3 - Curve (EI800),TRUE,,urn:aswf:ocio:transformId:1.0:ARRI:Input:ARRI_LogC3_Curve_EI800_to_Linear:1.0,NamedTransform,,crv_logc3ei800,log,file-io,
+110,ARRI LogC3 (EI800),TRUE,urn:ampas:aces:transformId:v2.0:CSC.Arri.LogC3_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:ARRI:Input:ARRI_LogC3_EI800_to_ACES2065-1:1.0,ColorSpace,,"logc3ei800_alexawide,Input - ARRI - V3 LogC (EI800) - Wide Gamut",log,file-io,ocio:arrilogc3_awg3_scene
+110,Linear ARRI Wide Gamut 3,TRUE,,urn:aswf:ocio:transformId:1.0:ARRI:Input:Linear_ARRI_Wide_Gamut_3_to_ACES2065-1:1.0,ColorSpace,,"lin_alexawide,Input - ARRI - Linear - ALEXA Wide Gamut",scene-linear,file-io,ocio:lin_awg3_scene
+111,ARRI LogC4,FALSE,urn:ampas:aces:transformId:v2.0:CSC.Arri.LogC4_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:ARRI:Input:ARRI_LogC4_to_ACES2065-1:1.0,ColorSpace,,,log,file-io,ocio:arrilogc4_awg4_scene
+111,ARRI LogC4 - Curve,FALSE,,urn:aswf:ocio:transformId:1.0:ARRI:Input:ARRI_LogC4_Curve_to_Linear:1.0,NamedTransform,,,log,file-io,
+111,Linear ARRI Wide Gamut 4,FALSE,,urn:aswf:ocio:transformId:1.0:ARRI:Input:Linear_ARRI_Wide_Gamut_4_to_ACES2065-1:1.0,ColorSpace,,lin_awg4,scene-linear,file-io,ocio:lin_awg4_scene
+115,BMDFilm Gen5 Log - Curve,FALSE,,urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:BMDFilm_Gen5_Log-Curve_to_Linear:1.0,NamedTransform,,,log,file-io,
+115,BMDFilm WideGamut Gen5,FALSE,urn:ampas:aces:transformId:v2.0:CSC.Blackmagic.BMDFilm_WideGamut_Gen5_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:BMDFilm_WideGamut_Gen5_to_ACES2065-1:1.0,ColorSpace,,,log,file-io,ocio:bmdfilm5_wg5_scene
+115,Linear BMD WideGamut Gen5,FALSE,,urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:Linear_BMD_WideGamut_Gen5_to_ACES2065-1:1.0,ColorSpace,,,scene-linear,file-io,ocio:lin_bmdwg5_scene
+116,DaVinci Intermediate Log - Curve,FALSE,,urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:DaVinci_Intermediate_Log-Curve_to_Linear:1.0,NamedTransform,,,log,file-io,
+116,DaVinci Intermediate WideGamut,FALSE,,urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:DaVinci_Intermediate_WideGamut_to_ACES2065-1:1.0,ColorSpace,,,log,file-io,ocio:davinci_dwg_scene
+116,Linear DaVinci WideGamut,FALSE,,urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:Linear_DaVinci_WideGamut_to_ACES2065-1:1.0,ColorSpace,,,scene-linear,file-io,ocio:lin_dwg_scene
+120,C-Log2 - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:Canon:Input:CLog2-Curve_to_Linear:1.0,NamedTransform,CURVE - CANON_CLOG2_to_LINEAR,"crv_canonlog2,Input - Canon - Curve - Canon-Log2",log,file-io,
+120,CanonLog2 CinemaGamut D55,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Canon.CLog2_CGamut_to_ACES.a1.v1,urn:aswf:ocio:transformId:1.0:Canon:Input:CanonLog2_CinemaGamut-D55_to_ACES2065-1:1.0,ColorSpace,CANON_CLOG2-CGAMUT_to_ACES2065-1,"canonlog2_cgamutday,Input - Canon - Canon-Log2 - Cinema Gamut Daylight",log,file-io,ocio:canonlog2_cgamutd55_scene
+120,Linear CinemaGamut D55,TRUE,,urn:aswf:ocio:transformId:1.0:Canon:Input:Linear-CinemaGamut-D55_to_ACES2065-1:1.0,ColorSpace,,"lin_canoncgamutday,Input - Canon - Linear - Canon Cinema Gamut Daylight",scene-linear,file-io,ocio:lin_cgamutd55_scene
+121,C-Log3 - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:Canon:Input:CLog3-Curve_to_Linear:1.0,NamedTransform,CURVE - CANON_CLOG3_to_LINEAR,"crv_canonlog3,Input - Canon - Curve - Canon-Log3",log,file-io,
+121,CanonLog3 CinemaGamut D55,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Canon.CLog3_CGamut_to_ACES.a1.v1,urn:aswf:ocio:transformId:1.0:Canon:Input:CanonLog3_CinemaGamut-D55_to_ACES2065-1:1.0,ColorSpace,CANON_CLOG3-CGAMUT_to_ACES2065-1,"canonlog3_cgamutday,Input - Canon - Canon-Log3 - Cinema Gamut Daylight",log,file-io,ocio:canonlog3_cgamutd55_scene
+125,Input - DJI - D-Log - D-Gamut,FALSE,urn:ampas:aces:transformId:v2.0:CSC.DJI.DLog_DGamut_to_ACES.a1.v1,urn:aswf:ocio:transformId:1.0:DJI:Input:DLog_DGamut_to_ACES2065-1:1.0,ColorSpace,,dlog_dgamut,log,file-io,ocio:djilog_dgamut_scene
+130,D-Log - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:DJI:Input:DLog-Curve_to_Linear:1.0,NamedTransform,,crv_dlog,log,file-io,
+130,Linear D-Gamut,TRUE,,urn:aswf:ocio:transformId:1.0:DJI:Input:Linear_DGamut_to_ACES2065-1:1.0,ColorSpace,,lin_dgamut,scene-linear,file-io,ocio:lin_dgamut_scene
+130,V-Log V-Gamut,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Panasonic.VLog_VGamut_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:Panasonic:Input:VLog_VGamut_to_ACES2065-1:1.0,ColorSpace,,"vlog_vgamut,Input - Panasonic - V-Log - V-Gamut",log,file-io,ocio:vlog_vgamut_scene
+135,Linear V-Gamut,TRUE,,urn:aswf:ocio:transformId:1.0:Panasonic:Input:Linear_VGamut_to_ACES2065-1:1.0,ColorSpace,,"lin_vgamut,Input - Panasonic - Linear - V-Gamut",scene-linear,file-io,ocio:lin_vgamut_scene
+135,Log3G10 REDWideGamutRGB,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Red.Log3G10_RWG_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:RED:Input:Log3G10_REDWideGamutRGB_to_ACES2065-1:1.0,ColorSpace,,"rl3g10_rwg,Input - RED - REDLog3G10 - REDWideGamutRGB",log,file-io,ocio:redlog3g10_rwg_scene
+135,V-Log - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:Panasonic:Input:VLog-Curve_to_Linear:1.0,NamedTransform,,"crv_vlog,Input - Panasonic - Curve - V-Log",log,file-io,
+140,Linear REDWideGamutRGB,TRUE,,urn:aswf:ocio:transformId:1.0:RED:Input:Linear_REDWideGamutRGB_to_ACES2065-1:1.0,ColorSpace,,"lin_rwg,Input - RED - Linear - REDWideGamutRGB",scene-linear,file-io,ocio:lin_rwg_scene
+140,Log3G10 - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:RED:Input:Log3G10-Curve_to_Linear:1.0,NamedTransform,,"crv_rl3g10,Input - RED - Curve - REDLog3G10",log,file-io,
+140,S-Log3 S-Gamut3,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Sony.SLog3_SGamut3_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3_SGamut3_to_ACES2065-1:1.0,ColorSpace,,"slog3_sgamut3,Input - Sony - S-Log3 - S-Gamut3",log,file-io,ocio:slog3_sgamut3_scene
+141,S-Log3 S-Gamut3.Cine,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Sony.SLog3_SGamut3Cine_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3_SGamut3Cine_to_ACES2065-1:1.0,ColorSpace,,"slog3_sgamutcine,Input - Sony - S-Log3 - S-Gamut3.Cine",log,file-io,ocio:slog3_sgamut3cine_scene
+142,S-Log3 Venice S-Gamut3,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Sony.Venice_SLog3_SGamut3_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3_Venice_SGamut3_to_ACES2065-1:1.0,ColorSpace,,"slog3_venice_sgamut3,Input - Sony - S-Log3 - Venice S-Gamut3",log,file-io,ocio:slog3_sgamut3venice_scene
+143,S-Log3 Venice S-Gamut3.Cine,TRUE,urn:ampas:aces:transformId:v2.0:CSC.Sony.Venice_SLog3_SGamut3Cine_to_ACES.a2.v1,urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3_Venice_SGamut3Cine_to_ACES2065-1:1.0,ColorSpace,,"slog3_venice_sgamutcine,Input - Sony - S-Log3 - Venice S-Gamut3.Cine",log,file-io,ocio:slog3_sgamut3cinevenice_scene
+145,Linear S-Gamut3,TRUE,,urn:aswf:ocio:transformId:1.0:Sony:Input:Linear_SGamut3_to_ACES2065-1:1.0,ColorSpace,,"lin_sgamut3,Input - Sony - Linear - S-Gamut3",scene-linear,file-io,ocio:lin_sgamut3_scene
+145,S-Log3 - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3-Curve_to_Linear:1.0,NamedTransform,,"crv_slog3,Input - Sony - Curve - S-Log3",log,file-io,
+146,Linear S-Gamut3.Cine,TRUE,,urn:aswf:ocio:transformId:1.0:Sony:Input:Linear_SGamut3Cine_to_ACES2065-1:1.0,ColorSpace,,"lin_sgamut3cine,Input - Sony - Linear - S-Gamut3.Cine",scene-linear,file-io,ocio:lin_sgamut3cine_scene
+147,Linear Venice S-Gamut3,TRUE,,urn:aswf:ocio:transformId:1.0:Sony:Input:Linear_Venice_SGamut3_to_ACES2065-1:1.0,ColorSpace,,"lin_venice_sgamut3,Input - Sony - Linear - Venice S-Gamut3",scene-linear,file-io,ocio:lin_sgamut3venice_scene
+148,Linear Venice S-Gamut3.Cine,TRUE,,urn:aswf:ocio:transformId:1.0:Sony:Input:Linear_Venice_SGamut3Cine_to_ACES2065-1:1.0,ColorSpace,,"lin_venice_sgamut3cine,Input - Sony - Linear - Venice S-Gamut3.Cine",scene-linear,file-io,ocio:lin_sgamut3cinevenice_scene
+300,ACES 1.3 Reference Gamut Compression,FALSE,urn:ampas:aces:transformId:v2.0:Look.Academy.ReferenceGamutCompress.a2.v1,,Look,,,scene-linear,,
+300,SDR Tonescale Match,FALSE,urn:ampas:aces:transformId:v2.0:Look.Academy.v1_SDR_Tonescale_Match.a2.v1,,Look,,,scene-linear,,
+400,Rec709-D65_100nit_in_Rec709-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,sdr-video,file-io,srgb_rec709_display
+401,Rec709-D60_100nit_in_Rec709-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_Rec709-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC709-D65_2.0,,sdr-video,file-io,srgb_rec709_display
+405,Rec709-D65_100nit_in_Rec709-D65_Gamma2pt2,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec709-D65_Gamma2pt2.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,sdr-video,file-io,g22_rec709_display
+406,Rec709-D60_100nit_in_Rec709-D65_Gamma2pt2,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_Rec709-D65_Gamma2pt2.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC709-D65_2.0,,sdr-video,file-io,g22_rec709_display
+415,P3-D65_100nit_in_P3-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D65_2.0,,sdr-video,file-io,srgb_p3d65_display
+416,P3-D60_100nit_in_P3-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D60-in-P3-D65_2.0,,sdr-video,file-io,srgb_p3d65_display
+420,P3-D65_1000nit_in_P3-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_P3-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,,edr-video,file-io,srgbe_p3d65_display
+421,P3-D60_1000nit_in_P3-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_1000nit_in_P3-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-P3-D65_2.0,,edr-video,file-io,srgbe_p3d65_display
+422,Rec709-D65_100nit_in_P3-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,edr-video,file-io,srgb_p3d65_display
+423,Rec709-D60_100nit_in_P3-D65_sRGB-Piecewise,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_P3-D65_sRGB-Piecewise.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-P3-D65_2.0,,edr-video,file-io,srgb_p3d65_display
+430,P3-D65_48nit_in_P3-D65_Gamma2pt6,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_48nit_in_P3-D65_Gamma2pt6.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D65_2.0,,sdr-video,file-io,g26_p3d65_display
+431,P3-D60_48nit_in_P3-D65_Gamma2pt6,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_48nit_in_P3-D65_Gamma2pt6.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-P3-D60-in-P3-D65_2.0,,sdr-video,file-io,g26_p3d65_display
+435,Rec709-D65_48nit_in_P3-D65_Gamma2pt6,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_48nit_in_P3-D65_Gamma2pt6.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,sdr-video,file-io,g26_p3d65_display
+436,Rec709-D60_48nit_in_P3-D65_Gamma2pt6,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_48nit_in_P3-D65_Gamma2pt6.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-P3-D65_2.0,,sdr-video,file-io,g26_p3d65_display
+440,Rec709-D65_100nit_in_Rec709-D65_BT1886,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec709-D65_BT1886.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,sdr-video,file-io,g24_rec709_display
+440,sRGB - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:Linear_to_sRGB-Curve:1.0,NamedTransform,,"crv_srgb,Utility - Curve - sRGB",sdr-video,file-io,
+441,Rec.1886 - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:Linear_to_Rec1886-Curve:1.0,NamedTransform,,"crv_rec1886,Utility - Curve - Rec.1886",sdr-video,file-io,
+441,Rec709-D60_100nit_in_Rec709-D65_BT1886,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_Rec709-D65_BT1886.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC709-D65_2.0,,sdr-video,file-io,g24_rec709_display
+442,Rec.709 - Curve,TRUE,,urn:aswf:ocio:transformId:1.0:ITU:Utility:Linear_to_Rec709-Curve:1.0,NamedTransform,,"crv_rec709,Utility - Curve - Rec.709",sdr-video,file-io,
+443,ST-2084 - Curve,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:Linear_to_ST2084-Curve:1.0,NamedTransform,CURVE - LINEAR_to_ST-2084,,hdr-video,file-io,
+445,P3-D65_1000nit_in_Rec2100-D65_HLG,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_Rec2100-D65_HLG.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,,hdr-video,file-io,hlg_rec2020_display
+446,P3-D60_1000nit_in_Rec2100-D65_HLG,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_1000nit_in_Rec2100-D65_HLG.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-REC2020-D65_2.0,,hdr-video,file-io,hlg_rec2020_display
+450,P3-D65_500nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_500nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D65_2.0,,hdr-video,file-io,pq_rec2020_display
+451,P3-D65_1000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,,hdr-video,file-io,pq_rec2020_display
+451,P3-D65_2000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_2000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D65_2.0,,hdr-video,file-io,pq_rec2020_display
+451,P3-D65_4000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_4000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D65_2.0,,hdr-video,file-io,pq_rec2020_display
+455,P3-D60_500nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_500nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D60-in-REC2020-D65_2.0,,hdr-video,file-io,pq_rec2020_display
+456,P3-D60_1000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_1000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-REC2020-D65_2.0,,hdr-video,file-io,pq_rec2020_display
+456,P3-D60_2000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_2000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D60-in-REC2020-D65_2.0,,hdr-video,file-io,pq_rec2020_display
+456,P3-D60_4000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_4000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D60-in-REC2020-D65_2.0,,hdr-video,file-io,pq_rec2020_display
+460,Rec2100-D65_500nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_500nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-REC2020_2.0,,hdr-video,file-io,pq_rec2020_display
+461,Rec2100-D65_1000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_1000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-REC2020_2.0,,hdr-video,file-io,pq_rec2020_display
+461,Rec2100-D65_2000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_2000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-REC2020_2.0,,hdr-video,file-io,pq_rec2020_display
+461,Rec2100-D65_4000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D65_4000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-REC2020_2.0,,hdr-video,file-io,pq_rec2020_display
+465,Rec2100-D60_500nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D60_500nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-REC2020-D60-in-REC2020-D65_2.0,,hdr-video,file-io,pq_rec2020_display
+466,Rec2100-D60_1000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D60_1000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-REC2020-D60-in-REC2020-D65_2.0,,hdr-video,file-io,pq_rec2020_display
+466,Rec2100-D60_2000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D60_2000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-REC2020-D60-in-REC2020-D65_2.0,,hdr-video,file-io,pq_rec2020_display
+466,Rec2100-D60_4000nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec2100-D60_4000nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-REC2020-D60-in-REC2020-D65_2.0,,hdr-video,file-io,pq_rec2020_display
+470,Rec709-D60_100nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC2020-D65_2.0,,sdr-video,file-io,pq_rec2020_display
+470,Rec709-D65_100nit_in_Rec2100-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_Rec2100-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,sdr-video,file-io,pq_rec2020_display
+480,P3-D65_108nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_108nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-108nit-P3-D65_2.0,,hdr-video,file-io,pq_p3d65_display
+481,P3-D65_500nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_500nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D65_2.0,,hdr-video,file-io,pq_p3d65_display
+482,P3-D65_1000nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_1000nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D65_2.0,,hdr-video,file-io,pq_p3d65_display
+482,P3-D65_2000nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_2000nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D65_2.0,,hdr-video,file-io,pq_p3d65_display
+482,P3-D65_4000nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D65_4000nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D65_2.0,,hdr-video,file-io,pq_p3d65_display
+485,P3-D60_108nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_108nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-108nit-P3-D60-in-P3-D65_2.0,,hdr-video,file-io,pq_p3d65_display
+486,P3-D60_500nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_500nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-500nit-P3-D60-in-P3-D65_2.0,,hdr-video,file-io,pq_p3d65_display
+487,P3-D60_1000nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_1000nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-1000nit-P3-D60-in-P3-D65_2.0,,hdr-video,file-io,pq_p3d65_display
+487,P3-D60_2000nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_2000nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-2000nit-P3-D60-in-P3-D65_2.0,,hdr-video,file-io,pq_p3d65_display
+487,P3-D60_4000nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.P3-D60_4000nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-4000nit-P3-D60-in-P3-D65_2.0,,hdr-video,file-io,pq_p3d65_display
+490,Rec709-D65_100nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D65_100nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709_2.0,,sdr-video,file-io,pq_p3d65_display
+491,Rec709-D60_100nit_in_P3-D65_ST2084,FALSE,urn:ampas:aces:transformId:v2.0:Output.Academy.Rec709-D60_100nit_in_P3-D65_ST2084.a2.v1,,ViewTransform,ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-100nit-REC709-D60-in-REC2020-D65_2.0,,sdr-video,file-io,pq_p3d65_display
+500,sRGB Encoded Rec.709 (sRGB),TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB-Encoded-Rec709:1.0,ColorSpace,,"srgb_texture,srgb_rec709_scene,Utility - sRGB - Texture,Input - Generic - sRGB - Texture,sRGB - Texture,srgb_tx",sdr-video,"file-io,texture",srgb_rec709_scene
+501,Gamma 1.8 Encoded Rec.709,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma1.8_Encoded_Rec709:1.0,ColorSpace,,"g18_rec709,Utility - Gamma 1.8 - Rec.709 - Texture,Gamma 1.8 Rec.709 - Texture,g18_rec709_tx,g18_rec709_scene",sdr-video,"file-io,texture",g18_rec709_scene
+502,Gamma 2.2 Encoded Rec.709,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.2_Encoded_Rec709:1.0,ColorSpace,,"g22_rec709,Utility - Gamma 2.2 - Rec.709 - Texture,Gamma 2.2 Rec.709 - Texture,g22_rec709_tx,g22_rec709_scene",sdr-video,"file-io,texture",g22_rec709_scene
+503,Gamma 2.4 Encoded Rec.709,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.4_Encoded_Rec709:1.0,ColorSpace,,"g24_rec709,rec709_display,Utility - Rec.709 - Display,Gamma 2.4 Rec.709 - Texture,g24_rec709_tx",sdr-video,"file-io,texture",ocio:g24_rec709_scene
+504,Camera Rec.709,TRUE,,urn:aswf:ocio:transformId:1.0:ITU:Utility:AP0_to_Camera_Rec709:1.0,ColorSpace,,"rec709_camera,Utility - Rec.709 - Camera",sdr-video,file-io,ocio:itu709_rec709_scene
+505,sRGB Encoded P3-D65,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB_Encoded_P3-D65:1.0,ColorSpace,,"srgb_p3d65,srgb_displayp3,srgb_p3d65_scene,sRGB Encoded P3-D65 - Texture,srgb_encoded_p3d65_tx",sdr-video,"file-io,texture",srgb_p3d65_scene
+506,Gamma 2.2 Encoded AdobeRGB,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.2_Encoded_AdobeRGB:1.0,ColorSpace,,"adobergb,g22_adobergb_scene",sdr-video,"file-io,texture",g22_adobergb_scene
+507,sRGB Encoded AP1,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB_Encoded_AP1:1.0,ColorSpace,,"srgb_ap1,srgb_ap1_scene,sRGB Encoded AP1 - Texture,srgb_encoded_ap1_tx",sdr-video,"file-io,texture",srgb_ap1_scene
+508,Gamma 2.2 Encoded AP1,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.2_Encoded_AP1:1.0,ColorSpace,,"g22_ap1,Gamma 2.2 AP1 - Texture,g22_ap1_tx,g22_ap1_scene",sdr-video,"file-io,texture",g22_ap1_scene
+520,CIE XYZ-D65 - Scene-referred,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_CIE_XYZ-D65-Scene-referred:1.0,ColorSpace,,lin_ciexyzd65_scene,scene-linear,file-io,lin_ciexyzd65_scene
+520,Linear AdobeRGB,FALSE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_AdobeRGB:1.0,ColorSpace,,"lin_adobergb,lin_adobergb_scene,Utility - Linear - Adobe RGB",scene-linear,"file-io,texture",lin_adobergb_scene
+520,Linear P3-D65,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_P3-D65:1.0,ColorSpace,,"lin_p3d65,lin_displayp3,lin_p3d65_scene,Utility - Linear - P3-D65,Linear Display P3",scene-linear,"file-io,working-space,texture",lin_p3d65_scene
+520,Linear Rec.2020,TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_Rec2020:1.0,ColorSpace,,"lin_rec2020,lin_rec2020_scene,Utility - Linear - Rec.2020",scene-linear,"file-io,texture",lin_rec2020_scene
+520,Linear Rec.709 (sRGB),TRUE,,urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_Rec709:1.0,ColorSpace,,"lin_rec709,lin_rec709_scene,lin_srgb,Utility - Linear - sRGB,Utility - Linear - Rec.709",scene-linear,"file-io,working-space,texture",lin_rec709_scene
diff --git a/opencolorio_config_aces/utilities/__init__.py b/opencolorio_config_aces/utilities/__init__.py
index 5cb87486..d18e32fe 100644
--- a/opencolorio_config_aces/utilities/__init__.py
+++ b/opencolorio_config_aces/utilities/__init__.py
@@ -27,6 +27,8 @@
timestamp,
as_bool,
optional,
+ filter_any,
+ filter_all,
)
__all__ = [
@@ -55,4 +57,6 @@
"timestamp",
"as_bool",
"optional",
+ "filter_any",
+ "filter_all",
]
diff --git a/opencolorio_config_aces/utilities/common.py b/opencolorio_config_aces/utilities/common.py
index 38c245f3..17831092 100644
--- a/opencolorio_config_aces/utilities/common.py
+++ b/opencolorio_config_aces/utilities/common.py
@@ -60,6 +60,8 @@
"timestamp",
"as_bool",
"optional",
+ "filter_any",
+ "filter_all",
]
LOGGER = logging.getLogger(__name__)
@@ -842,3 +844,90 @@ def optional(value: T | None, default: T) -> T:
return default
else:
return value
+
+
+def filter_any(
+ array: list[dict[str, Any]], filterers: list[Callable[[dict[str, Any]], bool]]
+) -> list[dict[str, Any]]:
+ """
+ Filter array elements that pass any of the provided filter functions.
+
+ This function applies multiple filter functions to each element in the array
+ and returns elements that satisfy at least one filter condition (OR logic).
+
+ Parameters
+ ----------
+ array : list[dict[str, Any]]
+ The list of dictionaries to filter.
+ filterers : list[Callable[[dict[str, Any]], bool]]
+ A list of callable filter functions. Each function should accept a
+ dictionary and return True if the element passes the filter condition,
+ False otherwise.
+
+ Returns
+ -------
+ list[dict[str, Any]]
+ A new list containing only the elements that pass at least one of the
+ filter conditions.
+
+ Examples
+ --------
+ >>> transforms = [
+ ... {'name': 'ACEScc', 'type': 'CSC', 'family': 'aces'},
+ ... {'name': 'ACEScg', 'type': 'CSC', 'family': 'aces'},
+ ... {'name': 'sRGB', 'type': 'Output', 'family': 'display'},
+ ... ]
+ >>> is_csc = lambda x: x['type'] == 'CSC'
+ >>> is_output = lambda x: x['type'] == 'Output'
+ >>> filter_any(transforms, [is_csc, is_output])
+ [{'name': 'ACEScc', 'type': 'CSC', 'family': 'aces'}, \
+{'name': 'ACEScg', 'type': 'CSC', 'family': 'aces'}, \
+{'name': 'sRGB', 'type': 'Output', 'family': 'display'}]
+ """
+
+ filtered = [a for a in array if any(filterer(a) for filterer in filterers)]
+
+ return filtered
+
+
+def filter_all(
+ array: list[dict[str, Any]], filterers: list[Callable[[dict[str, Any]], bool]]
+) -> list[dict[str, Any]]:
+ """
+ Filter array elements that pass all of the provided filter functions.
+
+ This function applies multiple filter functions to each element in the array
+ and returns only elements that satisfy every filter condition (AND logic).
+
+ Parameters
+ ----------
+ array : list[dict[str, Any]]
+ The list of dictionaries to filter.
+ filterers : list[Callable[[dict[str, Any]], bool]]
+ A list of callable filter functions. Each function should accept a
+ dictionary and return True if the element passes the filter condition,
+ False otherwise.
+
+ Returns
+ -------
+ list[dict[str, Any]]
+ A new list containing only the elements that pass all of the filter
+ conditions.
+
+ Examples
+ --------
+ >>> transforms = [
+ ... {'name': 'ACEScc', 'type': 'CSC', 'family': 'aces'},
+ ... {'name': 'Rec709', 'type': 'Output', 'family': 'display'},
+ ... {'name': 'sRGB', 'type': 'Output', 'family': 'display'},
+ ... ]
+ >>> is_output = lambda x: x['type'] == 'Output'
+ >>> is_display = lambda x: x['family'] == 'display'
+ >>> filter_all(transforms, [is_output, is_display])
+ [{'name': 'Rec709', 'type': 'Output', 'family': 'display'}, \
+{'name': 'sRGB', 'type': 'Output', 'family': 'display'}]
+ """
+
+ filtered = [a for a in array if all(filterer(a) for filterer in filterers)]
+
+ return filtered
diff --git a/pyproject.toml b/pyproject.toml
index 7970baad..a8c6460d 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -108,7 +108,7 @@ reportUnnecessaryTypeIgnoreComment = true
reportUnsupportedDunderAll = false
reportUnusedExpression = false
reportAttributeAccessIssue = false # OpenColorIO does not have typing stubs.
-exclude = ["**/aces-system", "**/.venv"]
+exclude = ["**/aces", "**/.venv"]
[tool.ruff]
target-version = "py310"