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"