diff --git a/.dir-locals.el b/.dir-locals.el
new file mode 100644
index 00000000..4fa9120b
--- /dev/null
+++ b/.dir-locals.el
@@ -0,0 +1,6 @@
+;;; Directory Local Variables -*- no-byte-compile: t -*-
+;;; For more information see (info "(emacs) Directory Variables")
+
+;; for C and C++, we use 2 space offset, no tabs
+((prog-mode . ((c-basic-offset . 2)
+ (indent-tabs-mode . nil)))
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b0862260..9769abd9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,9 +11,10 @@ else()
LANGUAGES CXX) # no CUDA
endif()
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
-set(CMAKE_CXX_STANDARD 14)
+set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_STATIC_LIBRARY_PREFIX "lib")
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_definitions(-D_HAS_AUTO_PTR_ETC)
if(APPLE)
set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64")
@@ -62,6 +63,8 @@ list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake ${CMAKE_BINARY_DIR})
# Conan packages
find_package(EXPAT)
find_package(opengl_system REQUIRED)
+find_package(cimg REQUIRED)
+find_package(spdlog REQUIRED)
# Macros
include(OpenFX)
diff --git a/Examples/CMakeLists.txt b/Examples/CMakeLists.txt
index 50707a84..e6790fcc 100644
--- a/Examples/CMakeLists.txt
+++ b/Examples/CMakeLists.txt
@@ -3,6 +3,7 @@ set(OFX_SUPPORT_HEADER_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../Support/include")
set(PLUGINS
Basic
ChoiceParams
+ ColourSpace
Custom
DepthConverter
Invert
@@ -27,3 +28,5 @@ endforeach()
target_link_libraries(example-OpenGL PRIVATE opengl::opengl)
target_link_libraries(example-Custom PRIVATE opengl::opengl)
+target_link_libraries(example-ColourSpace PRIVATE cimg::cimg)
+target_link_libraries(example-ColourSpace PRIVATE spdlog::spdlog_header_only)
diff --git a/Examples/ColourSpace/Info.plist b/Examples/ColourSpace/Info.plist
new file mode 100644
index 00000000..dd0485fb
--- /dev/null
+++ b/Examples/ColourSpace/Info.plist
@@ -0,0 +1,20 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ English
+ CFBundleExecutable
+ colourspace.ofx
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundlePackageType
+ BNDL
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 0.0.1d1
+ CSResourcesFileMapped
+
+
+
diff --git a/Examples/ColourSpace/colourspace.cpp b/Examples/ColourSpace/colourspace.cpp
new file mode 100644
index 00000000..57354e48
--- /dev/null
+++ b/Examples/ColourSpace/colourspace.cpp
@@ -0,0 +1,821 @@
+// Copyright OpenFX and contributors to the OpenFX project.
+// SPDX-License-Identifier: BSD-3-Clause
+
+
+/*
+ Plugin example demonstrating colourspace handling
+ */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include "spdlog/spdlog.h"
+#define cimg_display 0 // no X11
+#include "CImg.h"
+#include "ofxImageEffect.h"
+#include "ofxMemory.h"
+#include "ofxMultiThread.h"
+#include "ofxColour.h"
+#include "ofx-native-v1.5_aces-v1.3_ocio-v2.3.h"
+
+#include "../include/ofxUtilities.H" // example support utils
+
+#if defined __APPLE__ || defined __linux__ || defined __FreeBSD__
+# define EXPORT __attribute__((visibility("default")))
+#elif defined _WIN32
+# define EXPORT OfxExport
+#else
+# error Not building on your operating system quite yet
+#endif
+
+const char *errMsg(int err) {
+ switch (err) {
+ case kOfxStatOK: return "OK";
+ case kOfxStatFailed : return "Failed";
+ case kOfxStatErrFatal: return "ErrFatal";
+ case kOfxStatErrUnknown: return "ErrUnknown";
+ case kOfxStatErrMissingHostFeature: return "ErrMissingHostFeature";
+ case kOfxStatErrUnsupported: return "ErrUnsupported";
+ case kOfxStatErrExists : return "ErrExists ";
+ case kOfxStatErrFormat: return "ErrFormat";
+ case kOfxStatErrMemory : return "ErrMemory";
+ case kOfxStatErrBadHandle: return "ErrBadHandle";
+ case kOfxStatErrBadIndex: return "ErrBadIndex";
+ case kOfxStatErrValue: return "ErrValue";
+ case kOfxStatReplyYes: return "ReplyYes";
+ case kOfxStatReplyNo: return "ReplyNo";
+ case kOfxStatReplyDefault: return "ReplyDefault";
+ default: return "Unknown!?";
+ }
+}
+
+// pointers to various bits of the host
+OfxHost *gHost;
+OfxImageEffectSuiteV1 *gEffectHost = 0;
+OfxPropertySuiteV1 *gPropHost = 0;
+OfxParameterSuiteV1 *gParamHost = 0;
+OfxMemorySuiteV1 *gMemoryHost = 0;
+OfxMultiThreadSuiteV1 *gThreadHost = 0;
+OfxMessageSuiteV1 *gMessageSuite = 0;
+OfxInteractSuiteV1 *gInteractHost = 0;
+
+// some flags about the host's behaviour
+int gHostSupportsMultipleBitDepths = false;
+std::string gHostColourManagementStyle;
+
+// private instance data type
+struct MyInstanceData {
+ bool isGeneralEffect;
+
+ // handles to the clips we deal with
+ OfxImageClipHandle sourceClip;
+ OfxImageClipHandle outputClip;
+
+ // handles to our parameters
+ OfxParamHandle inputSpaceParam;
+ OfxParamHandle outputSpaceParam;
+};
+
+template
+static constexpr T lerp(T a, T b, float amount) {
+ return a + amount * (b - a);
+}
+
+#define COMP_WHITE_OVER(a, b, bg_opacity) \
+ do { \
+ (a) = lerp((a) * (1.0f - (bg_opacity)), white, (b)); \
+} while (0)
+
+/**
+ * Draw a string of text at the given position in the image
+ */
+static void drawText(const std::string &message, int x, int y,
+ unsigned int font_height,
+ void *image, int xdim,
+ int ydim, int bits, int nchannels, int rowbytes) {
+ auto txt_img = cimg_library::CImg();
+ float fg[] = {1.0f};
+ float bg[] = {0};
+ // this will create an image just big enough to hold the text
+ txt_img.draw_text(0, 0, message.c_str(), fg, bg, 1.0, font_height);
+ int txt_width = txt_img.width();
+ int txt_height = txt_img.height();
+ // CImg is top-down, opposite of OpenFX (bottom up)
+ // iy here is image y, ty is text-image y; same for x
+ switch (bits) {
+ case 8: {
+ using T = unsigned char;
+ float white = 255.0f;
+ float color_scale = 1.0f/256.0f;
+ float bg_opacity = 0.2f;
+ for (int iy = y, ty = 0; iy < ydim && ty < txt_height; iy++, ty++) {
+ T *row = (T *)((unsigned char *)image + iy * rowbytes);
+ float *txt_row = txt_img.data(0, txt_height - 1 - ty);
+ for (int ix = x, tx = 0; ix < xdim && tx < txt_width; ix++, tx++) {
+ switch (nchannels) {
+ case 1: // Alpha only
+ row[ix*4] = std::max(row[ix*4], (T)(txt_row[tx] * color_scale));
+ case 3: // RGB
+ COMP_WHITE_OVER(row[ix*3], txt_row[tx], bg_opacity);
+ COMP_WHITE_OVER(row[ix*3+1], txt_row[tx], bg_opacity);
+ COMP_WHITE_OVER(row[ix*3+2], txt_row[tx], bg_opacity);
+ case 4: // RGBA
+ COMP_WHITE_OVER(row[ix*4], txt_row[tx], bg_opacity);
+ COMP_WHITE_OVER(row[ix*4+1], txt_row[tx], bg_opacity);
+ COMP_WHITE_OVER(row[ix*4+2], txt_row[tx], bg_opacity);
+ // alpha
+ row[ix*4+3] = std::max(row[ix*4+3], (T)(txt_row[tx] * color_scale));
+ }
+ }
+ }
+ } break;
+ case 16: {
+ using T = unsigned short;
+ float white = 65535.0f;
+ float color_scale = 1.0f/65536.0f;
+ float bg_opacity = 0.2f;
+ for (int iy = y, ty = 0; iy < ydim && ty < txt_height; iy++, ty++) {
+ T *row = (T *)((unsigned char *)image + iy * rowbytes);
+ float *txt_row = txt_img.data(0, txt_height - 1 - ty);
+ for (int ix = x, tx = 0; ix < xdim && tx < txt_width; ix++, tx++) {
+ switch (nchannels) {
+ case 1: // Alpha only
+ row[ix*4] = std::max(row[ix*4], (T)(txt_row[tx] * color_scale));
+ case 3: // RGB
+ COMP_WHITE_OVER(row[ix*3], txt_row[tx], bg_opacity);
+ COMP_WHITE_OVER(row[ix*3+1], txt_row[tx], bg_opacity);
+ COMP_WHITE_OVER(row[ix*3+2], txt_row[tx], bg_opacity);
+ case 4: // RGBA
+ COMP_WHITE_OVER(row[ix*4], txt_row[tx], bg_opacity);
+ COMP_WHITE_OVER(row[ix*4+1], txt_row[tx], bg_opacity);
+ COMP_WHITE_OVER(row[ix*4+2], txt_row[tx], bg_opacity);
+ // alpha
+ row[ix*4+3] = std::max(row[ix*4+3], (T)(txt_row[tx] * color_scale));
+ }
+ }
+ }
+ } break;
+ case 32: {
+ float white = 1.0f;
+ float bg_opacity = 0.2f;
+ for (int iy = y, ty = 0; iy < ydim && ty < txt_height; iy++, ty++) {
+ float *row = (float *)((unsigned char *)image + iy * rowbytes);
+ float *txt_row = txt_img.data(0, txt_height - 1 - ty);
+ for (int ix = x, tx = 0; ix < xdim && tx < txt_width; ix++, tx++) {
+ switch (nchannels) {
+ case 1: // Alpha only
+ row[ix*4] = std::max(row[ix*4], txt_row[tx]);
+ case 3: // RGB
+ COMP_WHITE_OVER(row[ix*3], txt_row[tx], bg_opacity);
+ COMP_WHITE_OVER(row[ix*3+1], txt_row[tx], bg_opacity);
+ COMP_WHITE_OVER(row[ix*3+2], txt_row[tx], bg_opacity);
+ case 4: // RGBA
+ COMP_WHITE_OVER(row[ix*4], txt_row[tx], bg_opacity);
+ COMP_WHITE_OVER(row[ix*4+1], txt_row[tx], bg_opacity);
+ COMP_WHITE_OVER(row[ix*4+2], txt_row[tx], bg_opacity);
+ // alpha
+ row[ix*4+3] = std::max(row[ix*4+3], txt_row[tx]);
+ }
+ }
+ } break;
+ }
+ }
+}
+
+
+
+/* mandatory function to set up the host structures */
+
+
+// Convenience wrapper to get private data
+static MyInstanceData *
+getMyInstanceData( OfxImageEffectHandle effect)
+{
+ // get the property handle for the plugin
+ OfxPropertySetHandle effectProps;
+ gEffectHost->getPropertySet(effect, &effectProps);
+
+ // get my data pointer out of that
+ MyInstanceData *myData = 0;
+ gPropHost->propGetPointer(effectProps, kOfxPropInstanceData, 0,
+ (void **) &myData);
+ return myData;
+}
+
+// Convenience wrapper to set the enabledness of a parameter
+static inline void
+setParamEnabledness( OfxImageEffectHandle effect,
+ const char *paramName,
+ int enabledState)
+{
+ // fetch the parameter set for this effect
+ OfxParamSetHandle paramSet;
+ gEffectHost->getParamSet(effect, ¶mSet);
+
+ // fetch the parameter property handle
+ OfxParamHandle param; OfxPropertySetHandle paramProps;
+ gParamHost->paramGetHandle(paramSet, paramName, ¶m, ¶mProps);
+
+ // and set its enabledness
+ gPropHost->propSetInt(paramProps, kOfxParamPropEnabled, 0, enabledState);
+}
+
+/** @brief Called at load */
+static OfxStatus
+onLoad(void)
+{
+ return kOfxStatOK;
+}
+
+/** @brief Called before unload */
+static OfxStatus
+onUnLoad(void)
+{
+ return kOfxStatOK;
+}
+
+// instance construction
+static OfxStatus
+createInstance( OfxImageEffectHandle effect)
+{
+ // get a pointer to the effect properties
+ OfxPropertySetHandle effectProps;
+ gEffectHost->getPropertySet(effect, &effectProps);
+
+ // get a pointer to the effect's parameter set
+ OfxParamSetHandle paramSet;
+ gEffectHost->getParamSet(effect, ¶mSet);
+
+ // make my private instance data
+ MyInstanceData *myData = new MyInstanceData;
+ char *context = 0;
+
+ // is this instance a general effect ?
+ gPropHost->propGetString(effectProps, kOfxImageEffectPropContext, 0, &context);
+ myData->isGeneralEffect = context && (strcmp(context, kOfxImageEffectContextGeneral) == 0);
+
+ // cache param handles
+ gParamHost->paramGetHandle(paramSet, "input_colourspace", &myData->inputSpaceParam, 0);
+ gParamHost->paramGetHandle(paramSet, "output_colourspace", &myData->outputSpaceParam, 0);
+
+ // cache clip handles
+ gEffectHost->clipGetHandle(effect, kOfxImageEffectSimpleSourceClipName, &myData->sourceClip, 0);
+ gEffectHost->clipGetHandle(effect, kOfxImageEffectOutputClipName, &myData->outputClip, 0);
+
+ // set my private instance data
+ gPropHost->propSetPointer(effectProps, kOfxPropInstanceData, 0, (void *) myData);
+
+ return kOfxStatOK;
+}
+
+// instance destruction
+static OfxStatus
+destroyInstance( OfxImageEffectHandle effect)
+{
+ // get my instance data
+ MyInstanceData *myData = getMyInstanceData(effect);
+
+ // and delete it
+ if(myData)
+ delete myData;
+ return kOfxStatOK;
+}
+
+// tells the host what region we are capable of filling
+OfxStatus
+getSpatialRoD( OfxImageEffectHandle effect, OfxPropertySetHandle inArgs, OfxPropertySetHandle outArgs)
+{
+ // retrieve any instance data associated with this effect
+ MyInstanceData *myData = getMyInstanceData(effect);
+
+ OfxTime time;
+ gPropHost->propGetDouble(inArgs, kOfxPropTime, 0, &time);
+
+ // my RoD is the same as my input's
+ OfxRectD rod;
+ gEffectHost->clipGetRegionOfDefinition(myData->sourceClip, time, &rod);
+
+ // set the rod in the out args
+ gPropHost->propSetDoubleN(outArgs, kOfxImageEffectPropRegionOfDefinition, 4, &rod.x1);
+
+ return kOfxStatOK;
+}
+
+// tells the host how much of the input we need to fill the given window
+OfxStatus
+getSpatialRoI( OfxImageEffectHandle effect, OfxPropertySetHandle inArgs, OfxPropertySetHandle outArgs)
+{
+ // get the RoI the effect is interested in from inArgs
+ OfxRectD roi;
+ gPropHost->propGetDoubleN(inArgs, kOfxImageEffectPropRegionOfInterest, 4, &roi.x1);
+
+ // the input needed is the same as the output, so set that on the source clip
+ gPropHost->propSetDoubleN(outArgs, "OfxImageClipPropRoI_Source", 4, &roi.x1);
+
+ // retrieve any instance data associated with this effect
+ MyInstanceData *myData = getMyInstanceData(effect);
+
+ return kOfxStatOK;
+}
+
+// Tells the host how many frames we can fill. Only called in the general context.
+// This shows the default behaviour; shown for illustrative purposes.
+OfxStatus
+getTemporalDomain( OfxImageEffectHandle effect, OfxPropertySetHandle /*inArgs*/, OfxPropertySetHandle outArgs)
+{
+ MyInstanceData *myData = getMyInstanceData(effect);
+
+ double sourceRange[2];
+
+ // get the frame range of the source clip
+ OfxPropertySetHandle props; gEffectHost->clipGetPropertySet(myData->sourceClip, &props);
+ gPropHost->propGetDoubleN(props, kOfxImageEffectPropFrameRange, 2, sourceRange);
+
+ // set it on the out args
+ gPropHost->propSetDoubleN(outArgs, kOfxImageEffectPropFrameRange, 2, sourceRange);
+
+ return kOfxStatOK;
+}
+
+
+// Set our clip preferences
+static OfxStatus
+getClipPreferences( OfxImageEffectHandle effect, OfxPropertySetHandle /*inArgs*/, OfxPropertySetHandle outArgs)
+{
+ // retrieve any instance data associated with this effect
+ MyInstanceData *myData = getMyInstanceData(effect);
+
+ // get the component type and bit depth of our main input
+ int bitDepth;
+ bool isRGBA;
+ ofxuClipGetFormat(myData->sourceClip, bitDepth, isRGBA, true); // get the unmapped clip component
+
+ // get the strings used to label the various bit depths
+ const char *bitDepthStr = bitDepth == 8 ? kOfxBitDepthByte : (bitDepth == 16 ? kOfxBitDepthShort : kOfxBitDepthFloat);
+ const char *componentStr = isRGBA ? kOfxImageComponentRGBA : kOfxImageComponentAlpha;
+
+ std::string preferredInputSpace;
+ std::string preferredOutputSpace;
+ int preferredInputSpaceIndex;
+ int preferredOutputSpaceIndex;
+ gParamHost->paramGetValue(myData->inputSpaceParam, &preferredInputSpaceIndex);
+ gParamHost->paramGetValue(myData->outputSpaceParam, &preferredOutputSpaceIndex);
+
+ switch (preferredInputSpaceIndex) {
+ case 0:
+ preferredInputSpace = kOfxColourspaceRoleSceneLinear;
+ break;
+ case 1:
+ preferredInputSpace = kOfxColourspaceRaw;
+ break;
+ case 2:
+ preferredInputSpace = kOfxColourspaceRoleColorTiming;
+ break;
+ case 3:
+ preferredInputSpace = {};
+ break;
+ }
+
+ switch (preferredOutputSpaceIndex) {
+ case 0:
+ preferredOutputSpace = kOfxColourspaceACEScg;
+ break;
+ case 1:
+ preferredOutputSpace = kOfxColourspaceLinRec2020;
+ break;
+ case 2:
+ preferredOutputSpace = kOfxColourspaceSrgbTx;
+ break;
+ case 3:
+ preferredOutputSpace = kOfxColourspaceACEScct;
+ break;
+ }
+
+ // set our output to be the same same as the input, component and bitdepth
+ gPropHost->propSetString(outArgs, "OfxImageClipPropComponents_Output", 0, componentStr);
+ if(gHostSupportsMultipleBitDepths)
+ gPropHost->propSetString(outArgs, "OfxImageClipPropDepth_Output", 0, bitDepthStr);
+
+ // Colour management -- preferred colour spaces, in order (most preferred first)
+#define PREFER_COLOURSPACES
+#ifdef PREFER_COLOURSPACES
+ if (gHostColourManagementStyle != kOfxImageEffectPropColourManagementNone) {
+ spdlog::info("Specifying preferred colourspaces since host style={}", gHostColourManagementStyle);
+ if(!preferredInputSpace.empty()) {
+ const char* colourSpaces[] = {
+ preferredInputSpace.c_str(),
+ kOfxColourspaceLinRec2020,
+ kOfxColourspaceRoleSceneLinear};
+ for (size_t i = 0; i < std::size(colourSpaces); i++) {
+ spdlog::info("Specifying preferred colourspace {} = {}", i, colourSpaces[i]);
+ gPropHost->propSetString(outArgs, kOfxImageClipPropPreferredColourspaces "_Source",
+ i, colourSpaces[i]);
+ }
+ }
+
+ if (!preferredOutputSpace.empty())
+ gPropHost->propSetString(outArgs, kOfxImageClipPropPreferredColourspaces "_Output", 0, preferredOutputSpace.c_str());
+
+ } else {
+ spdlog::info("Host does not support colour management (this example won't be very interesting)");
+ }
+#endif
+
+ return kOfxStatOK;
+}
+
+// are the settings of the effect performing an identity operation
+static OfxStatus
+isIdentity( OfxImageEffectHandle effect,
+ OfxPropertySetHandle inArgs,
+ OfxPropertySetHandle outArgs)
+{
+ return kOfxStatReplyDefault; // this example is never identity; always render
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// function called when the instance has been changed by anything
+static OfxStatus
+instanceChanged( OfxImageEffectHandle effect,
+ OfxPropertySetHandle inArgs,
+ OfxPropertySetHandle /*outArgs*/)
+{
+ // see why it changed
+ char *changeReason;
+ gPropHost->propGetString(inArgs, kOfxPropChangeReason, 0, &changeReason);
+
+ // we are only interested in user edits
+ if(strcmp(changeReason, kOfxChangeUserEdited) != 0) return kOfxStatReplyDefault;
+
+ // fetch the type of the object that changed
+ char *typeChanged;
+ gPropHost->propGetString(inArgs, kOfxPropType, 0, &typeChanged);
+
+ // was it a clip or a param?
+ bool isClip = strcmp(typeChanged, kOfxTypeClip) == 0;
+ bool isParam = strcmp(typeChanged, kOfxTypeParameter) == 0;
+
+ // get the name of the thing that changed
+ char *objChanged;
+ gPropHost->propGetString(inArgs, kOfxPropName, 0, &objChanged);
+
+ // don't trap any others
+ return kOfxStatReplyDefault;
+}
+
+
+static std::string getClipColourspace(const OfxImageClipHandle clip) {
+ OfxPropertySetHandle clipProps;
+ gEffectHost->clipGetPropertySet(clip, &clipProps);
+ char *tmpStr = NULL;
+ OfxStatus status = gPropHost->propGetString(clipProps, kOfxImageClipPropColourspace, 0, &tmpStr);
+ if (status == kOfxStatOK) {
+ return std::string(tmpStr);
+ } else {
+ spdlog::info("Can't get clip's colourspace; propGetString returned {}", errMsg(status));
+ return std::string("unspecified");
+ }
+
+}
+
+static OfxStatus render( OfxImageEffectHandle instance,
+ OfxPropertySetHandle inArgs,
+ OfxPropertySetHandle /*outArgs*/)
+{
+ // get the render window and the time from the inArgs
+ OfxTime time;
+ OfxRectI renderWindow;
+ OfxStatus status = kOfxStatOK;
+
+ gPropHost->propGetDouble(inArgs, kOfxPropTime, 0, &time);
+ gPropHost->propGetIntN(inArgs, kOfxImageEffectPropRenderWindow, 4, &renderWindow.x1);
+
+ double renderScale[2];
+ OfxStatus st = gPropHost->propGetDoubleN(inArgs, kOfxImageEffectPropRenderScale, 2,
+ renderScale);
+ if (st != kOfxStatOK) {
+ spdlog::warn("Can't get render scale! {}", errMsg(st));
+ renderScale[0] = renderScale[1] = 1.0f;
+ }
+ // retrieve any instance data associated with this effect
+ MyInstanceData *myData = getMyInstanceData(instance);
+
+ // property handles and members of each image
+ // in reality, we would put this in a struct as the C++ support layer does
+ OfxPropertySetHandle sourceImg = NULL, outputImg = NULL, maskImg = NULL;
+ int srcRowBytes, srcBitDepth, dstRowBytes, dstBitDepth, maskRowBytes = 0, maskBitDepth;
+ bool srcIsAlpha, dstIsAlpha, maskIsAlpha = false;
+ OfxRectI dstRect, srcRect, maskRect = {0, 0, 0, 0};
+ void *src, *dst, *mask = NULL;
+
+ std::string inputColourspace = getClipColourspace(myData->sourceClip);
+ spdlog::info("source clip colourspace = {}", inputColourspace);
+ std::string outputColourspace = getClipColourspace(myData->outputClip);
+ spdlog::info("output clip colourspace = {}", outputColourspace);
+
+ try {
+ // get the source image
+ sourceImg = ofxuGetImage(myData->sourceClip, time, srcRowBytes, srcBitDepth, srcIsAlpha, srcRect, src);
+ if(sourceImg == NULL) throw OfxuNoImageException();
+
+ // get the output image
+ outputImg = ofxuGetImage(myData->outputClip, time, dstRowBytes, dstBitDepth, dstIsAlpha, dstRect, dst);
+ if(outputImg == NULL) throw OfxuNoImageException();
+
+ // see if they have the same depths and bytes and all
+ if(srcBitDepth != dstBitDepth || srcIsAlpha != dstIsAlpha || srcRowBytes != dstRowBytes) {
+ throw OfxuStatusException(kOfxStatErrImageFormat);
+ }
+
+ int xdim = srcRect.x2 - srcRect.x1;
+ int ydim = srcRect.y2 - srcRect.y1;
+ // do the rendering
+
+ int nchannels = 4;
+ int font_height = 50 * renderScale[0];
+ spdlog::info("Rendering {}x{} image @{},{}, depth={}", xdim, ydim, srcRect.x1, srcRect.y1, dstBitDepth);
+
+ // Just copy from source to dest, and draw some text
+ if (srcRowBytes < 0 && dstRowBytes < 0)
+ memcpy((char *)dst + dstRowBytes * (ydim-1), (char*)src + srcRowBytes * (ydim-1), -srcRowBytes * ydim);
+ else
+ memcpy(dst, src, srcRowBytes * ydim);
+ int ystart = ydim - 100;
+ drawText(fmt::format("Image: {}x{}, depth={}, scale={:.2f}x{:.2f}", xdim, ydim, dstBitDepth, renderScale[0], renderScale[1]),
+ 100, ystart, font_height, dst, xdim, ydim, dstBitDepth, nchannels, dstRowBytes);
+ ystart -= font_height;
+ drawText(fmt::format("input colourspace: {}", inputColourspace),
+ 100, ystart, font_height, dst, xdim, ydim, dstBitDepth, nchannels, dstRowBytes);
+ ystart -= font_height;
+ drawText(fmt::format("output colourspace: {}", outputColourspace),
+ 100, ystart, font_height, dst, xdim, ydim, dstBitDepth, nchannels, dstRowBytes);
+ }
+ catch(OfxuNoImageException &ex) {
+ // if we were interrupted, the failed fetch is fine, just return kOfxStatOK
+ // otherwise, something weird happened
+ if(!gEffectHost->abort(instance)) {
+ status = kOfxStatFailed;
+ }
+ }
+ catch(OfxuStatusException &ex) {
+ status = ex.status();
+ }
+
+ // release the data pointers
+ if(sourceImg)
+ gEffectHost->clipReleaseImage(sourceImg);
+ if(outputImg)
+ gEffectHost->clipReleaseImage(outputImg);
+
+ return status;
+}
+
+
+// describe the plugin in context
+static OfxStatus
+describeInContext( OfxImageEffectHandle effect, OfxPropertySetHandle inArgs)
+{
+ // get the context from the inArgs handle
+ char *context;
+ gPropHost->propGetString(inArgs, kOfxImageEffectPropContext, 0, &context);
+ bool isGeneralContext = strcmp(context, kOfxImageEffectContextGeneral) == 0;
+
+ OfxPropertySetHandle clipProps;
+ // define the single output clip in both contexts
+ gEffectHost->clipDefine(effect, kOfxImageEffectOutputClipName, &clipProps);
+
+ // set the component types we can handle on out output
+ gPropHost->propSetString(clipProps, kOfxImageEffectPropSupportedComponents, 0, kOfxImageComponentRGBA);
+
+ // define the single source clip in both contexts
+ gEffectHost->clipDefine(effect, kOfxImageEffectSimpleSourceClipName, &clipProps);
+
+ // set the component types we can handle on our main input
+ gPropHost->propSetString(clipProps, kOfxImageEffectPropSupportedComponents, 0, kOfxImageComponentRGBA);
+
+ ////////////////////////////////////////////////////////////////////////////////
+ // define the parameters for this context
+ OfxPropertySetHandle props;
+ OfxParamSetHandle paramSet;
+ gEffectHost->getParamSet(effect, ¶mSet);
+
+ gParamHost->paramDefine(paramSet, kOfxParamTypeChoice, "input_colourspace", &props);
+ gPropHost->propSetInt(props, kOfxParamPropDefault, 0, 0);
+ gPropHost->propSetString(props, kOfxPropLabel, 0, "Preferred Input Colourspace");
+ gPropHost->propSetString(props, kOfxParamPropChoiceOption, 0, "Scene Linear");
+ gPropHost->propSetString(props, kOfxParamPropChoiceOption, 1, "Raw");
+ gPropHost->propSetString(props, kOfxParamPropChoiceOption, 2, "Log (Color Timing role)");
+ gPropHost->propSetString(props, kOfxParamPropChoiceOption, 3, "Unspecified (accepts anything)");
+
+ gParamHost->paramDefine(paramSet, kOfxParamTypeChoice, "output_colourspace", &props);
+ gPropHost->propSetInt(props, kOfxParamPropDefault, 0, 0);
+ gPropHost->propSetString(props, kOfxPropLabel, 0, "Output Colourspace");
+ gPropHost->propSetString(props, kOfxParamPropChoiceOption, 0, "ACEScg (scene linear)");
+ gPropHost->propSetString(props, kOfxParamPropChoiceOption, 1, "Rec2020 (linear)");
+ gPropHost->propSetString(props, kOfxParamPropChoiceOption, 2, "SRGB");
+ gPropHost->propSetString(props, kOfxParamPropChoiceOption, 3, "ACEScct (Log)");
+
+ // These params affect clip preferences
+ OfxPropertySetHandle effectProps;
+ gEffectHost->getPropertySet(effect, &effectProps);
+ gPropHost->propSetString(effectProps, kOfxImageEffectPropClipPreferencesSlaveParam, 0, "input_colourspace");
+ gPropHost->propSetString(effectProps, kOfxImageEffectPropClipPreferencesSlaveParam, 1, "output_colourspace");
+
+ return kOfxStatOK;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// the plugin's description routine
+static OfxStatus
+describe(OfxImageEffectHandle effect)
+{
+ // first fetch the host APIs, this cannot be done before this call
+ OfxStatus stat;
+ if((stat = ofxuFetchHostSuites()) != kOfxStatOK)
+ return stat;
+
+ // record a few host features
+ gPropHost->propGetInt(gHost->host, kOfxImageEffectPropSupportsMultipleClipDepths, 0, &gHostSupportsMultipleBitDepths);
+ char *tmpStr = NULL;
+ stat = gPropHost->propGetString(
+ gHost->host, kOfxImageEffectPropColourManagementStyle, 0, &tmpStr);
+ if (stat == kOfxStatOK) {
+ gHostColourManagementStyle = tmpStr;
+ spdlog::info("describe: host says its colour management style is '{}'", gHostColourManagementStyle);
+ } else {
+ spdlog::info("describe: host does not support colour management (err={})", errMsg(stat));
+ gHostColourManagementStyle = kOfxImageEffectPropColourManagementNone;
+ }
+
+ // get the property handle for the plugin
+ OfxPropertySetHandle effectProps;
+ gEffectHost->getPropertySet(effect, &effectProps);
+
+ // We can render both fields in a fielded images in one hit if there is no animation
+ // So set the flag that allows us to do this
+ gPropHost->propSetInt(effectProps, kOfxImageEffectPluginPropFieldRenderTwiceAlways, 0, 0);
+
+ // say we can support multiple pixel depths and let the clip preferences action deal with it all.
+ gPropHost->propSetInt(effectProps, kOfxImageEffectPropSupportsMultipleClipDepths, 0, 1);
+
+ // set the bit depths the plugin can handle
+ gPropHost->propSetString(effectProps, kOfxImageEffectPropSupportedPixelDepths, 0, kOfxBitDepthByte);
+ gPropHost->propSetString(effectProps, kOfxImageEffectPropSupportedPixelDepths, 1, kOfxBitDepthShort);
+ gPropHost->propSetString(effectProps, kOfxImageEffectPropSupportedPixelDepths, 2, kOfxBitDepthFloat);
+
+ // set some labels and the group it belongs to
+ gPropHost->propSetString(effectProps, kOfxPropLabel, 0, "OFX Colourspace Example");
+ gPropHost->propSetString(effectProps, kOfxImageEffectPluginPropGrouping, 0, "OFX Example");
+
+ // define the contexts we can be used in
+ gPropHost->propSetString(effectProps, kOfxImageEffectPropSupportedContexts, 0, kOfxImageEffectContextFilter);
+ gPropHost->propSetString(effectProps, kOfxImageEffectPropSupportedContexts, 1, kOfxImageEffectContextGeneral);
+
+ if (gHostColourManagementStyle != kOfxImageEffectPropColourManagementNone) {
+ // host supports colour management, either OCIO or Core (or others; see the spec).
+ // OCIO implies core, so here we can assume it supports Core.
+ // Tell it we support Core.
+ stat = gPropHost->propSetString(effectProps,
+ kOfxImageEffectPropColourManagementStyle, 0,
+ kOfxImageEffectPropColourManagementCore);
+ if (stat != kOfxStatOK) {
+ spdlog::error("setting kOfxImageEffectPropColourManagementStyle prop: stat={}", errMsg(stat));
+ }
+ }
+
+ return kOfxStatOK;
+}
+
+// Make these actions "silent", i.e. not logged. They can be super verbose.
+std::set silentActions = {"uk.co.thefoundry.FnOfxImageEffectActionGetTransform"};
+
+////////////////////////////////////////////////////////////////////////////////
+// The main function
+static OfxStatus
+pluginMain(const char *action, const void *handle, OfxPropertySetHandle inArgs, OfxPropertySetHandle outArgs)
+{
+ OfxStatus stat = kOfxStatOK;
+
+ if (silentActions.find(action) == silentActions.end())
+ spdlog::info(">>> pluginMain({})", action);
+ try {
+ // cast to appropriate type
+ OfxImageEffectHandle effect = (OfxImageEffectHandle) handle;
+
+ if(strcmp(action, kOfxActionDescribe) == 0) {
+ stat = describe(effect);
+ }
+ else if(strcmp(action, kOfxImageEffectActionDescribeInContext) == 0) {
+ stat = describeInContext(effect, inArgs);
+ }
+ else if(strcmp(action, kOfxActionLoad) == 0) {
+ stat = onLoad();
+ }
+ else if(strcmp(action, kOfxActionUnload) == 0) {
+ stat = onUnLoad();
+ }
+ else if(strcmp(action, kOfxActionCreateInstance) == 0) {
+ stat = createInstance(effect);
+ }
+ else if(strcmp(action, kOfxActionDestroyInstance) == 0) {
+ stat = destroyInstance(effect);
+ }
+ else if(strcmp(action, kOfxImageEffectActionIsIdentity) == 0) {
+ stat = isIdentity(effect, inArgs, outArgs);
+ }
+ else if(strcmp(action, kOfxImageEffectActionRender) == 0) {
+ stat = render(effect, inArgs, outArgs);
+ }
+ else if(strcmp(action, kOfxImageEffectActionGetRegionOfDefinition) == 0) {
+ stat = getSpatialRoD(effect, inArgs, outArgs);
+ }
+ else if(strcmp(action, kOfxImageEffectActionGetRegionsOfInterest) == 0) {
+ stat = getSpatialRoI(effect, inArgs, outArgs);
+ }
+ else if(strcmp(action, kOfxImageEffectActionGetClipPreferences) == 0) {
+ stat = getClipPreferences(effect, inArgs, outArgs);
+ }
+ else if(strcmp(action, kOfxActionInstanceChanged) == 0) {
+ stat = instanceChanged(effect, inArgs, outArgs);
+ }
+ else if(strcmp(action, kOfxImageEffectActionGetTimeDomain) == 0) {
+ stat = getTemporalDomain(effect, inArgs, outArgs);
+ }
+ } catch (const std::bad_alloc&) {
+ // catch memory
+ spdlog::error("Caught OFX Plugin Memory error");
+ stat = kOfxStatErrMemory;
+ } catch ( const std::exception& e ) {
+ // standard exceptions
+ spdlog::error("Caught OFX Plugin error {}", e.what());
+ stat = kOfxStatErrUnknown;
+ } catch (int err) {
+ spdlog::error("Caught misc error {}", err);
+ stat = err;
+ } catch ( ... ) {
+ // everything else
+ spdlog::error("Caught unknown OFX plugin error");
+ stat = kOfxStatErrUnknown;
+ }
+ // other actions to take the default value
+
+
+ if (silentActions.find(action) == silentActions.end())
+ spdlog::info("<<< pluginMain({}) = {}", action, errMsg(stat));
+ return stat;
+}
+
+// function to set the host structure
+static void
+setHostFunc(OfxHost *hostStruct)
+{
+ gHost = hostStruct;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// the plugin struct
+static OfxPlugin colourspacePlugin =
+{
+ kOfxImageEffectPluginApi,
+ 1,
+ "io.aswf.openfx.example.ColourspacePlugin",
+ 1,
+ 0,
+ setHostFunc,
+ pluginMain
+};
+
+// the two mandated functions
+EXPORT OfxPlugin *
+OfxGetPlugin(int nth)
+{
+ if(nth == 0)
+ return &colourspacePlugin;
+ return 0;
+}
+
+EXPORT int
+OfxGetNumberOfPlugins(void)
+{
+ return 1;
+}
+
+// Called first after loading. This is optional for plugins.
+EXPORT OfxStatus
+OfxSetHost()
+{
+ return kOfxStatOK;
+}
+
+struct SharedLibResource {
+ SharedLibResource() {
+ spdlog::set_level(spdlog::level::trace);
+ spdlog::trace("shlib/dll loaded");
+ }
+ ~SharedLibResource() {
+ }
+};
+static SharedLibResource _sharedLibResource;
diff --git a/Support/Plugins/ChoiceParams/Info.plist b/Support/Plugins/ChoiceParams/Info.plist
index 21152b3e..750eda64 100644
--- a/Support/Plugins/ChoiceParams/Info.plist
+++ b/Support/Plugins/ChoiceParams/Info.plist
@@ -5,7 +5,7 @@
CFBundleDevelopmentRegion
English
CFBundleExecutable
- basic.ofx
+ choiceparams.ofx
CFBundleInfoDictionaryVersion
6.0
CFBundlePackageType
diff --git a/conanfile.py b/conanfile.py
index 20bc70d7..45a46de5 100644
--- a/conanfile.py
+++ b/conanfile.py
@@ -29,7 +29,9 @@ class openfx(ConanFile):
options = {"use_opencl": [True, False]}
default_options = {
"expat/*:shared": True,
- "use_opencl": False
+ "use_opencl": False,
+ "spdlog/*:header_only": True,
+ "fmt/*:header_only": True
}
def requirements(self):
@@ -38,6 +40,8 @@ def requirements(self):
self.requires("opencl-headers/2023.12.14")
self.requires("opengl/system") # for OpenGL examples
self.requires("expat/2.4.8") # for HostSupport
+ self.requires("cimg/3.3.2") # to draw text into images
+ self.requires("spdlog/1.13.0") # for logging
def layout(self):
cmake_layout(self)
diff --git a/include/ofx-native-v1.5_aces-v1.3_ocio-v2.3.h b/include/ofx-native-v1.5_aces-v1.3_ocio-v2.3.h
new file mode 100644
index 00000000..c4cb01d6
--- /dev/null
+++ b/include/ofx-native-v1.5_aces-v1.3_ocio-v2.3.h
@@ -0,0 +1,819 @@
+#ifndef _ofx_native_v1_5_aces_v1_3_ocio_v2_3_h_
+#define _ofx_native_v1_5_aces_v1_3_ocio_v2_3_h_
+
+// Copyright OpenFX and contributors to the OpenFX project.
+// SPDX-License-Identifier: BSD-3-Clause
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** @file ofxColourspaceList.h
+Contains the list of supported colourspaces.
+This file was auto-generated by scripts/genColour from ofx-native-v1.5_aces-v1.3_ocio-v2.3.
+*/
+
+// For use with kOfxImageEffectPropColourManagementAvailableConfigs
+#define kOfxConfigIdentifier "ofx-native-v1.5_aces-v1.3_ocio-v2.3"
+
+// Basic Colourspaces
+// These colourspaces are generic names for any colourspace with the correct attributes.
+
+/** @brief ofx_display_hdr
+Any display-referred HDR video such as Rec. 2100 HLG or PQ.
+*/
+#define kOfxColourspaceOfxDisplayHdr "ofx_display_hdr"
+#define kOfxColourspaceOfxDisplayHdrLabel "OFX generic display HDR"
+#define kOfxColourspaceOfxDisplayHdrEncoding "hdr-video"
+#define kOfxColourspaceOfxDisplayHdrIsData false
+#define kOfxColourspaceOfxDisplayHdrIsBasic true
+#define kOfxColourspaceOfxDisplayHdrIsCore true
+#define kOfxColourspaceOfxDisplayHdrIsDisplay true
+
+/** @brief ofx_display_sdr
+Any display-referred SDR video such as Rec. 709.
+*/
+#define kOfxColourspaceOfxDisplaySdr "ofx_display_sdr"
+#define kOfxColourspaceOfxDisplaySdrLabel "OFX generic display SDR"
+#define kOfxColourspaceOfxDisplaySdrEncoding "sdr-video"
+#define kOfxColourspaceOfxDisplaySdrIsData false
+#define kOfxColourspaceOfxDisplaySdrIsBasic true
+#define kOfxColourspaceOfxDisplaySdrIsCore true
+#define kOfxColourspaceOfxDisplaySdrIsDisplay true
+
+/** @brief ofx_raw
+Image values should not be treated as colour, e.g. motion vectors or masks.
+*/
+#define kOfxColourspaceOfxRaw "ofx_raw"
+#define kOfxColourspaceOfxRawLabel "OFX generic raw"
+#define kOfxColourspaceOfxRawEncoding ""
+#define kOfxColourspaceOfxRawIsData true
+#define kOfxColourspaceOfxRawIsBasic true
+#define kOfxColourspaceOfxRawIsCore true
+#define kOfxColourspaceOfxRawIsDisplay false
+
+/** @brief ofx_scene_linear
+Any scene-referred linear colourspace.
+*/
+#define kOfxColourspaceOfxSceneLinear "ofx_scene_linear"
+#define kOfxColourspaceOfxSceneLinearLabel "OFX generic scene linear"
+#define kOfxColourspaceOfxSceneLinearEncoding "scene-linear"
+#define kOfxColourspaceOfxSceneLinearIsData false
+#define kOfxColourspaceOfxSceneLinearIsBasic true
+#define kOfxColourspaceOfxSceneLinearIsCore true
+#define kOfxColourspaceOfxSceneLinearIsDisplay false
+
+/** @brief ofx_scene_log
+Any scene-referred colourspace with a log transfer function.
+*/
+#define kOfxColourspaceOfxSceneLog "ofx_scene_log"
+#define kOfxColourspaceOfxSceneLogLabel "OFX generic scene log"
+#define kOfxColourspaceOfxSceneLogEncoding "log"
+#define kOfxColourspaceOfxSceneLogIsData false
+#define kOfxColourspaceOfxSceneLogIsBasic true
+#define kOfxColourspaceOfxSceneLogIsCore true
+#define kOfxColourspaceOfxSceneLogIsDisplay false
+
+// Core Colourspaces
+
+// srgb_display
+// Convert CIE XYZ (D65 white) to sRGB (piecewise EOTF)
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.RGBmonitor_100nits_dim.a1.0.3
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.RGBmonitor_100nits_dim.a1.0.3
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.RGBmonitor_D60sim_100nits_dim.a1.0.3
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.RGBmonitor_D60sim_100nits_dim.a1.0.3
+#define kOfxColourspaceSrgbDisplay "srgb_display"
+#define kOfxColourspaceSrgbDisplayLabel "sRGB - Display"
+#define kOfxColourspaceSrgbDisplayEncoding "sdr-video"
+#define kOfxColourspaceSrgbDisplayIsData false
+#define kOfxColourspaceSrgbDisplayIsBasic false
+#define kOfxColourspaceSrgbDisplayIsCore true
+#define kOfxColourspaceSrgbDisplayIsDisplay true
+
+// displayp3_display
+// Convert CIE XYZ (D65 white) to Apple Display P3
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.DisplayP3_dim.a1.0.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.DisplayP3_dim.a1.0.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.DisplayP3_D60sim_dim.a1.0.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.DisplayP3_D60sim_dim.a1.0.0
+#define kOfxColourspaceDisplayp3Display "displayp3_display"
+#define kOfxColourspaceDisplayp3DisplayLabel "Display P3 - Display"
+#define kOfxColourspaceDisplayp3DisplayEncoding "sdr-video"
+#define kOfxColourspaceDisplayp3DisplayIsData false
+#define kOfxColourspaceDisplayp3DisplayIsBasic false
+#define kOfxColourspaceDisplayp3DisplayIsCore true
+#define kOfxColourspaceDisplayp3DisplayIsDisplay true
+
+// rec1886_rec709_display
+// Convert CIE XYZ (D65 white) to Rec.1886/Rec.709 (HD video)
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec709_100nits_dim.a1.0.3
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.Rec709_100nits_dim.a1.0.3
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec709_D60sim_100nits_dim.a1.0.3
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.Rec709_D60sim_100nits_dim.a1.0.3
+#define kOfxColourspaceRec1886Rec709Display "rec1886_rec709_display"
+#define kOfxColourspaceRec1886Rec709DisplayLabel "Rec.1886 Rec.709 - Display"
+#define kOfxColourspaceRec1886Rec709DisplayEncoding "sdr-video"
+#define kOfxColourspaceRec1886Rec709DisplayIsData false
+#define kOfxColourspaceRec1886Rec709DisplayIsBasic false
+#define kOfxColourspaceRec1886Rec709DisplayIsCore true
+#define kOfxColourspaceRec1886Rec709DisplayIsDisplay true
+
+// rec1886_rec2020_display
+// Convert CIE XYZ (D65 white) to Rec.1886/Rec.2020 (UHD video)
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec2020_100nits_dim.a1.0.3
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.Rec2020_100nits_dim.a1.0.3
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec2020_P3D65limited_100nits_dim.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec2020_Rec709limited_100nits_dim.a1.1.0
+#define kOfxColourspaceRec1886Rec2020Display "rec1886_rec2020_display"
+#define kOfxColourspaceRec1886Rec2020DisplayLabel "Rec.1886 Rec.2020 - Display"
+#define kOfxColourspaceRec1886Rec2020DisplayEncoding "sdr-video"
+#define kOfxColourspaceRec1886Rec2020DisplayIsData false
+#define kOfxColourspaceRec1886Rec2020DisplayIsBasic false
+#define kOfxColourspaceRec1886Rec2020DisplayIsCore true
+#define kOfxColourspaceRec1886Rec2020DisplayIsDisplay true
+
+// rec2100_hlg_display
+// Convert CIE XYZ (D65 white) to Rec.2100-HLG, 1000 nit
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_1000nits_15nits_HLG.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.Rec2020_1000nits_15nits_HLG.a1.1.0
+#define kOfxColourspaceRec2100HlgDisplay "rec2100_hlg_display"
+#define kOfxColourspaceRec2100HlgDisplayLabel "Rec.2100-HLG - Display"
+#define kOfxColourspaceRec2100HlgDisplayEncoding "hdr-video"
+#define kOfxColourspaceRec2100HlgDisplayIsData false
+#define kOfxColourspaceRec2100HlgDisplayIsBasic false
+#define kOfxColourspaceRec2100HlgDisplayIsCore true
+#define kOfxColourspaceRec2100HlgDisplayIsDisplay true
+
+// rec2100_pq_display
+// Convert CIE XYZ (D65 white) to Rec.2100-PQ
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_1000nits_15nits_ST2084.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.Rec2020_1000nits_15nits_ST2084.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_2000nits_15nits_ST2084.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.Rec2020_2000nits_15nits_ST2084.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_4000nits_15nits_ST2084.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.Rec2020_4000nits_15nits_ST2084.a1.1.0
+#define kOfxColourspaceRec2100PqDisplay "rec2100_pq_display"
+#define kOfxColourspaceRec2100PqDisplayLabel "Rec.2100-PQ - Display"
+#define kOfxColourspaceRec2100PqDisplayEncoding "hdr-video"
+#define kOfxColourspaceRec2100PqDisplayIsData false
+#define kOfxColourspaceRec2100PqDisplayIsBasic false
+#define kOfxColourspaceRec2100PqDisplayIsCore true
+#define kOfxColourspaceRec2100PqDisplayIsDisplay true
+
+// st2084_p3d65_display
+// Convert CIE XYZ (D65 white) to ST-2084 (PQ), P3-D65 primaries
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_1000nits_15nits_ST2084.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.P3D65_1000nits_15nits_ST2084.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_2000nits_15nits_ST2084.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.P3D65_2000nits_15nits_ST2084.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_4000nits_15nits_ST2084.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.P3D65_4000nits_15nits_ST2084.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_108nits_7point2nits_ST2084.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.P3D65_108nits_7point2nits_ST2084.a1.1.0
+#define kOfxColourspaceSt2084P3d65Display "st2084_p3d65_display"
+#define kOfxColourspaceSt2084P3d65DisplayLabel "ST2084-P3-D65 - Display"
+#define kOfxColourspaceSt2084P3d65DisplayEncoding "hdr-video"
+#define kOfxColourspaceSt2084P3d65DisplayIsData false
+#define kOfxColourspaceSt2084P3d65DisplayIsBasic false
+#define kOfxColourspaceSt2084P3d65DisplayIsCore true
+#define kOfxColourspaceSt2084P3d65DisplayIsDisplay true
+
+// p3d65_display
+// Convert CIE XYZ (D65 white) to Gamma 2.6, P3-D65
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D65_48nits.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.P3D65_48nits.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D65_Rec709limited_48nits.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D65_D60sim_48nits.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.P3D65_D60sim_48nits.a1.1.0
+#define kOfxColourspaceP3d65Display "p3d65_display"
+#define kOfxColourspaceP3d65DisplayLabel "P3-D65 - Display"
+#define kOfxColourspaceP3d65DisplayEncoding "sdr-video"
+#define kOfxColourspaceP3d65DisplayIsData false
+#define kOfxColourspaceP3d65DisplayIsBasic false
+#define kOfxColourspaceP3d65DisplayIsCore true
+#define kOfxColourspaceP3d65DisplayIsDisplay true
+
+// ACES2065-1
+// The "Academy Color Encoding System" reference colorspace.
+#define kOfxColourspaceACES20651 "ACES2065-1"
+#define kOfxColourspaceACES20651Label "ACES2065-1"
+#define kOfxColourspaceACES20651Encoding "scene-linear"
+#define kOfxColourspaceACES20651IsData false
+#define kOfxColourspaceACES20651IsBasic false
+#define kOfxColourspaceACES20651IsCore true
+#define kOfxColourspaceACES20651IsDisplay false
+
+// ACEScc
+// Convert ACEScc to ACES2065-1
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACEScc_to_ACES.a1.0.3
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_ACEScc.a1.0.3
+#define kOfxColourspaceACEScc "ACEScc"
+#define kOfxColourspaceACESccLabel "ACEScc"
+#define kOfxColourspaceACESccEncoding "log"
+#define kOfxColourspaceACESccIsData false
+#define kOfxColourspaceACESccIsBasic false
+#define kOfxColourspaceACESccIsCore true
+#define kOfxColourspaceACESccIsDisplay false
+
+// ACEScct
+// Convert ACEScct to ACES2065-1
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACEScct_to_ACES.a1.0.3
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_ACEScct.a1.0.3
+#define kOfxColourspaceACEScct "ACEScct"
+#define kOfxColourspaceACEScctLabel "ACEScct"
+#define kOfxColourspaceACEScctEncoding "log"
+#define kOfxColourspaceACEScctIsData false
+#define kOfxColourspaceACEScctIsBasic false
+#define kOfxColourspaceACEScctIsCore true
+#define kOfxColourspaceACEScctIsDisplay false
+
+// ACEScg
+// Convert ACEScg to ACES2065-1
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACEScg_to_ACES.a1.0.3
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_ACEScg.a1.0.3
+#define kOfxColourspaceACEScg "ACEScg"
+#define kOfxColourspaceACEScgLabel "ACEScg"
+#define kOfxColourspaceACEScgEncoding "scene-linear"
+#define kOfxColourspaceACEScgIsData false
+#define kOfxColourspaceACEScgIsBasic false
+#define kOfxColourspaceACEScgIsCore true
+#define kOfxColourspaceACEScgIsDisplay false
+
+// lin_p3d65
+// Convert ACES2065-1 to linear P3 primaries, D65 white point
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_P3-D65:1.0
+#define kOfxColourspaceLinP3d65 "lin_p3d65"
+#define kOfxColourspaceLinP3d65Label "Linear P3-D65"
+#define kOfxColourspaceLinP3d65Encoding "scene-linear"
+#define kOfxColourspaceLinP3d65IsData false
+#define kOfxColourspaceLinP3d65IsBasic false
+#define kOfxColourspaceLinP3d65IsCore true
+#define kOfxColourspaceLinP3d65IsDisplay false
+
+// lin_rec2020
+// Convert ACES2065-1 to linear Rec.2020 primaries, D65 white point
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_Rec2020:1.0
+#define kOfxColourspaceLinRec2020 "lin_rec2020"
+#define kOfxColourspaceLinRec2020Label "Linear Rec.2020"
+#define kOfxColourspaceLinRec2020Encoding "scene-linear"
+#define kOfxColourspaceLinRec2020IsData false
+#define kOfxColourspaceLinRec2020IsBasic false
+#define kOfxColourspaceLinRec2020IsCore true
+#define kOfxColourspaceLinRec2020IsDisplay false
+
+// lin_rec709_srgb
+// Convert ACES2065-1 to linear Rec.709 primaries, D65 white point
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_Rec709:1.0
+#define kOfxColourspaceLinRec709Srgb "lin_rec709_srgb"
+#define kOfxColourspaceLinRec709SrgbLabel "Linear Rec.709 (sRGB)"
+#define kOfxColourspaceLinRec709SrgbEncoding "scene-linear"
+#define kOfxColourspaceLinRec709SrgbIsData false
+#define kOfxColourspaceLinRec709SrgbIsBasic false
+#define kOfxColourspaceLinRec709SrgbIsCore true
+#define kOfxColourspaceLinRec709SrgbIsDisplay false
+
+// g18_rec709_tx
+// Convert ACES2065-1 to 1.8 gamma-corrected Rec.709 primaries, D65 white point
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma1.8_Rec709-Texture:1.0
+#define kOfxColourspaceG18Rec709Tx "g18_rec709_tx"
+#define kOfxColourspaceG18Rec709TxLabel "Gamma 1.8 Rec.709 - Texture"
+#define kOfxColourspaceG18Rec709TxEncoding "sdr-video"
+#define kOfxColourspaceG18Rec709TxIsData false
+#define kOfxColourspaceG18Rec709TxIsBasic false
+#define kOfxColourspaceG18Rec709TxIsCore true
+#define kOfxColourspaceG18Rec709TxIsDisplay false
+
+// g22_ap1_tx
+// Convert ACES2065-1 to 2.2 gamma-corrected AP1 primaries, ACES ~=D60 white point
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.2_AP1-Texture:1.0
+#define kOfxColourspaceG22Ap1Tx "g22_ap1_tx"
+#define kOfxColourspaceG22Ap1TxLabel "Gamma 2.2 AP1 - Texture"
+#define kOfxColourspaceG22Ap1TxEncoding "sdr-video"
+#define kOfxColourspaceG22Ap1TxIsData false
+#define kOfxColourspaceG22Ap1TxIsBasic false
+#define kOfxColourspaceG22Ap1TxIsCore true
+#define kOfxColourspaceG22Ap1TxIsDisplay false
+
+// g22_rec709_tx
+// Convert ACES2065-1 to 2.2 gamma-corrected Rec.709 primaries, D65 white point
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.2_Rec709-Texture:1.0
+#define kOfxColourspaceG22Rec709Tx "g22_rec709_tx"
+#define kOfxColourspaceG22Rec709TxLabel "Gamma 2.2 Rec.709 - Texture"
+#define kOfxColourspaceG22Rec709TxEncoding "sdr-video"
+#define kOfxColourspaceG22Rec709TxIsData false
+#define kOfxColourspaceG22Rec709TxIsBasic false
+#define kOfxColourspaceG22Rec709TxIsCore true
+#define kOfxColourspaceG22Rec709TxIsDisplay false
+
+// g24_rec709_tx
+// Convert ACES2065-1 to 2.4 gamma-corrected Rec.709 primaries, D65 white point
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.4_Rec709-Texture:1.0
+#define kOfxColourspaceG24Rec709Tx "g24_rec709_tx"
+#define kOfxColourspaceG24Rec709TxLabel "Gamma 2.4 Rec.709 - Texture"
+#define kOfxColourspaceG24Rec709TxEncoding "sdr-video"
+#define kOfxColourspaceG24Rec709TxIsData false
+#define kOfxColourspaceG24Rec709TxIsBasic false
+#define kOfxColourspaceG24Rec709TxIsCore true
+#define kOfxColourspaceG24Rec709TxIsDisplay false
+
+// srgb_encoded_ap1_tx
+// Convert ACES2065-1 to sRGB Encoded AP1 primaries, ACES ~=D60 white point
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB_Encoded_AP1-Texture:1.0
+#define kOfxColourspaceSrgbEncodedAp1Tx "srgb_encoded_ap1_tx"
+#define kOfxColourspaceSrgbEncodedAp1TxLabel "sRGB Encoded AP1 - Texture"
+#define kOfxColourspaceSrgbEncodedAp1TxEncoding "sdr-video"
+#define kOfxColourspaceSrgbEncodedAp1TxIsData false
+#define kOfxColourspaceSrgbEncodedAp1TxIsBasic false
+#define kOfxColourspaceSrgbEncodedAp1TxIsCore true
+#define kOfxColourspaceSrgbEncodedAp1TxIsDisplay false
+
+// srgb_tx
+// Convert ACES2065-1 to sRGB
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB-Texture:1.0
+#define kOfxColourspaceSrgbTx "srgb_tx"
+#define kOfxColourspaceSrgbTxLabel "sRGB - Texture"
+#define kOfxColourspaceSrgbTxEncoding "sdr-video"
+#define kOfxColourspaceSrgbTxIsData false
+#define kOfxColourspaceSrgbTxIsBasic false
+#define kOfxColourspaceSrgbTxIsCore true
+#define kOfxColourspaceSrgbTxIsDisplay false
+
+// Raw
+// The utility "Raw" colorspace.
+#define kOfxColourspaceRaw "Raw"
+#define kOfxColourspaceRawLabel "Raw"
+#define kOfxColourspaceRawEncoding ""
+#define kOfxColourspaceRawIsData true
+#define kOfxColourspaceRawIsBasic false
+#define kOfxColourspaceRawIsCore true
+#define kOfxColourspaceRawIsDisplay false
+
+// Non-core Colourspaces
+
+// CIE-XYZ-D65
+// The "CIE XYZ (D65)" display connection colorspace.
+#define kOfxColourspaceCIEXYZD65 "CIE-XYZ-D65"
+#define kOfxColourspaceCIEXYZD65Label "CIE-XYZ-D65"
+#define kOfxColourspaceCIEXYZD65Encoding ""
+#define kOfxColourspaceCIEXYZD65IsData false
+#define kOfxColourspaceCIEXYZD65IsBasic false
+#define kOfxColourspaceCIEXYZD65IsCore false
+#define kOfxColourspaceCIEXYZD65IsDisplay true
+
+// p3d60_display
+// Convert CIE XYZ (D65 white) to Gamma 2.6, P3-D60 (Bradford adaptation)
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D60_48nits.a1.0.3
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.P3D60_48nits.a1.0.3
+#define kOfxColourspaceP3d60Display "p3d60_display"
+#define kOfxColourspaceP3d60DisplayLabel "P3-D60 - Display"
+#define kOfxColourspaceP3d60DisplayEncoding "sdr-video"
+#define kOfxColourspaceP3d60DisplayIsData false
+#define kOfxColourspaceP3d60DisplayIsBasic false
+#define kOfxColourspaceP3d60DisplayIsCore false
+#define kOfxColourspaceP3d60DisplayIsDisplay true
+
+// p3_dci_display
+// Convert CIE XYZ (D65 white) to Gamma 2.6, P3-DCI (DCI white with Bradford adaptation)
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3DCI_48nits.a1.0.3
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.P3DCI_48nits.a1.0.3
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3DCI_D65sim_48nits.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.P3DCI_D65sim_48nits.a1.1.0
+#define kOfxColourspaceP3DciDisplay "p3_dci_display"
+#define kOfxColourspaceP3DciDisplayLabel "P3-DCI - Display"
+#define kOfxColourspaceP3DciDisplayEncoding "sdr-video"
+#define kOfxColourspaceP3DciDisplayIsData false
+#define kOfxColourspaceP3DciDisplayIsBasic false
+#define kOfxColourspaceP3DciDisplayIsCore false
+#define kOfxColourspaceP3DciDisplayIsDisplay true
+
+// ADX10
+// Convert ADX10 to ACES2065-1
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ADX10_to_ACES.a1.0.3
+#define kOfxColourspaceADX10 "ADX10"
+#define kOfxColourspaceADX10Label "ADX10"
+#define kOfxColourspaceADX10Encoding "log"
+#define kOfxColourspaceADX10IsData false
+#define kOfxColourspaceADX10IsBasic false
+#define kOfxColourspaceADX10IsCore false
+#define kOfxColourspaceADX10IsDisplay false
+
+// ADX16
+// Convert ADX16 to ACES2065-1
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ADX16_to_ACES.a1.0.3
+#define kOfxColourspaceADX16 "ADX16"
+#define kOfxColourspaceADX16Label "ADX16"
+#define kOfxColourspaceADX16Encoding "log"
+#define kOfxColourspaceADX16IsData false
+#define kOfxColourspaceADX16IsBasic false
+#define kOfxColourspaceADX16IsCore false
+#define kOfxColourspaceADX16IsDisplay false
+
+// lin_arri_wide_gamut_3
+// Convert Linear ARRI Wide Gamut 3 to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:ARRI:Input:Linear_ARRI_Wide_Gamut_3_to_ACES2065-1:1.0
+#define kOfxColourspaceLinArriWideGamut3 "lin_arri_wide_gamut_3"
+#define kOfxColourspaceLinArriWideGamut3Label "Linear ARRI Wide Gamut 3"
+#define kOfxColourspaceLinArriWideGamut3Encoding "scene-linear"
+#define kOfxColourspaceLinArriWideGamut3IsData false
+#define kOfxColourspaceLinArriWideGamut3IsBasic false
+#define kOfxColourspaceLinArriWideGamut3IsCore false
+#define kOfxColourspaceLinArriWideGamut3IsDisplay false
+
+// arri_logc3_ei800
+// Convert ARRI LogC3 (EI800) to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:ARRI:Input:ARRI_LogC3_EI800_to_ACES2065-1:1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-logC-EI800.a1.v2
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_LogC_EI800_AWG.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.LogC_EI800_AWG_to_ACES.a1.1.0
+#define kOfxColourspaceArriLogc3Ei800 "arri_logc3_ei800"
+#define kOfxColourspaceArriLogc3Ei800Label "ARRI LogC3 (EI800)"
+#define kOfxColourspaceArriLogc3Ei800Encoding "log"
+#define kOfxColourspaceArriLogc3Ei800IsData false
+#define kOfxColourspaceArriLogc3Ei800IsBasic false
+#define kOfxColourspaceArriLogc3Ei800IsCore false
+#define kOfxColourspaceArriLogc3Ei800IsDisplay false
+
+// lin_arri_wide_gamut_4
+// Convert Linear ARRI Wide Gamut 4 to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:ARRI:Input:Linear_ARRI_Wide_Gamut_4_to_ACES2065-1:1.0
+#define kOfxColourspaceLinArriWideGamut4 "lin_arri_wide_gamut_4"
+#define kOfxColourspaceLinArriWideGamut4Label "Linear ARRI Wide Gamut 4"
+#define kOfxColourspaceLinArriWideGamut4Encoding "scene-linear"
+#define kOfxColourspaceLinArriWideGamut4IsData false
+#define kOfxColourspaceLinArriWideGamut4IsBasic false
+#define kOfxColourspaceLinArriWideGamut4IsCore false
+#define kOfxColourspaceLinArriWideGamut4IsDisplay false
+
+// arri_logc4
+// Convert ARRI LogC4 to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:ARRI:Input:ARRI_LogC4_to_ACES2065-1:1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.ARRI.ARRI-LogC4.a1.v1
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.LogC4_to_ACES.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_LogC4.a1.1.0
+#define kOfxColourspaceArriLogc4 "arri_logc4"
+#define kOfxColourspaceArriLogc4Label "ARRI LogC4"
+#define kOfxColourspaceArriLogc4Encoding "log"
+#define kOfxColourspaceArriLogc4IsData false
+#define kOfxColourspaceArriLogc4IsBasic false
+#define kOfxColourspaceArriLogc4IsCore false
+#define kOfxColourspaceArriLogc4IsDisplay false
+
+// bmdfilm_widegamut_gen5
+// Convert Blackmagic Film Wide Gamut (Gen 5) to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:BMDFilm_WideGamut_Gen5_to_ACES2065-1:1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.BlackmagicDesign.BMDFilm_WideGamut_Gen5.a1.v1
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_BMDFilm_WideGamut_Gen5.a1.v1
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.BMDFilm_WideGamut_Gen5_to_ACES.a1.v1
+#define kOfxColourspaceBmdfilmWidegamutGen5 "bmdfilm_widegamut_gen5"
+#define kOfxColourspaceBmdfilmWidegamutGen5Label "BMDFilm WideGamut Gen5"
+#define kOfxColourspaceBmdfilmWidegamutGen5Encoding "log"
+#define kOfxColourspaceBmdfilmWidegamutGen5IsData false
+#define kOfxColourspaceBmdfilmWidegamutGen5IsBasic false
+#define kOfxColourspaceBmdfilmWidegamutGen5IsCore false
+#define kOfxColourspaceBmdfilmWidegamutGen5IsDisplay false
+
+// davinci_intermediate_widegamut
+// Convert DaVinci Intermediate Wide Gamut to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:DaVinci_Intermediate_WideGamut_to_ACES2065-1:1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.DaVinci_Intermediate_WideGamut_to_ACES.a1.v1
+#define kOfxColourspaceDavinciIntermediateWidegamut "davinci_intermediate_widegamut"
+#define kOfxColourspaceDavinciIntermediateWidegamutLabel "DaVinci Intermediate WideGamut"
+#define kOfxColourspaceDavinciIntermediateWidegamutEncoding "log"
+#define kOfxColourspaceDavinciIntermediateWidegamutIsData false
+#define kOfxColourspaceDavinciIntermediateWidegamutIsBasic false
+#define kOfxColourspaceDavinciIntermediateWidegamutIsCore false
+#define kOfxColourspaceDavinciIntermediateWidegamutIsDisplay false
+
+// lin_bmd_widegamut_gen5
+// Convert Linear Blackmagic Wide Gamut (Gen 5) to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:Linear_BMD_WideGamut_Gen5_to_ACES2065-1:1.0
+#define kOfxColourspaceLinBmdWidegamutGen5 "lin_bmd_widegamut_gen5"
+#define kOfxColourspaceLinBmdWidegamutGen5Label "Linear BMD WideGamut Gen5"
+#define kOfxColourspaceLinBmdWidegamutGen5Encoding "scene-linear"
+#define kOfxColourspaceLinBmdWidegamutGen5IsData false
+#define kOfxColourspaceLinBmdWidegamutGen5IsBasic false
+#define kOfxColourspaceLinBmdWidegamutGen5IsCore false
+#define kOfxColourspaceLinBmdWidegamutGen5IsDisplay false
+
+// lin_davinci_widegamut
+// Convert Linear DaVinci Wide Gamut to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:Linear_DaVinci_WideGamut_to_ACES2065-1:1.0
+#define kOfxColourspaceLinDavinciWidegamut "lin_davinci_widegamut"
+#define kOfxColourspaceLinDavinciWidegamutLabel "Linear DaVinci WideGamut"
+#define kOfxColourspaceLinDavinciWidegamutEncoding "scene-linear"
+#define kOfxColourspaceLinDavinciWidegamutIsData false
+#define kOfxColourspaceLinDavinciWidegamutIsBasic false
+#define kOfxColourspaceLinDavinciWidegamutIsCore false
+#define kOfxColourspaceLinDavinciWidegamutIsDisplay false
+
+// canonlog2_cinemagamut_d55
+// Convert Canon Log 2 Cinema Gamut (Daylight) to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:Canon:Input:CanonLog2_CinemaGamut-D55_to_ACES2065-1:1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.CLog2_CGamut_to_ACES.a1.1.0
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_CLog2_CGamut.a1.1.0
+#define kOfxColourspaceCanonlog2CinemagamutD55 "canonlog2_cinemagamut_d55"
+#define kOfxColourspaceCanonlog2CinemagamutD55Label "CanonLog2 CinemaGamut D55"
+#define kOfxColourspaceCanonlog2CinemagamutD55Encoding "log"
+#define kOfxColourspaceCanonlog2CinemagamutD55IsData false
+#define kOfxColourspaceCanonlog2CinemagamutD55IsBasic false
+#define kOfxColourspaceCanonlog2CinemagamutD55IsCore false
+#define kOfxColourspaceCanonlog2CinemagamutD55IsDisplay false
+
+// canonlog3_cinemagamut_d55
+// Convert Canon Log 3 Cinema Gamut (Daylight) to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:Canon:Input:CanonLog3_CinemaGamut-D55_to_ACES2065-1:1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.CLog3_CGamut_to_ACES.a1.1.0
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_CLog3_CGamut.a1.1.0
+#define kOfxColourspaceCanonlog3CinemagamutD55 "canonlog3_cinemagamut_d55"
+#define kOfxColourspaceCanonlog3CinemagamutD55Label "CanonLog3 CinemaGamut D55"
+#define kOfxColourspaceCanonlog3CinemagamutD55Encoding "log"
+#define kOfxColourspaceCanonlog3CinemagamutD55IsData false
+#define kOfxColourspaceCanonlog3CinemagamutD55IsBasic false
+#define kOfxColourspaceCanonlog3CinemagamutD55IsCore false
+#define kOfxColourspaceCanonlog3CinemagamutD55IsDisplay false
+
+// lin_cinemagamut_d55
+// Convert Linear Canon Cinema Gamut (Daylight) to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:Canon:Input:Linear-CinemaGamut-D55_to_ACES2065-1:1.0
+#define kOfxColourspaceLinCinemagamutD55 "lin_cinemagamut_d55"
+#define kOfxColourspaceLinCinemagamutD55Label "Linear CinemaGamut D55"
+#define kOfxColourspaceLinCinemagamutD55Encoding "scene-linear"
+#define kOfxColourspaceLinCinemagamutD55IsData false
+#define kOfxColourspaceLinCinemagamutD55IsBasic false
+#define kOfxColourspaceLinCinemagamutD55IsCore false
+#define kOfxColourspaceLinCinemagamutD55IsDisplay false
+
+// lin_vgamut
+// Convert Linear Panasonic V-Gamut to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:Panasonic:Input:Linear_VGamut_to_ACES2065-1:1.0
+#define kOfxColourspaceLinVgamut "lin_vgamut"
+#define kOfxColourspaceLinVgamutLabel "Linear V-Gamut"
+#define kOfxColourspaceLinVgamutEncoding "scene-linear"
+#define kOfxColourspaceLinVgamutIsData false
+#define kOfxColourspaceLinVgamutIsBasic false
+#define kOfxColourspaceLinVgamutIsCore false
+#define kOfxColourspaceLinVgamutIsDisplay false
+
+// vlog_vgamut
+// Convert Panasonic V-Log - V-Gamut to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:Panasonic:Input:VLog_VGamut_to_ACES2065-1:1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.VLog_VGamut_to_ACES.a1.1.0
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_VLog_VGamut.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.Panasonic.VLog_VGamut.a1.v1
+#define kOfxColourspaceVlogVgamut "vlog_vgamut"
+#define kOfxColourspaceVlogVgamutLabel "V-Log V-Gamut"
+#define kOfxColourspaceVlogVgamutEncoding "log"
+#define kOfxColourspaceVlogVgamutIsData false
+#define kOfxColourspaceVlogVgamutIsBasic false
+#define kOfxColourspaceVlogVgamutIsCore false
+#define kOfxColourspaceVlogVgamutIsDisplay false
+
+// lin_redwidegamutrgb
+// Convert Linear REDWideGamutRGB to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:RED:Input:Linear_REDWideGamutRGB_to_ACES2065-1:1.0
+#define kOfxColourspaceLinRedwidegamutrgb "lin_redwidegamutrgb"
+#define kOfxColourspaceLinRedwidegamutrgbLabel "Linear REDWideGamutRGB"
+#define kOfxColourspaceLinRedwidegamutrgbEncoding "scene-linear"
+#define kOfxColourspaceLinRedwidegamutrgbIsData false
+#define kOfxColourspaceLinRedwidegamutrgbIsBasic false
+#define kOfxColourspaceLinRedwidegamutrgbIsCore false
+#define kOfxColourspaceLinRedwidegamutrgbIsDisplay false
+
+// log3g10_redwidegamutrgb
+// Convert RED Log3G10 REDWideGamutRGB to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:RED:Input:Log3G10_REDWideGamutRGB_to_ACES2065-1:1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.RED.Log3G10_REDWideGamutRGB.a1.v1
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_Log3G10_RWG.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.Log3G10_RWG_to_ACES.a1.1.0
+#define kOfxColourspaceLog3g10Redwidegamutrgb "log3g10_redwidegamutrgb"
+#define kOfxColourspaceLog3g10RedwidegamutrgbLabel "Log3G10 REDWideGamutRGB"
+#define kOfxColourspaceLog3g10RedwidegamutrgbEncoding "log"
+#define kOfxColourspaceLog3g10RedwidegamutrgbIsData false
+#define kOfxColourspaceLog3g10RedwidegamutrgbIsBasic false
+#define kOfxColourspaceLog3g10RedwidegamutrgbIsCore false
+#define kOfxColourspaceLog3g10RedwidegamutrgbIsDisplay false
+
+// lin_sgamut3
+// Convert Linear S-Gamut3 to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:Sony:Input:Linear_SGamut3_to_ACES2065-1:1.0
+#define kOfxColourspaceLinSgamut3 "lin_sgamut3"
+#define kOfxColourspaceLinSgamut3Label "Linear S-Gamut3"
+#define kOfxColourspaceLinSgamut3Encoding "scene-linear"
+#define kOfxColourspaceLinSgamut3IsData false
+#define kOfxColourspaceLinSgamut3IsBasic false
+#define kOfxColourspaceLinSgamut3IsCore false
+#define kOfxColourspaceLinSgamut3IsDisplay false
+
+// lin_sgamut3cine
+// Convert Linear S-Gamut3.Cine to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:Sony:Input:Linear_SGamut3Cine_to_ACES2065-1:1.0
+#define kOfxColourspaceLinSgamut3cine "lin_sgamut3cine"
+#define kOfxColourspaceLinSgamut3cineLabel "Linear S-Gamut3.Cine"
+#define kOfxColourspaceLinSgamut3cineEncoding "scene-linear"
+#define kOfxColourspaceLinSgamut3cineIsData false
+#define kOfxColourspaceLinSgamut3cineIsBasic false
+#define kOfxColourspaceLinSgamut3cineIsCore false
+#define kOfxColourspaceLinSgamut3cineIsDisplay false
+
+// lin_venice_sgamut3
+// Convert Linear Venice S-Gamut3 to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:Sony:Input:Linear_Venice_SGamut3_to_ACES2065-1:1.0
+#define kOfxColourspaceLinVeniceSgamut3 "lin_venice_sgamut3"
+#define kOfxColourspaceLinVeniceSgamut3Label "Linear Venice S-Gamut3"
+#define kOfxColourspaceLinVeniceSgamut3Encoding "scene-linear"
+#define kOfxColourspaceLinVeniceSgamut3IsData false
+#define kOfxColourspaceLinVeniceSgamut3IsBasic false
+#define kOfxColourspaceLinVeniceSgamut3IsCore false
+#define kOfxColourspaceLinVeniceSgamut3IsDisplay false
+
+// lin_venice_sgamut3cine
+// Convert Linear Venice S-Gamut3.Cine to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:Sony:Input:Linear_Venice_SGamut3Cine_to_ACES2065-1:1.0
+#define kOfxColourspaceLinVeniceSgamut3cine "lin_venice_sgamut3cine"
+#define kOfxColourspaceLinVeniceSgamut3cineLabel "Linear Venice S-Gamut3.Cine"
+#define kOfxColourspaceLinVeniceSgamut3cineEncoding "scene-linear"
+#define kOfxColourspaceLinVeniceSgamut3cineIsData false
+#define kOfxColourspaceLinVeniceSgamut3cineIsBasic false
+#define kOfxColourspaceLinVeniceSgamut3cineIsCore false
+#define kOfxColourspaceLinVeniceSgamut3cineIsDisplay false
+
+// slog3_sgamut3
+// Convert Sony S-Log3 S-Gamut3 to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3_SGamut3_to_ACES2065-1:1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog3_SGamut3.a1.v1
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_SLog3_SGamut3.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.SLog3_SGamut3_to_ACES.a1.1.0
+#define kOfxColourspaceSlog3Sgamut3 "slog3_sgamut3"
+#define kOfxColourspaceSlog3Sgamut3Label "S-Log3 S-Gamut3"
+#define kOfxColourspaceSlog3Sgamut3Encoding "log"
+#define kOfxColourspaceSlog3Sgamut3IsData false
+#define kOfxColourspaceSlog3Sgamut3IsBasic false
+#define kOfxColourspaceSlog3Sgamut3IsCore false
+#define kOfxColourspaceSlog3Sgamut3IsDisplay false
+
+// slog3_sgamut3cine
+// Convert Sony S-Log3 S-Gamut3.Cine to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3_SGamut3Cine_to_ACES2065-1:1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog3_SGamut3Cine.a1.v1
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_SLog3_SGamut3Cine.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.SLog3_SGamut3Cine_to_ACES.a1.1.0
+#define kOfxColourspaceSlog3Sgamut3cine "slog3_sgamut3cine"
+#define kOfxColourspaceSlog3Sgamut3cineLabel "S-Log3 S-Gamut3.Cine"
+#define kOfxColourspaceSlog3Sgamut3cineEncoding "log"
+#define kOfxColourspaceSlog3Sgamut3cineIsData false
+#define kOfxColourspaceSlog3Sgamut3cineIsBasic false
+#define kOfxColourspaceSlog3Sgamut3cineIsCore false
+#define kOfxColourspaceSlog3Sgamut3cineIsDisplay false
+
+// slog3_venice_sgamut3
+// Convert Sony S-Log3 Venice S-Gamut3 to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3_Venice_SGamut3_to_ACES2065-1:1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.Sony.Venice_SLog3_SGamut3.a1.v1
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_SLog3_Venice_SGamut3.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.SLog3_Venice_SGamut3_to_ACES.a1.1.0
+#define kOfxColourspaceSlog3VeniceSgamut3 "slog3_venice_sgamut3"
+#define kOfxColourspaceSlog3VeniceSgamut3Label "S-Log3 Venice S-Gamut3"
+#define kOfxColourspaceSlog3VeniceSgamut3Encoding "log"
+#define kOfxColourspaceSlog3VeniceSgamut3IsData false
+#define kOfxColourspaceSlog3VeniceSgamut3IsBasic false
+#define kOfxColourspaceSlog3VeniceSgamut3IsCore false
+#define kOfxColourspaceSlog3VeniceSgamut3IsDisplay false
+
+// slog3_venice_sgamut3cine
+// Convert Sony S-Log3 Venice S-Gamut3.Cine to ACES2065-1
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3_Venice_SGamut3Cine_to_ACES2065-1:1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.Sony.Venice_SLog3_SGamut3Cine.a1.v1
+// AMF Components
+// --------------
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_SLog3_Venice_SGamut3Cine.a1.1.0
+// ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.SLog3_Venice_SGamut3Cine_to_ACES.a1.1.0
+#define kOfxColourspaceSlog3VeniceSgamut3cine "slog3_venice_sgamut3cine"
+#define kOfxColourspaceSlog3VeniceSgamut3cineLabel "S-Log3 Venice S-Gamut3.Cine"
+#define kOfxColourspaceSlog3VeniceSgamut3cineEncoding "log"
+#define kOfxColourspaceSlog3VeniceSgamut3cineIsData false
+#define kOfxColourspaceSlog3VeniceSgamut3cineIsBasic false
+#define kOfxColourspaceSlog3VeniceSgamut3cineIsCore false
+#define kOfxColourspaceSlog3VeniceSgamut3cineIsDisplay false
+
+// camera_rec709
+// Convert ACES2065-1 to Rec.709 camera OETF Rec.709 primaries, D65 white point
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:ITU:Utility:AP0_to_Camera_Rec709:1.0
+#define kOfxColourspaceCameraRec709 "camera_rec709"
+#define kOfxColourspaceCameraRec709Label "Camera Rec.709"
+#define kOfxColourspaceCameraRec709Encoding "sdr-video"
+#define kOfxColourspaceCameraRec709IsData false
+#define kOfxColourspaceCameraRec709IsBasic false
+#define kOfxColourspaceCameraRec709IsCore false
+#define kOfxColourspaceCameraRec709IsDisplay false
+
+// srgb_encoded_p3d65_tx
+// Convert ACES2065-1 to sRGB Encoded P3-D65 primaries, D65 white point
+// CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB_Encoded_P3-D65-Texture:1.0
+#define kOfxColourspaceSrgbEncodedP3d65Tx "srgb_encoded_p3d65_tx"
+#define kOfxColourspaceSrgbEncodedP3d65TxLabel "sRGB Encoded P3-D65 - Texture"
+#define kOfxColourspaceSrgbEncodedP3d65TxEncoding "sdr-video"
+#define kOfxColourspaceSrgbEncodedP3d65TxIsData false
+#define kOfxColourspaceSrgbEncodedP3d65TxIsBasic false
+#define kOfxColourspaceSrgbEncodedP3d65TxIsCore false
+#define kOfxColourspaceSrgbEncodedP3d65TxIsDisplay false
+
+/** @brief Roles - standard names used for compatibility with common OCIO configs.
+*/
+
+/** @brief aces_interchange
+Guaranteed to be ACES2065-1.
+*/
+#define kOfxColourspaceRoleAcesInterchange "aces_interchange"
+
+/** @brief cie_xyz_d65_interchange
+CIE XYZ colorimetry with the neutral axis at D65.
+*/
+#define kOfxColourspaceRoleCieXyzD65Interchange "cie_xyz_d65_interchange"
+
+/** @brief color_picking
+The colourspace to use for colour pickers, typically a display colourspace.
+*/
+#define kOfxColourspaceRoleColorPicking "color_picking"
+
+/** @brief color_timing
+A colourspace suitable for colour grading, typically a log colourspace.
+*/
+#define kOfxColourspaceRoleColorTiming "color_timing"
+
+/** @brief compositing_log
+Any scene-referred colourspace with a log transfer function.
+*/
+#define kOfxColourspaceRoleCompositingLog "compositing_log"
+
+/** @brief data
+Image values should not be treated as colour, e.g. motion vectors or masks. Mapped to the raw colourspace.
+*/
+#define kOfxColourspaceRoleData "data"
+
+/** @brief matte_paint
+A colourspace suitable for matte painting.
+*/
+#define kOfxColourspaceRoleMattePaint "matte_paint"
+
+/** @brief scene_linear
+Any scene-referred linear colourspace.
+*/
+#define kOfxColourspaceRoleSceneLinear "scene_linear"
+
+/** @brief texture_paint
+A colourspace suitable for texture painting, typically sRGB.
+*/
+#define kOfxColourspaceRoleTexturePaint "texture_paint"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/include/ofx-native-v1.5_aces-v1.3_ocio-v2.3.ocio b/include/ofx-native-v1.5_aces-v1.3_ocio-v2.3.ocio
new file mode 100644
index 00000000..d071cf66
--- /dev/null
+++ b/include/ofx-native-v1.5_aces-v1.3_ocio-v2.3.ocio
@@ -0,0 +1,1549 @@
+ocio_profile_version: 2.3
+
+environment:
+ {}
+search_path: ""
+strictparsing: true
+luma: [0.2126, 0.7152, 0.0722]
+name: ofx-native-v1.5_aces-v1.3_ocio-v2.3
+description: |
+ OpenFX 1.5 Native Mode Config
+ Based on: Academy Color Encoding System - Studio Config [COLORSPACES v2.1.0] [ACES v1.3] [OCIO v2.3]
+ ------------------------------------------------------------------------------------------
+
+ This "OpenColorIO" config is geared toward studios requiring a config that includes a wide variety of camera colorspaces, displays and looks.
+
+roles:
+ aces_interchange: ACES2065-1
+ cie_xyz_d65_interchange: CIE-XYZ-D65
+ color_picking: sRGB - Texture
+ color_timing: ACEScct
+ compositing_log: ACEScct
+ data: Raw
+ matte_paint: ACEScct
+ scene_linear: ACEScg
+ texture_paint: sRGB - Texture
+
+file_rules:
+ - ! {name: Default, colorspace: ACES2065-1}
+
+shared_views:
+ - ! {name: ACES 1.0 - SDR Video, view_transform: ACES 1.0 - SDR Video, display_colorspace: }
+ - ! {name: ACES 1.0 - SDR Video (D60 sim on D65), view_transform: ACES 1.0 - SDR Video (D60 sim on D65), display_colorspace: }
+ - ! {name: ACES 1.1 - SDR Video (P3 lim), view_transform: ACES 1.1 - SDR Video (P3 lim), display_colorspace: }
+ - ! {name: ACES 1.1 - SDR Video (Rec.709 lim), view_transform: ACES 1.1 - SDR Video (Rec.709 lim), display_colorspace: }
+ - ! {name: "ACES 1.1 - HDR Video (1000 nits & Rec.2020 lim)", view_transform: "ACES 1.1 - HDR Video (1000 nits & Rec.2020 lim)", display_colorspace: }
+ - ! {name: "ACES 1.1 - HDR Video (2000 nits & Rec.2020 lim)", view_transform: "ACES 1.1 - HDR Video (2000 nits & Rec.2020 lim)", display_colorspace: }
+ - ! {name: "ACES 1.1 - HDR Video (4000 nits & Rec.2020 lim)", view_transform: "ACES 1.1 - HDR Video (4000 nits & Rec.2020 lim)", display_colorspace: }
+ - ! {name: "ACES 1.1 - HDR Video (1000 nits & P3 lim)", view_transform: "ACES 1.1 - HDR Video (1000 nits & P3 lim)", display_colorspace: }
+ - ! {name: "ACES 1.1 - HDR Video (2000 nits & P3 lim)", view_transform: "ACES 1.1 - HDR Video (2000 nits & P3 lim)", display_colorspace: }
+ - ! {name: "ACES 1.1 - HDR Video (4000 nits & P3 lim)", view_transform: "ACES 1.1 - HDR Video (4000 nits & P3 lim)", display_colorspace: }
+ - ! {name: ACES 1.0 - SDR Cinema, view_transform: ACES 1.0 - SDR Cinema, display_colorspace: }
+ - ! {name: ACES 1.1 - SDR Cinema (Rec.709 lim), view_transform: ACES 1.1 - SDR Cinema (Rec.709 lim), display_colorspace: }
+ - ! {name: ACES 1.0 - SDR Cinema (D60 sim on DCI), view_transform: ACES 1.0 - SDR Cinema (D60 sim on DCI), display_colorspace: }
+ - ! {name: ACES 1.1 - SDR Cinema (D60 sim on D65), view_transform: ACES 1.1 - SDR Cinema (D60 sim on D65), display_colorspace: }
+ - ! {name: ACES 1.1 - SDR Cinema (D65 sim on DCI), view_transform: ACES 1.1 - SDR Cinema (D65 sim on DCI), display_colorspace: }
+ - ! {name: "ACES 1.1 - HDR Cinema (108 nits & P3 lim)", view_transform: "ACES 1.1 - HDR Cinema (108 nits & P3 lim)", display_colorspace: }
+ - ! {name: Un-tone-mapped, view_transform: Un-tone-mapped, display_colorspace: }
+
+displays:
+ sRGB - Display:
+ - ! {name: Raw, colorspace: Raw}
+ - ! [ACES 1.0 - SDR Video, ACES 1.0 - SDR Video (D60 sim on D65), Un-tone-mapped]
+ Display P3 - Display:
+ - ! {name: Raw, colorspace: Raw}
+ - ! [ACES 1.0 - SDR Video, ACES 1.0 - SDR Video (D60 sim on D65), Un-tone-mapped]
+ Rec.1886 Rec.709 - Display:
+ - ! {name: Raw, colorspace: Raw}
+ - ! [ACES 1.0 - SDR Video, ACES 1.0 - SDR Video (D60 sim on D65), Un-tone-mapped]
+ Rec.1886 Rec.2020 - Display:
+ - ! {name: Raw, colorspace: Raw}
+ - ! [ACES 1.0 - SDR Video, ACES 1.1 - SDR Video (P3 lim), ACES 1.1 - SDR Video (Rec.709 lim), Un-tone-mapped]
+ Rec.2100-HLG - Display:
+ - ! {name: Raw, colorspace: Raw}
+ - ! ["ACES 1.1 - HDR Video (1000 nits & Rec.2020 lim)", Un-tone-mapped]
+ Rec.2100-PQ - Display:
+ - ! {name: Raw, colorspace: Raw}
+ - ! ["ACES 1.1 - HDR Video (1000 nits & Rec.2020 lim)", "ACES 1.1 - HDR Video (2000 nits & Rec.2020 lim)", "ACES 1.1 - HDR Video (4000 nits & Rec.2020 lim)", Un-tone-mapped]
+ ST2084-P3-D65 - Display:
+ - ! {name: Raw, colorspace: Raw}
+ - ! ["ACES 1.1 - HDR Video (1000 nits & P3 lim)", "ACES 1.1 - HDR Video (2000 nits & P3 lim)", "ACES 1.1 - HDR Video (4000 nits & P3 lim)", "ACES 1.1 - HDR Cinema (108 nits & P3 lim)", Un-tone-mapped]
+ P3-D60 - Display:
+ - ! {name: Raw, colorspace: Raw}
+ - ! [ACES 1.0 - SDR Cinema, Un-tone-mapped]
+ P3-D65 - Display:
+ - ! {name: Raw, colorspace: Raw}
+ - ! [ACES 1.0 - SDR Cinema, ACES 1.1 - SDR Cinema (Rec.709 lim), ACES 1.1 - SDR Cinema (D60 sim on D65), Un-tone-mapped]
+ P3-DCI - Display:
+ - ! {name: Raw, colorspace: Raw}
+ - ! [ACES 1.0 - SDR Cinema (D60 sim on DCI), ACES 1.1 - SDR Cinema (D65 sim on DCI), Un-tone-mapped]
+
+active_displays: [sRGB - Display, Display P3 - Display, Rec.1886 Rec.709 - Display, Rec.1886 Rec.2020 - Display, Rec.2100-HLG - Display, Rec.2100-PQ - Display, ST2084-P3-D65 - Display, P3-D60 - Display, P3-D65 - Display, P3-DCI - Display]
+active_views: [ACES 1.0 - SDR Video, ACES 1.0 - SDR Video (D60 sim on D65), ACES 1.1 - SDR Video (P3 lim), ACES 1.1 - SDR Video (Rec.709 lim), "ACES 1.1 - HDR Video (1000 nits & Rec.2020 lim)", "ACES 1.1 - HDR Video (2000 nits & Rec.2020 lim)", "ACES 1.1 - HDR Video (4000 nits & Rec.2020 lim)", "ACES 1.1 - HDR Video (1000 nits & P3 lim)", "ACES 1.1 - HDR Video (2000 nits & P3 lim)", "ACES 1.1 - HDR Video (4000 nits & P3 lim)", ACES 1.0 - SDR Cinema, ACES 1.1 - SDR Cinema (Rec.709 lim), ACES 1.0 - SDR Cinema (D60 sim on DCI), ACES 1.1 - SDR Cinema (D60 sim on D65), ACES 1.1 - SDR Cinema (D65 sim on DCI), "ACES 1.1 - HDR Cinema (108 nits & P3 lim)", Un-tone-mapped, Raw]
+
+looks:
+ - !
+ name: ACES 1.3 Reference Gamut Compression
+ process_space: ACES2065-1
+ description: |
+ LMT (applied in ACES2065-1) to compress scene-referred values from common cameras into the AP1 gamut
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:LMT.Academy.ReferenceGamutCompress.a1.v1.0
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvLMT.Academy.ReferenceGamutCompress.a1.v1.0
+ transform: ! {style: ACES-LMT - ACES 1.3 Reference Gamut Compression}
+
+
+default_view_transform: Un-tone-mapped
+
+view_transforms:
+ - !
+ name: ACES 1.0 - SDR Video
+ description: |
+ Component of ACES Output Transforms for SDR D65 video
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.RGBmonitor_100nits_dim.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.DisplayP3_dim.a1.0.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec709_100nits_dim.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec2020_100nits_dim.a1.0.3
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.RGBmonitor_100nits_dim.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.DisplayP3_dim.a1.0.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.Rec709_100nits_dim.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.Rec2020_100nits_dim.a1.0.3
+ from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-VIDEO_1.0}
+
+ - !
+ name: ACES 1.0 - SDR Video (D60 sim on D65)
+ description: |
+ Component of ACES Output Transforms for SDR D65 video simulating D60 white
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.RGBmonitor_D60sim_100nits_dim.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.DisplayP3_D60sim_dim.a1.0.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec709_D60sim_100nits_dim.a1.0.3
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.RGBmonitor_D60sim_100nits_dim.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.DisplayP3_D60sim_dim.a1.0.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.Rec709_D60sim_100nits_dim.a1.0.3
+ from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-VIDEO-D60sim-D65_1.0}
+
+ - !
+ name: ACES 1.1 - SDR Video (P3 lim)
+ description: |
+ Component of ACES Output Transforms for SDR D65 video
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec2020_P3D65limited_100nits_dim.a1.1.0
+ from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-VIDEO-P3lim_1.1}
+
+ - !
+ name: ACES 1.1 - SDR Video (Rec.709 lim)
+ description: |
+ Component of ACES Output Transforms for SDR D65 video
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec2020_Rec709limited_100nits_dim.a1.1.0
+ from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-VIDEO-REC709lim_1.1}
+
+ - !
+ name: "ACES 1.1 - HDR Video (1000 nits & Rec.2020 lim)"
+ description: |
+ Component of ACES Output Transforms for 1000 nit HDR D65 video
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_1000nits_15nits_HLG.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_1000nits_15nits_ST2084.a1.1.0
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.Rec2020_1000nits_15nits_HLG.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.Rec2020_1000nits_15nits_ST2084.a1.1.0
+ from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-VIDEO-1000nit-15nit-REC2020lim_1.1}
+
+ - !
+ name: "ACES 1.1 - HDR Video (2000 nits & Rec.2020 lim)"
+ description: |
+ Component of ACES Output Transforms for 2000 nit HDR D65 video
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_2000nits_15nits_ST2084.a1.1.0
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.Rec2020_2000nits_15nits_ST2084.a1.1.0
+ from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-VIDEO-2000nit-15nit-REC2020lim_1.1}
+
+ - !
+ name: "ACES 1.1 - HDR Video (4000 nits & Rec.2020 lim)"
+ description: |
+ Component of ACES Output Transforms for 4000 nit HDR D65 video
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_4000nits_15nits_ST2084.a1.1.0
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.Rec2020_4000nits_15nits_ST2084.a1.1.0
+ from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-VIDEO-4000nit-15nit-REC2020lim_1.1}
+
+ - !
+ name: "ACES 1.1 - HDR Video (1000 nits & P3 lim)"
+ description: |
+ Component of ACES Output Transforms for 1000 nit HDR D65 video
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_1000nits_15nits_ST2084.a1.1.0
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.P3D65_1000nits_15nits_ST2084.a1.1.0
+ from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-VIDEO-1000nit-15nit-P3lim_1.1}
+
+ - !
+ name: "ACES 1.1 - HDR Video (2000 nits & P3 lim)"
+ description: |
+ Component of ACES Output Transforms for 2000 nit HDR D65 video
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_2000nits_15nits_ST2084.a1.1.0
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.P3D65_2000nits_15nits_ST2084.a1.1.0
+ from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-VIDEO-2000nit-15nit-P3lim_1.1}
+
+ - !
+ name: "ACES 1.1 - HDR Video (4000 nits & P3 lim)"
+ description: |
+ Component of ACES Output Transforms for 4000 nit HDR D65 video
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_4000nits_15nits_ST2084.a1.1.0
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.P3D65_4000nits_15nits_ST2084.a1.1.0
+ from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-VIDEO-4000nit-15nit-P3lim_1.1}
+
+ - !
+ name: ACES 1.0 - SDR Cinema
+ description: |
+ Component of ACES Output Transforms for SDR cinema
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D60_48nits.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D65_48nits.a1.1.0
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.P3D60_48nits.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.P3D65_48nits.a1.1.0
+ from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-CINEMA_1.0}
+
+ - !
+ name: ACES 1.1 - SDR Cinema (Rec.709 lim)
+ description: |
+ Component of ACES Output Transforms for SDR cinema
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D65_Rec709limited_48nits.a1.1.0
+ from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-CINEMA-REC709lim_1.1}
+
+ - !
+ name: ACES 1.0 - SDR Cinema (D60 sim on DCI)
+ description: |
+ Component of ACES Output Transforms for SDR DCI cinema simulating D60 white
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3DCI_48nits.a1.0.3
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.P3DCI_48nits.a1.0.3
+ from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-CINEMA-D60sim-DCI_1.0}
+
+ - !
+ name: ACES 1.1 - SDR Cinema (D60 sim on D65)
+ description: |
+ Component of ACES Output Transforms for SDR D65 cinema simulating D60 white
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D65_D60sim_48nits.a1.1.0
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.P3D65_D60sim_48nits.a1.1.0
+ from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-CINEMA-D60sim-D65_1.1}
+
+ - !
+ name: ACES 1.1 - SDR Cinema (D65 sim on DCI)
+ description: |
+ Component of ACES Output Transforms for SDR DCI cinema simulating D65 white
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3DCI_D65sim_48nits.a1.1.0
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.P3DCI_D65sim_48nits.a1.1.0
+ from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-CINEMA-D65sim-DCI_1.1}
+
+ - !
+ name: "ACES 1.1 - HDR Cinema (108 nits & P3 lim)"
+ description: |
+ Component of ACES Output Transforms for 108 nit HDR D65 cinema
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_108nits_7point2nits_ST2084.a1.1.0
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.P3D65_108nits_7point2nits_ST2084.a1.1.0
+ from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - HDR-CINEMA-108nit-7.2nit-P3lim_1.1}
+
+ - !
+ name: Un-tone-mapped
+ from_scene_reference: ! {style: UTILITY - ACES-AP0_to_CIE-XYZ-D65_BFD}
+
+display_colorspaces:
+ - !
+ name: CIE-XYZ-D65
+ aliases: [cie_xyz_d65]
+ family: ""
+ equalitygroup: ""
+ bitdepth: 32f
+ description: The "CIE XYZ (D65)" display connection colorspace.
+ isdata: false
+ allocation: uniform
+
+ - !
+ name: sRGB - Display
+ aliases: [srgb_display]
+ family: Display
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert CIE XYZ (D65 white) to sRGB (piecewise EOTF)
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.RGBmonitor_100nits_dim.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.RGBmonitor_100nits_dim.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.RGBmonitor_D60sim_100nits_dim.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.RGBmonitor_D60sim_100nits_dim.a1.0.3
+ isdata: false
+ categories: [file-io]
+ encoding: sdr-video
+ allocation: uniform
+ from_display_reference: ! {style: DISPLAY - CIE-XYZ-D65_to_sRGB}
+
+ - !
+ name: Display P3 - Display
+ aliases: [displayp3_display]
+ family: Display
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert CIE XYZ (D65 white) to Apple Display P3
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.DisplayP3_dim.a1.0.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.DisplayP3_dim.a1.0.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.DisplayP3_D60sim_dim.a1.0.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.DisplayP3_D60sim_dim.a1.0.0
+ isdata: false
+ categories: [file-io]
+ encoding: sdr-video
+ allocation: uniform
+ from_display_reference: ! {style: DISPLAY - CIE-XYZ-D65_to_DisplayP3}
+
+ - !
+ name: Rec.1886 Rec.709 - Display
+ aliases: [rec1886_rec709_display]
+ family: Display
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert CIE XYZ (D65 white) to Rec.1886/Rec.709 (HD video)
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec709_100nits_dim.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.Rec709_100nits_dim.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec709_D60sim_100nits_dim.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.Rec709_D60sim_100nits_dim.a1.0.3
+ isdata: false
+ categories: [file-io]
+ encoding: sdr-video
+ allocation: uniform
+ from_display_reference: ! {style: DISPLAY - CIE-XYZ-D65_to_REC.1886-REC.709}
+
+ - !
+ name: Rec.1886 Rec.2020 - Display
+ aliases: [rec1886_rec2020_display]
+ family: Display
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert CIE XYZ (D65 white) to Rec.1886/Rec.2020 (UHD video)
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec2020_100nits_dim.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.Rec2020_100nits_dim.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec2020_P3D65limited_100nits_dim.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.Rec2020_Rec709limited_100nits_dim.a1.1.0
+ isdata: false
+ categories: [file-io]
+ encoding: sdr-video
+ allocation: uniform
+ from_display_reference: ! {style: DISPLAY - CIE-XYZ-D65_to_REC.1886-REC.2020}
+
+ - !
+ name: Rec.2100-HLG - Display
+ aliases: [rec2100_hlg_display]
+ family: Display
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert CIE XYZ (D65 white) to Rec.2100-HLG, 1000 nit
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_1000nits_15nits_HLG.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.Rec2020_1000nits_15nits_HLG.a1.1.0
+ isdata: false
+ categories: [file-io]
+ encoding: hdr-video
+ allocation: uniform
+ from_display_reference: ! {style: DISPLAY - CIE-XYZ-D65_to_REC.2100-HLG-1000nit}
+
+ - !
+ name: Rec.2100-PQ - Display
+ aliases: [rec2100_pq_display]
+ family: Display
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert CIE XYZ (D65 white) to Rec.2100-PQ
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_1000nits_15nits_ST2084.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.Rec2020_1000nits_15nits_ST2084.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_2000nits_15nits_ST2084.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.Rec2020_2000nits_15nits_ST2084.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.Rec2020_4000nits_15nits_ST2084.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.Rec2020_4000nits_15nits_ST2084.a1.1.0
+ isdata: false
+ categories: [file-io]
+ encoding: hdr-video
+ allocation: uniform
+ from_display_reference: ! {style: DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ}
+
+ - !
+ name: ST2084-P3-D65 - Display
+ aliases: [st2084_p3d65_display]
+ family: Display
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert CIE XYZ (D65 white) to ST-2084 (PQ), P3-D65 primaries
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_1000nits_15nits_ST2084.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.P3D65_1000nits_15nits_ST2084.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_2000nits_15nits_ST2084.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.P3D65_2000nits_15nits_ST2084.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_4000nits_15nits_ST2084.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.P3D65_4000nits_15nits_ST2084.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:RRTODT.Academy.P3D65_108nits_7point2nits_ST2084.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvRRTODT.Academy.P3D65_108nits_7point2nits_ST2084.a1.1.0
+ isdata: false
+ categories: [file-io]
+ encoding: hdr-video
+ allocation: uniform
+ from_display_reference: ! {style: DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65}
+
+ - !
+ name: P3-D60 - Display
+ aliases: [p3d60_display]
+ family: Display
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert CIE XYZ (D65 white) to Gamma 2.6, P3-D60 (Bradford adaptation)
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D60_48nits.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.P3D60_48nits.a1.0.3
+ isdata: false
+ categories: [file-io]
+ encoding: sdr-video
+ allocation: uniform
+ from_display_reference: ! {style: DISPLAY - CIE-XYZ-D65_to_G2.6-P3-D60-BFD}
+
+ - !
+ name: P3-D65 - Display
+ aliases: [p3d65_display]
+ family: Display
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert CIE XYZ (D65 white) to Gamma 2.6, P3-D65
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D65_48nits.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.P3D65_48nits.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D65_Rec709limited_48nits.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3D65_D60sim_48nits.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.P3D65_D60sim_48nits.a1.1.0
+ isdata: false
+ categories: [file-io]
+ encoding: sdr-video
+ allocation: uniform
+ from_display_reference: ! {style: DISPLAY - CIE-XYZ-D65_to_G2.6-P3-D65}
+
+ - !
+ name: P3-DCI - Display
+ aliases: [p3_dci_display]
+ family: Display
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert CIE XYZ (D65 white) to Gamma 2.6, P3-DCI (DCI white with Bradford adaptation)
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3DCI_48nits.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.P3DCI_48nits.a1.0.3
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.Academy.P3DCI_D65sim_48nits.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:InvODT.Academy.P3DCI_D65sim_48nits.a1.1.0
+ isdata: false
+ categories: [file-io]
+ encoding: sdr-video
+ allocation: uniform
+ from_display_reference: ! {style: DISPLAY - CIE-XYZ-D65_to_G2.6-P3-DCI-BFD}
+
+colorspaces:
+ - !
+ name: ACES2065-1
+ aliases: [aces2065_1, ACES - ACES2065-1, lin_ap0]
+ family: ACES
+ equalitygroup: ""
+ bitdepth: 32f
+ description: The "Academy Color Encoding System" reference colorspace.
+ isdata: false
+ categories: [file-io]
+ encoding: scene-linear
+ allocation: uniform
+
+ - !
+ name: ACEScc
+ aliases: [ACES - ACEScc, acescc_ap1]
+ family: ACES
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ACEScc to ACES2065-1
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACEScc_to_ACES.a1.0.3
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_ACEScc.a1.0.3
+ isdata: false
+ categories: [file-io]
+ encoding: log
+ allocation: uniform
+ to_scene_reference: ! {style: ACEScc_to_ACES2065-1}
+
+ - !
+ name: ACEScct
+ aliases: [ACES - ACEScct, acescct_ap1]
+ family: ACES
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ACEScct to ACES2065-1
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACEScct_to_ACES.a1.0.3
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_ACEScct.a1.0.3
+ isdata: false
+ categories: [file-io, working-space]
+ encoding: log
+ allocation: uniform
+ to_scene_reference: ! {style: ACEScct_to_ACES2065-1}
+
+ - !
+ name: ACEScg
+ aliases: [ACES - ACEScg, lin_ap1]
+ family: ACES
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ACEScg to ACES2065-1
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACEScg_to_ACES.a1.0.3
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_ACEScg.a1.0.3
+ isdata: false
+ categories: [file-io, working-space, texture]
+ encoding: scene-linear
+ allocation: uniform
+ to_scene_reference: ! {style: ACEScg_to_ACES2065-1}
+
+ - !
+ name: ADX10
+ aliases: [Input - ADX - ADX10]
+ family: ACES
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ADX10 to ACES2065-1
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ADX10_to_ACES.a1.0.3
+ isdata: false
+ categories: [file-io]
+ encoding: log
+ allocation: uniform
+ to_scene_reference: ! {style: ADX10_to_ACES2065-1}
+
+ - !
+ name: ADX16
+ aliases: [Input - ADX - ADX16]
+ family: ACES
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ADX16 to ACES2065-1
+
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ADX16_to_ACES.a1.0.3
+ isdata: false
+ categories: [file-io]
+ encoding: log
+ allocation: uniform
+ to_scene_reference: ! {style: ADX16_to_ACES2065-1}
+
+ - !
+ name: Linear ARRI Wide Gamut 3
+ aliases: [lin_arri_wide_gamut_3, Input - ARRI - Linear - ALEXA Wide Gamut, lin_alexawide]
+ family: Input/ARRI
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Linear ARRI Wide Gamut 3 to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:ARRI:Input:Linear_ARRI_Wide_Gamut_3_to_ACES2065-1:1.0
+ isdata: false
+ categories: [file-io]
+ encoding: scene-linear
+ allocation: uniform
+ to_scene_reference: !
+ name: Linear ARRI Wide Gamut 3 to ACES2065-1
+ children:
+ - ! {matrix: [0.680205505106279, 0.236136601606481, 0.0836578932872398, 0, 0.0854149797421404, 1.01747087860704, -0.102885858349182, 0, 0.00205652166929683, -0.0625625003847921, 1.06050597871549, 0, 0, 0, 0, 1]}
+
+ - !
+ name: ARRI LogC3 (EI800)
+ aliases: [arri_logc3_ei800, Input - ARRI - V3 LogC (EI800) - Wide Gamut, logc3ei800_alexawide]
+ family: Input/ARRI
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ARRI LogC3 (EI800) to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:ARRI:Input:ARRI_LogC3_EI800_to_ACES2065-1:1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.ARRI.Alexa-v3-logC-EI800.a1.v2
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_LogC_EI800_AWG.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.LogC_EI800_AWG_to_ACES.a1.1.0
+ isdata: false
+ categories: [file-io]
+ encoding: log
+ allocation: uniform
+ to_scene_reference: !
+ name: ARRI LogC3 (EI800) to ACES2065-1
+ children:
+ - ! {base: 10, log_side_slope: 0.247189638318671, log_side_offset: 0.385536998692443, lin_side_slope: 5.55555555555556, lin_side_offset: 0.0522722750251688, lin_side_break: 0.0105909904954696, direction: inverse}
+ - ! {matrix: [0.680205505106279, 0.236136601606481, 0.0836578932872398, 0, 0.0854149797421404, 1.01747087860704, -0.102885858349182, 0, 0.00205652166929683, -0.0625625003847921, 1.06050597871549, 0, 0, 0, 0, 1]}
+
+ - !
+ name: Linear ARRI Wide Gamut 4
+ aliases: [lin_arri_wide_gamut_4, lin_awg4]
+ family: Input/ARRI
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Linear ARRI Wide Gamut 4 to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:ARRI:Input:Linear_ARRI_Wide_Gamut_4_to_ACES2065-1:1.0
+ isdata: false
+ categories: [file-io]
+ encoding: scene-linear
+ allocation: uniform
+ to_scene_reference: !
+ name: Linear ARRI Wide Gamut 4 to ACES2065-1
+ children:
+ - ! {matrix: [0.750957362824734, 0.144422786709757, 0.104619850465509, 0, 0.000821837079380207, 1.007397584885, -0.00821942196438358, 0, -0.000499952143533471, -0.000854177231436971, 1.00135412937497, 0, 0, 0, 0, 1]}
+
+ - !
+ name: ARRI LogC4
+ aliases: [arri_logc4]
+ family: Input/ARRI
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ARRI LogC4 to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:ARRI:Input:ARRI_LogC4_to_ACES2065-1:1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.ARRI.ARRI-LogC4.a1.v1
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.LogC4_to_ACES.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_LogC4.a1.1.0
+ isdata: false
+ categories: [file-io]
+ encoding: log
+ allocation: uniform
+ to_scene_reference: !
+ name: ARRI LogC4 to ACES2065-1
+ children:
+ - ! {log_side_slope: 0.0647954196341293, log_side_offset: -0.295908392682586, lin_side_slope: 2231.82630906769, lin_side_offset: 64, lin_side_break: -0.0180569961199113, direction: inverse}
+ - ! {matrix: [0.750957362824734, 0.144422786709757, 0.104619850465509, 0, 0.000821837079380207, 1.007397584885, -0.00821942196438358, 0, -0.000499952143533471, -0.000854177231436971, 1.00135412937497, 0, 0, 0, 0, 1]}
+
+ - !
+ name: BMDFilm WideGamut Gen5
+ aliases: [bmdfilm_widegamut_gen5]
+ family: Input/BlackmagicDesign
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Blackmagic Film Wide Gamut (Gen 5) to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:BMDFilm_WideGamut_Gen5_to_ACES2065-1:1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.BlackmagicDesign.BMDFilm_WideGamut_Gen5.a1.v1
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_BMDFilm_WideGamut_Gen5.a1.v1
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.BMDFilm_WideGamut_Gen5_to_ACES.a1.v1
+ isdata: false
+ categories: [file-io]
+ encoding: log
+ allocation: uniform
+ to_scene_reference: !
+ name: Blackmagic Film Wide Gamut (Gen 5) to ACES2065-1
+ children:
+ - ! {base: 2.71828182845905, log_side_slope: 0.0869287606549122, log_side_offset: 0.530013339229194, lin_side_offset: 0.00549407243225781, lin_side_break: 0.005, direction: inverse}
+ - ! {matrix: [0.647091325580708, 0.242595385134207, 0.110313289285085, 0, 0.0651915997328519, 1.02504756760476, -0.0902391673376125, 0, -0.0275570729194699, -0.0805887097177784, 1.10814578263725, 0, 0, 0, 0, 1]}
+
+ - !
+ name: DaVinci Intermediate WideGamut
+ aliases: [davinci_intermediate_widegamut]
+ family: Input/BlackmagicDesign
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert DaVinci Intermediate Wide Gamut to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:DaVinci_Intermediate_WideGamut_to_ACES2065-1:1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.DaVinci_Intermediate_WideGamut_to_ACES.a1.v1
+ isdata: false
+ categories: [file-io]
+ encoding: log
+ allocation: uniform
+ to_scene_reference: !
+ name: DaVinci Intermediate Wide Gamut to ACES2065-1
+ children:
+ - ! {log_side_slope: 0.07329248, log_side_offset: 0.51304736, lin_side_offset: 0.0075, lin_side_break: 0.00262409, linear_slope: 10.44426855, direction: inverse}
+ - ! {matrix: [0.748270290272981, 0.167694659554328, 0.0840350501726906, 0, 0.0208421234689102, 1.11190474268894, -0.132746866157851, 0, -0.0915122574225729, -0.127746712807307, 1.21925897022988, 0, 0, 0, 0, 1]}
+
+ - !
+ name: Linear BMD WideGamut Gen5
+ aliases: [lin_bmd_widegamut_gen5]
+ family: Input/BlackmagicDesign
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Linear Blackmagic Wide Gamut (Gen 5) to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:Linear_BMD_WideGamut_Gen5_to_ACES2065-1:1.0
+ isdata: false
+ categories: [file-io]
+ encoding: scene-linear
+ allocation: uniform
+ to_scene_reference: !
+ name: Linear Blackmagic Wide Gamut (Gen 5) to ACES2065-1
+ children:
+ - ! {matrix: [0.647091325580708, 0.242595385134207, 0.110313289285085, 0, 0.0651915997328519, 1.02504756760476, -0.0902391673376125, 0, -0.0275570729194699, -0.0805887097177784, 1.10814578263725, 0, 0, 0, 0, 1]}
+
+ - !
+ name: Linear DaVinci WideGamut
+ aliases: [lin_davinci_widegamut]
+ family: Input/BlackmagicDesign
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Linear DaVinci Wide Gamut to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:Linear_DaVinci_WideGamut_to_ACES2065-1:1.0
+ isdata: false
+ categories: [file-io]
+ encoding: scene-linear
+ allocation: uniform
+ to_scene_reference: !
+ name: Linear DaVinci Wide Gamut to ACES2065-1
+ children:
+ - ! {matrix: [0.748270290272981, 0.167694659554328, 0.0840350501726906, 0, 0.0208421234689102, 1.11190474268894, -0.132746866157851, 0, -0.0915122574225729, -0.127746712807307, 1.21925897022988, 0, 0, 0, 0, 1]}
+
+ - !
+ name: CanonLog2 CinemaGamut D55
+ aliases: [canonlog2_cinemagamut_d55, Input - Canon - Canon-Log2 - Cinema Gamut Daylight, canonlog2_cgamutday]
+ family: Input/Canon
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Canon Log 2 Cinema Gamut (Daylight) to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:Canon:Input:CanonLog2_CinemaGamut-D55_to_ACES2065-1:1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.CLog2_CGamut_to_ACES.a1.1.0
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_CLog2_CGamut.a1.1.0
+ isdata: false
+ categories: [file-io]
+ encoding: log
+ allocation: uniform
+ to_scene_reference: ! {style: CANON_CLOG2-CGAMUT_to_ACES2065-1}
+
+ - !
+ name: CanonLog3 CinemaGamut D55
+ aliases: [canonlog3_cinemagamut_d55, Input - Canon - Canon-Log3 - Cinema Gamut Daylight, canonlog3_cgamutday]
+ family: Input/Canon
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Canon Log 3 Cinema Gamut (Daylight) to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:Canon:Input:CanonLog3_CinemaGamut-D55_to_ACES2065-1:1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.CLog3_CGamut_to_ACES.a1.1.0
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_CLog3_CGamut.a1.1.0
+ isdata: false
+ categories: [file-io]
+ encoding: log
+ allocation: uniform
+ to_scene_reference: ! {style: CANON_CLOG3-CGAMUT_to_ACES2065-1}
+
+ - !
+ name: Linear CinemaGamut D55
+ aliases: [lin_cinemagamut_d55, Input - Canon - Linear - Canon Cinema Gamut Daylight, lin_canoncgamutday]
+ family: Input/Canon
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Linear Canon Cinema Gamut (Daylight) to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:Canon:Input:Linear-CinemaGamut-D55_to_ACES2065-1:1.0
+ isdata: false
+ categories: [file-io]
+ encoding: scene-linear
+ allocation: uniform
+ to_scene_reference: !
+ name: Linear Canon Cinema Gamut (Daylight) to ACES2065-1
+ children:
+ - ! {matrix: [0.763064454775734, 0.14902116113706, 0.0879143840872056, 0, 0.00365745670512393, 1.10696038037622, -0.110617837081339, 0, -0.0094077940457189, -0.218383304989987, 1.22779109903571, 0, 0, 0, 0, 1]}
+
+ - !
+ name: Linear V-Gamut
+ aliases: [lin_vgamut, Input - Panasonic - Linear - V-Gamut]
+ family: Input/Panasonic
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Linear Panasonic V-Gamut to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:Panasonic:Input:Linear_VGamut_to_ACES2065-1:1.0
+ isdata: false
+ categories: [file-io]
+ encoding: scene-linear
+ allocation: uniform
+ to_scene_reference: !
+ name: Linear Panasonic V-Gamut to ACES2065-1
+ children:
+ - ! {matrix: [0.72461670413153, 0.166915288193706, 0.108468007674764, 0, 0.021390245413146, 0.984908155703054, -0.00629840111620089, 0, -0.00923556287076561, -0.00105690563900513, 1.01029246850977, 0, 0, 0, 0, 1]}
+
+ - !
+ name: V-Log V-Gamut
+ aliases: [vlog_vgamut, Input - Panasonic - V-Log - V-Gamut]
+ family: Input/Panasonic
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Panasonic V-Log - V-Gamut to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:Panasonic:Input:VLog_VGamut_to_ACES2065-1:1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.VLog_VGamut_to_ACES.a1.1.0
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_VLog_VGamut.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.Panasonic.VLog_VGamut.a1.v1
+ isdata: false
+ categories: [file-io]
+ encoding: log
+ allocation: uniform
+ to_scene_reference: !
+ name: Panasonic V-Log - V-Gamut to ACES2065-1
+ children:
+ - ! {base: 10, log_side_slope: 0.241514, log_side_offset: 0.598206, lin_side_offset: 0.00873, lin_side_break: 0.01, direction: inverse}
+ - ! {matrix: [0.72461670413153, 0.166915288193706, 0.108468007674764, 0, 0.021390245413146, 0.984908155703054, -0.00629840111620089, 0, -0.00923556287076561, -0.00105690563900513, 1.01029246850977, 0, 0, 0, 0, 1]}
+
+ - !
+ name: Linear REDWideGamutRGB
+ aliases: [lin_redwidegamutrgb, Input - RED - Linear - REDWideGamutRGB, lin_rwg]
+ family: Input/RED
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Linear REDWideGamutRGB to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:RED:Input:Linear_REDWideGamutRGB_to_ACES2065-1:1.0
+ isdata: false
+ categories: [file-io]
+ encoding: scene-linear
+ allocation: uniform
+ to_scene_reference: !
+ name: Linear REDWideGamutRGB to ACES2065-1
+ children:
+ - ! {matrix: [0.785058804068092, 0.0838587565440846, 0.131082439387823, 0, 0.0231738348454756, 1.08789754919233, -0.111071384037806, 0, -0.0737604353682082, -0.314590072290208, 1.38835050765842, 0, 0, 0, 0, 1]}
+
+ - !
+ name: Log3G10 REDWideGamutRGB
+ aliases: [log3g10_redwidegamutrgb, Input - RED - REDLog3G10 - REDWideGamutRGB, rl3g10_rwg]
+ family: Input/RED
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert RED Log3G10 REDWideGamutRGB to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:RED:Input:Log3G10_REDWideGamutRGB_to_ACES2065-1:1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.RED.Log3G10_REDWideGamutRGB.a1.v1
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_Log3G10_RWG.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.Log3G10_RWG_to_ACES.a1.1.0
+ isdata: false
+ categories: [file-io]
+ encoding: log
+ allocation: uniform
+ to_scene_reference: !
+ name: RED Log3G10 REDWideGamutRGB to ACES2065-1
+ children:
+ - ! {base: 10, log_side_slope: 0.224282, lin_side_slope: 155.975327, lin_side_offset: 2.55975327, lin_side_break: -0.01, direction: inverse}
+ - ! {matrix: [0.785058804068092, 0.0838587565440846, 0.131082439387823, 0, 0.0231738348454756, 1.08789754919233, -0.111071384037806, 0, -0.0737604353682082, -0.314590072290208, 1.38835050765842, 0, 0, 0, 0, 1]}
+
+ - !
+ name: Linear S-Gamut3
+ aliases: [lin_sgamut3, Input - Sony - Linear - S-Gamut3]
+ family: Input/Sony
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Linear S-Gamut3 to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:Sony:Input:Linear_SGamut3_to_ACES2065-1:1.0
+ isdata: false
+ categories: [file-io]
+ encoding: scene-linear
+ allocation: uniform
+ to_scene_reference: !
+ name: Linear S-Gamut3 to ACES2065-1
+ children:
+ - ! {matrix: [0.75298259539984, 0.143370216235557, 0.103647188364603, 0, 0.0217076974414429, 1.01531883550528, -0.0370265329467195, 0, -0.00941605274963355, 0.00337041785882367, 1.00604563489081, 0, 0, 0, 0, 1]}
+
+ - !
+ name: Linear S-Gamut3.Cine
+ aliases: [lin_sgamut3cine, Input - Sony - Linear - S-Gamut3.Cine]
+ family: Input/Sony
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Linear S-Gamut3.Cine to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:Sony:Input:Linear_SGamut3Cine_to_ACES2065-1:1.0
+ isdata: false
+ categories: [file-io]
+ encoding: scene-linear
+ allocation: uniform
+ to_scene_reference: !
+ name: Linear S-Gamut3.Cine to ACES2065-1
+ children:
+ - ! {matrix: [0.638788667185978, 0.272351433711262, 0.0888598991027595, 0, -0.00391590602528224, 1.0880732308974, -0.0841573248721177, 0, -0.0299072021239151, -0.0264325799101947, 1.05633978203411, 0, 0, 0, 0, 1]}
+
+ - !
+ name: Linear Venice S-Gamut3
+ aliases: [lin_venice_sgamut3, Input - Sony - Linear - Venice S-Gamut3]
+ family: Input/Sony
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Linear Venice S-Gamut3 to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:Sony:Input:Linear_Venice_SGamut3_to_ACES2065-1:1.0
+ isdata: false
+ categories: [file-io]
+ encoding: scene-linear
+ allocation: uniform
+ to_scene_reference: !
+ name: Linear Venice S-Gamut3 to ACES2065-1
+ children:
+ - ! {matrix: [0.793329741146434, 0.0890786256206771, 0.117591633232888, 0, 0.0155810585252582, 1.03271230692988, -0.0482933654551394, 0, -0.0188647477991488, 0.0127694120973433, 1.0060953357018, 0, 0, 0, 0, 1]}
+
+ - !
+ name: Linear Venice S-Gamut3.Cine
+ aliases: [lin_venice_sgamut3cine, Input - Sony - Linear - Venice S-Gamut3.Cine]
+ family: Input/Sony
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Linear Venice S-Gamut3.Cine to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:Sony:Input:Linear_Venice_SGamut3Cine_to_ACES2065-1:1.0
+ isdata: false
+ categories: [file-io]
+ encoding: scene-linear
+ allocation: uniform
+ to_scene_reference: !
+ name: Linear Venice S-Gamut3.Cine to ACES2065-1
+ children:
+ - ! {matrix: [0.674257092126512, 0.220571735923397, 0.10517117195009, 0, -0.00931360607857167, 1.10595886142466, -0.0966452553460855, 0, -0.0382090673002312, -0.017938376600236, 1.05614744390047, 0, 0, 0, 0, 1]}
+
+ - !
+ name: S-Log3 S-Gamut3
+ aliases: [slog3_sgamut3, Input - Sony - S-Log3 - S-Gamut3]
+ family: Input/Sony
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Sony S-Log3 S-Gamut3 to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3_SGamut3_to_ACES2065-1:1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog3_SGamut3.a1.v1
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_SLog3_SGamut3.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.SLog3_SGamut3_to_ACES.a1.1.0
+ isdata: false
+ categories: [file-io]
+ encoding: log
+ allocation: uniform
+ to_scene_reference: !
+ name: Sony S-Log3 S-Gamut3 to ACES2065-1
+ children:
+ - ! {base: 10, log_side_slope: 0.255620723362659, log_side_offset: 0.410557184750733, lin_side_slope: 5.26315789473684, lin_side_offset: 0.0526315789473684, lin_side_break: 0.01125, linear_slope: 6.62194371177582, direction: inverse}
+ - ! {matrix: [0.75298259539984, 0.143370216235557, 0.103647188364603, 0, 0.0217076974414429, 1.01531883550528, -0.0370265329467195, 0, -0.00941605274963355, 0.00337041785882367, 1.00604563489081, 0, 0, 0, 0, 1]}
+
+ - !
+ name: S-Log3 S-Gamut3.Cine
+ aliases: [slog3_sgamut3cine, Input - Sony - S-Log3 - S-Gamut3.Cine, slog3_sgamutcine]
+ family: Input/Sony
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Sony S-Log3 S-Gamut3.Cine to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3_SGamut3Cine_to_ACES2065-1:1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.Sony.SLog3_SGamut3Cine.a1.v1
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_SLog3_SGamut3Cine.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.SLog3_SGamut3Cine_to_ACES.a1.1.0
+ isdata: false
+ categories: [file-io]
+ encoding: log
+ allocation: uniform
+ to_scene_reference: !
+ name: Sony S-Log3 S-Gamut3.Cine to ACES2065-1
+ children:
+ - ! {base: 10, log_side_slope: 0.255620723362659, log_side_offset: 0.410557184750733, lin_side_slope: 5.26315789473684, lin_side_offset: 0.0526315789473684, lin_side_break: 0.01125, linear_slope: 6.62194371177582, direction: inverse}
+ - ! {matrix: [0.638788667185978, 0.272351433711262, 0.0888598991027595, 0, -0.00391590602528224, 1.0880732308974, -0.0841573248721177, 0, -0.0299072021239151, -0.0264325799101947, 1.05633978203411, 0, 0, 0, 0, 1]}
+
+ - !
+ name: S-Log3 Venice S-Gamut3
+ aliases: [slog3_venice_sgamut3, Input - Sony - S-Log3 - Venice S-Gamut3]
+ family: Input/Sony
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Sony S-Log3 Venice S-Gamut3 to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3_Venice_SGamut3_to_ACES2065-1:1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.Sony.Venice_SLog3_SGamut3.a1.v1
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_SLog3_Venice_SGamut3.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.SLog3_Venice_SGamut3_to_ACES.a1.1.0
+ isdata: false
+ categories: [file-io]
+ encoding: log
+ allocation: uniform
+ to_scene_reference: !
+ name: Sony S-Log3 Venice S-Gamut3 to ACES2065-1
+ children:
+ - ! {base: 10, log_side_slope: 0.255620723362659, log_side_offset: 0.410557184750733, lin_side_slope: 5.26315789473684, lin_side_offset: 0.0526315789473684, lin_side_break: 0.01125, linear_slope: 6.62194371177582, direction: inverse}
+ - ! {matrix: [0.793329741146434, 0.089078625620677, 0.117591633232888, 0, 0.0155810585252582, 1.03271230692988, -0.0482933654551394, 0, -0.0188647477991488, 0.0127694120973433, 1.00609533570181, 0, 0, 0, 0, 1]}
+
+ - !
+ name: S-Log3 Venice S-Gamut3.Cine
+ aliases: [slog3_venice_sgamut3cine, Input - Sony - S-Log3 - Venice S-Gamut3.Cine, slog3_venice_sgamutcine]
+ family: Input/Sony
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert Sony S-Log3 Venice S-Gamut3.Cine to ACES2065-1
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3_Venice_SGamut3Cine_to_ACES2065-1:1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:IDT.Sony.Venice_SLog3_SGamut3Cine.a1.v1
+
+ AMF Components
+ --------------
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.ACES_to_SLog3_Venice_SGamut3Cine.a1.1.0
+ ACEStransformID: urn:ampas:aces:transformId:v1.5:ACEScsc.Academy.SLog3_Venice_SGamut3Cine_to_ACES.a1.1.0
+ isdata: false
+ categories: [file-io]
+ encoding: log
+ allocation: uniform
+ to_scene_reference: !
+ name: Sony S-Log3 Venice S-Gamut3.Cine to ACES2065-1
+ children:
+ - ! {base: 10, log_side_slope: 0.255620723362659, log_side_offset: 0.410557184750733, lin_side_slope: 5.26315789473684, lin_side_offset: 0.0526315789473684, lin_side_break: 0.01125, linear_slope: 6.62194371177582, direction: inverse}
+ - ! {matrix: [0.674257092126512, 0.220571735923397, 0.10517117195009, 0, -0.00931360607857167, 1.10595886142466, -0.0966452553460855, 0, -0.0382090673002312, -0.017938376600236, 1.05614744390047, 0, 0, 0, 0, 1]}
+
+ - !
+ name: Camera Rec.709
+ aliases: [camera_rec709, Utility - Rec.709 - Camera, rec709_camera]
+ family: Utility/ITU
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ACES2065-1 to Rec.709 camera OETF Rec.709 primaries, D65 white point
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:ITU:Utility:AP0_to_Camera_Rec709:1.0
+ isdata: false
+ categories: [file-io]
+ encoding: sdr-video
+ allocation: uniform
+ from_scene_reference: !
+ name: AP0 to Camera Rec.709
+ children:
+ - ! {matrix: [2.52168618674388, -1.13413098823972, -0.387555198504164, 0, -0.276479914229922, 1.37271908766826, -0.096239173438334, 0, -0.0153780649660342, -0.152975335867399, 1.16835340083343, 0, 0, 0, 0, 1]}
+ - ! {gamma: 2.22222222222222, offset: 0.099, direction: inverse}
+
+ - !
+ name: Linear P3-D65
+ aliases: [lin_p3d65, Utility - Linear - P3-D65, lin_displayp3, Linear Display P3]
+ family: Utility
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ACES2065-1 to linear P3 primaries, D65 white point
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_P3-D65:1.0
+ isdata: false
+ categories: [file-io, working-space, texture]
+ encoding: scene-linear
+ allocation: uniform
+ from_scene_reference: !
+ name: AP0 to Linear P3-D65
+ children:
+ - ! {matrix: [2.02490528596679, -0.689069761034766, -0.335835524932019, 0, -0.183597032256178, 1.28950620775902, -0.105909175502841, 0, 0.00905856112234766, -0.0592796840575522, 1.0502211229352, 0, 0, 0, 0, 1]}
+
+ - !
+ name: Linear Rec.2020
+ aliases: [lin_rec2020, Utility - Linear - Rec.2020]
+ family: Utility
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ACES2065-1 to linear Rec.2020 primaries, D65 white point
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_Rec2020:1.0
+ isdata: false
+ categories: [file-io, texture]
+ encoding: scene-linear
+ allocation: uniform
+ from_scene_reference: !
+ name: AP0 to Linear Rec.2020
+ children:
+ - ! {matrix: [1.49040952054172, -0.26617091926613, -0.224238601275593, 0, -0.0801674998722558, 1.18216712109757, -0.10199962122531, 0, 0.00322763119162216, -0.0347764757450576, 1.03154884455344, 0, 0, 0, 0, 1]}
+
+ - !
+ name: Linear Rec.709 (sRGB)
+ aliases: [lin_rec709_srgb, Utility - Linear - Rec.709, lin_rec709, lin_srgb, Utility - Linear - sRGB]
+ family: Utility
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ACES2065-1 to linear Rec.709 primaries, D65 white point
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Linear_Rec709:1.0
+ isdata: false
+ categories: [file-io, working-space, texture]
+ encoding: scene-linear
+ allocation: uniform
+ from_scene_reference: !
+ name: AP0 to Linear Rec.709 (sRGB)
+ children:
+ - ! {matrix: [2.52168618674388, -1.13413098823972, -0.387555198504164, 0, -0.276479914229922, 1.37271908766826, -0.096239173438334, 0, -0.0153780649660342, -0.152975335867399, 1.16835340083343, 0, 0, 0, 0, 1]}
+
+ - !
+ name: Gamma 1.8 Rec.709 - Texture
+ aliases: [g18_rec709_tx, Utility - Gamma 1.8 - Rec.709 - Texture, g18_rec709]
+ family: Utility
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ACES2065-1 to 1.8 gamma-corrected Rec.709 primaries, D65 white point
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma1.8_Rec709-Texture:1.0
+ isdata: false
+ categories: [file-io, texture]
+ encoding: sdr-video
+ allocation: uniform
+ from_scene_reference: !
+ name: AP0 to Gamma 1.8 Rec.709 - Texture
+ children:
+ - ! {matrix: [2.52168618674388, -1.13413098823972, -0.387555198504164, 0, -0.276479914229922, 1.37271908766826, -0.096239173438334, 0, -0.0153780649660342, -0.152975335867399, 1.16835340083343, 0, 0, 0, 0, 1]}
+ - ! {value: 1.8, style: pass_thru, direction: inverse}
+
+ - !
+ name: Gamma 2.2 AP1 - Texture
+ aliases: [g22_ap1_tx, g22_ap1]
+ family: Utility
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ACES2065-1 to 2.2 gamma-corrected AP1 primaries, ACES ~=D60 white point
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.2_AP1-Texture:1.0
+ isdata: false
+ categories: [file-io, texture]
+ encoding: sdr-video
+ allocation: uniform
+ from_scene_reference: !
+ name: AP0 to Gamma 2.2 AP1 - Texture
+ children:
+ - ! {matrix: [1.45143931614567, -0.23651074689374, -0.214928569251925, 0, -0.0765537733960206, 1.17622969983357, -0.0996759264375522, 0, 0.00831614842569772, -0.00603244979102102, 0.997716301365323, 0, 0, 0, 0, 1]}
+ - ! {value: 2.2, style: pass_thru, direction: inverse}
+
+ - !
+ name: Gamma 2.2 Rec.709 - Texture
+ aliases: [g22_rec709_tx, Utility - Gamma 2.2 - Rec.709 - Texture, g22_rec709]
+ family: Utility
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ACES2065-1 to 2.2 gamma-corrected Rec.709 primaries, D65 white point
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.2_Rec709-Texture:1.0
+ isdata: false
+ categories: [file-io, texture]
+ encoding: sdr-video
+ allocation: uniform
+ from_scene_reference: !
+ name: AP0 to Gamma 2.2 Rec.709 - Texture
+ children:
+ - ! {matrix: [2.52168618674388, -1.13413098823972, -0.387555198504164, 0, -0.276479914229922, 1.37271908766826, -0.096239173438334, 0, -0.0153780649660342, -0.152975335867399, 1.16835340083343, 0, 0, 0, 0, 1]}
+ - ! {value: 2.2, style: pass_thru, direction: inverse}
+
+ - !
+ name: Gamma 2.4 Rec.709 - Texture
+ aliases: [g24_rec709_tx, g24_rec709, rec709_display, Utility - Rec.709 - Display]
+ family: Utility
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ACES2065-1 to 2.4 gamma-corrected Rec.709 primaries, D65 white point
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_Gamma2.4_Rec709-Texture:1.0
+ isdata: false
+ categories: [file-io, texture]
+ encoding: sdr-video
+ allocation: uniform
+ from_scene_reference: !
+ name: AP0 to Gamma 2.4 Rec.709 - Texture
+ children:
+ - ! {matrix: [2.52168618674388, -1.13413098823972, -0.387555198504164, 0, -0.276479914229922, 1.37271908766826, -0.096239173438334, 0, -0.0153780649660342, -0.152975335867399, 1.16835340083343, 0, 0, 0, 0, 1]}
+ - ! {value: 2.4, style: pass_thru, direction: inverse}
+
+ - !
+ name: sRGB Encoded AP1 - Texture
+ aliases: [srgb_encoded_ap1_tx, srgb_ap1]
+ family: Utility
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ACES2065-1 to sRGB Encoded AP1 primaries, ACES ~=D60 white point
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB_Encoded_AP1-Texture:1.0
+ isdata: false
+ categories: [file-io, texture]
+ encoding: sdr-video
+ allocation: uniform
+ from_scene_reference: !
+ name: AP0 to sRGB Encoded AP1 - Texture
+ children:
+ - ! {matrix: [1.45143931614567, -0.23651074689374, -0.214928569251925, 0, -0.0765537733960206, 1.17622969983357, -0.0996759264375522, 0, 0.00831614842569772, -0.00603244979102102, 0.997716301365323, 0, 0, 0, 0, 1]}
+ - ! {gamma: 2.4, offset: 0.055, direction: inverse}
+
+ - !
+ name: sRGB Encoded P3-D65 - Texture
+ aliases: [srgb_encoded_p3d65_tx, srgb_p3d65, srgb_displayp3]
+ family: Utility
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ACES2065-1 to sRGB Encoded P3-D65 primaries, D65 white point
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB_Encoded_P3-D65-Texture:1.0
+ isdata: false
+ categories: [file-io, texture]
+ encoding: sdr-video
+ allocation: uniform
+ from_scene_reference: !
+ name: AP0 to sRGB Encoded P3-D65 - Texture
+ children:
+ - ! {matrix: [2.02490528596679, -0.689069761034766, -0.335835524932019, 0, -0.183597032256178, 1.28950620775902, -0.105909175502841, 0, 0.00905856112234766, -0.0592796840575522, 1.0502211229352, 0, 0, 0, 0, 1]}
+ - ! {gamma: 2.4, offset: 0.055, direction: inverse}
+
+ - !
+ name: sRGB - Texture
+ aliases: [srgb_tx, Utility - sRGB - Texture, srgb_texture, Input - Generic - sRGB - Texture]
+ family: Utility
+ equalitygroup: ""
+ bitdepth: 32f
+ description: |
+ Convert ACES2065-1 to sRGB
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:AP0_to_sRGB-Texture:1.0
+ isdata: false
+ categories: [file-io, texture]
+ encoding: sdr-video
+ allocation: uniform
+ from_scene_reference: !
+ name: AP0 to sRGB Rec.709
+ children:
+ - ! {matrix: [2.52168618674388, -1.13413098823972, -0.387555198504164, 0, -0.276479914229922, 1.37271908766826, -0.096239173438334, 0, -0.0153780649660342, -0.152975335867399, 1.16835340083343, 0, 0, 0, 0, 1]}
+ - ! {gamma: 2.4, offset: 0.055, direction: inverse}
+
+ - !
+ name: Raw
+ aliases: [Utility - Raw]
+ family: Utility
+ equalitygroup: ""
+ bitdepth: 32f
+ description: The utility "Raw" colorspace.
+ isdata: true
+ categories: [file-io, texture]
+ allocation: uniform
+
+named_transforms:
+ - !
+ name: ARRI LogC3 - Curve (EI800)
+ aliases: [arri_logc3_crv_ei800, Input - ARRI - Curve - V3 LogC (EI800), crv_logc3ei800]
+ description: |
+ Convert ARRI LogC3 Curve (EI800) to Relative Scene Linear
+
+ CLFtransformID: urn:aswf:ocio:transformId:1.0:ARRI:Input:ARRI_LogC3_Curve_EI800_to_Linear:1.0
+ family: Input/ARRI
+ categories: [file-io]
+ encoding: log
+ transform: !
+ name: ARRI LogC3 Curve (EI800) to Relative Scene Linear
+ children:
+ - !