diff --git a/lib/mayaUsd/render/MaterialXGenOgsXml/CMakeLists.txt b/lib/mayaUsd/render/MaterialXGenOgsXml/CMakeLists.txt index 8adbfaba9a..969861743b 100644 --- a/lib/mayaUsd/render/MaterialXGenOgsXml/CMakeLists.txt +++ b/lib/mayaUsd/render/MaterialXGenOgsXml/CMakeLists.txt @@ -4,6 +4,7 @@ target_sources(${PROJECT_NAME} PRIVATE GlslFragmentGenerator.cpp + GlslOcioNodeImpl.cpp OgsFragment.cpp OgsXmlGenerator.cpp Nodes/SurfaceNodeMaya.cpp @@ -12,6 +13,7 @@ target_sources(${PROJECT_NAME} set(HEADERS GlslFragmentGenerator.h + GlslOcioNodeImpl.h OgsFragment.h OgsXmlGenerator.h ) diff --git a/lib/mayaUsd/render/MaterialXGenOgsXml/GlslFragmentGenerator.cpp b/lib/mayaUsd/render/MaterialXGenOgsXml/GlslFragmentGenerator.cpp index 23cd2f9443..1d97be1a30 100644 --- a/lib/mayaUsd/render/MaterialXGenOgsXml/GlslFragmentGenerator.cpp +++ b/lib/mayaUsd/render/MaterialXGenOgsXml/GlslFragmentGenerator.cpp @@ -7,6 +7,7 @@ #include "Nodes/SurfaceNodeMaya.h" +#include #include #include @@ -146,6 +147,10 @@ GlslFragmentGenerator::GlslFragmentGenerator() = "g_lightData"; // Store Maya lights in global non-const _tokenSubstitutions[HW::T_NUM_ACTIVE_LIGHT_SOURCES] = "g_numActiveLightSources"; } + + for (auto&& implName : GlslOcioNodeImpl::getOCIOImplementations()) { + registerImplementation(implName, GlslOcioNodeImpl::create); + } } ShaderGeneratorPtr GlslFragmentGenerator::create() diff --git a/lib/mayaUsd/render/MaterialXGenOgsXml/GlslOcioNodeImpl.cpp b/lib/mayaUsd/render/MaterialXGenOgsXml/GlslOcioNodeImpl.cpp new file mode 100644 index 0000000000..af5630c222 --- /dev/null +++ b/lib/mayaUsd/render/MaterialXGenOgsXml/GlslOcioNodeImpl.cpp @@ -0,0 +1,368 @@ +// +// Copyright 2023 Autodesk +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#include "GlslOcioNodeImpl.h" + +#include "PugiXML/pugixml.hpp" + +#include +#include + +#include +#include +#include + +#include +#include + +MATERIALX_NAMESPACE_BEGIN + +namespace { +// Internal OCIO strings: +constexpr const char OCIO_COLOR3[] = "color3"; +constexpr const char OCIO_COLOR4[] = "color4"; +constexpr const char OCIO_GLSL[] = "GLSL"; +constexpr const char OCIO_IM_PREFIX[] = "IMMayaOCIO_"; +constexpr const char OCIO_ND_PREFIX[] = "NDMayaOCIO_"; + +// Lengths where needed: +constexpr auto OCIO_COLOR3_LEN = sizeof(OCIO_COLOR3) / sizeof(OCIO_COLOR3[0]); +constexpr auto OCIO_GLSL_LEN = sizeof(OCIO_GLSL) / sizeof(OCIO_GLSL[0]); +constexpr auto OCIO_IM_PREFIX_LEN = sizeof(OCIO_IM_PREFIX) / sizeof(OCIO_IM_PREFIX[0]); + +// Expected XML tag names for an OCIO fragment: +constexpr const char TAG_FLOAT3[] = "float3"; +constexpr const char TAG_FRAGMENT[] = "fragment"; +constexpr const char TAG_FUNCTION_NAME[] = "function_name"; +constexpr const char TAG_PROPERTIES[] = "properties"; +constexpr const char TAG_VALUES[] = "values"; +constexpr const char TAG_OUTPUTS[] = "outputs"; +constexpr const char TAG_IMPLEMENTATION[] = "implementation"; +constexpr const char TAG_TEXTURE2[] = "texture2"; +constexpr const char TAG_SOURCE[] = "source"; + +// Lengths where needed: +constexpr auto TAG_TEXTURE2_LEN = sizeof(TAG_TEXTURE2) / sizeof(TAG_TEXTURE2[0]); + +// Expected XML attribute names for an OCIO fragment: +constexpr const char ATTR_NAME[] = "name"; +constexpr const char ATTR_LANGUAGE[] = "language"; +constexpr const char ATTR_VAL[] = "val"; + +std::map knownOCIOFragments; +std::vector knownOCIOImplementations; + +std::string getUntypedNodeDefName(const std::string& nodeName) +{ + return OCIO_ND_PREFIX + nodeName + "_"; +} + +std::string getUntypedImplementationName(const std::string& nodeName) +{ + return OCIO_IM_PREFIX + nodeName + "_"; +} + +const pugi::xml_document& docFromImplementationName(const std::string& implName) +{ + // Would be so much faster with removeprefix and removesuffix: + auto nodeName = implName.substr( + OCIO_IM_PREFIX_LEN - 1, implName.size() - OCIO_IM_PREFIX_LEN - OCIO_COLOR3_LEN + 1); + + auto docIt = knownOCIOFragments.find(nodeName); + if (docIt != knownOCIOFragments.end()) { + return docIt->second; + } + static const pugi::xml_document emptyDoc; + return emptyDoc; +} + +void addOCIONodeDef(DocumentPtr lib, const pugi::xml_document& doc, const std::string& output_type) +{ + std::string nodeName = doc.child(TAG_FRAGMENT).attribute(ATTR_NAME).as_string(); + std::string defName = getUntypedNodeDefName(nodeName) + output_type; + std::string implName = getUntypedImplementationName(nodeName) + output_type; + + auto nodeDef = lib->addNodeDef(defName, "", nodeName); + + auto inputInfo = doc.child(TAG_FRAGMENT).child(TAG_VALUES).child(TAG_FLOAT3); + nodeDef->addInput(inputInfo.attribute(ATTR_NAME).as_string(), output_type); + + auto outputInfo = doc.child(TAG_FRAGMENT).child(TAG_OUTPUTS).child(TAG_FLOAT3); + nodeDef->addOutput(outputInfo.attribute(ATTR_NAME).as_string(), output_type); + + auto implementation = lib->addImplementation(implName); + implementation->setTarget(GlslShaderGenerator::TARGET); + implementation->setNodeDef(nodeDef); + + knownOCIOImplementations.push_back(implName); +} + +class GlslOcioNodeData; +using GlslOcioNodeDataPtr = shared_ptr; +class GlslOcioNodeData : public GenUserData +{ +public: + static const std::string& name() + { + static const string OCIO_DATA = "GlslOcioNodeData"; + return OCIO_DATA; + } + + /// Create and return a new instance. + static GlslOcioNodeDataPtr create() { return std::make_shared(); } + + /// All OCIO code blocks already emitted: + std::set emittedOcioBlocks; +}; +} // namespace + +std::string +GlslOcioNodeImpl::registerOCIOFragment(const std::string& fragName, DocumentPtr mtlxLibrary) +{ + if (knownOCIOFragments.count(fragName)) { + // Make sure the NodeDef are there: + if (!mtlxLibrary->getNodeDef(getUntypedNodeDefName(fragName) + OCIO_COLOR3)) { + addOCIONodeDef(mtlxLibrary, knownOCIOFragments[fragName], OCIO_COLOR3); + } + + if (!mtlxLibrary->getNodeDef(getUntypedNodeDefName(fragName) + OCIO_COLOR4)) { + addOCIONodeDef(mtlxLibrary, knownOCIOFragments[fragName], OCIO_COLOR4); + } + + return getUntypedNodeDefName(fragName); + } + + MHWRender::MRenderer* theRenderer = MHWRender::MRenderer::theRenderer(); + if (!theRenderer) { + return {}; + } + + MHWRender::MFragmentManager* fragmentManager = theRenderer->getFragmentManager(); + if (!fragmentManager) { + return {}; + } + + MString fragText; + if (!fragmentManager->getFragmentXML(fragName.c_str(), fragText)) { + return {}; + } + + pugi::xml_document doc; + pugi::xml_parse_result result = doc.load_string(fragText.asChar()); + + if (!result) { + MString errorMsg = "XML error parsing fragment for "; + errorMsg += fragName.c_str(); + errorMsg += " at character "; + errorMsg += static_cast(result.offset); + errorMsg += ": "; + errorMsg += result.description(); + MGlobal::displayError(errorMsg); + return {}; + } + + // Validate that the fragment structure is 100% as expected. We need the properties, values, + // outputs, and GLSL source to proceed: + auto fragment = doc.child(TAG_FRAGMENT); + if (!fragment) { + return {}; + } + + auto properties = fragment.child(TAG_PROPERTIES); + if (!properties) { + return {}; + } + + auto values = fragment.child(TAG_VALUES); + if (!values) { + return {}; + } + + auto outputs = fragment.child(TAG_OUTPUTS); + if (!outputs) { + return {}; + } + + auto implementations = fragment.child(TAG_IMPLEMENTATION); + if (!implementations) { + return {}; + } + bool hasGLSL = false; + for (auto&& implementation : implementations.children()) { + auto language = implementation.attribute(ATTR_LANGUAGE); + if (std::strncmp(language.as_string(), OCIO_GLSL, OCIO_GLSL_LEN) == 0) { + hasGLSL = true; + break; + } + } + if (!hasGLSL) { + return {}; + } + + // We now have all the data we need. Preserve the info and add our new OCIO NodeDef in the + // library. + addOCIONodeDef(mtlxLibrary, doc, OCIO_COLOR3); + addOCIONodeDef(mtlxLibrary, doc, OCIO_COLOR4); + knownOCIOFragments.emplace(fragName, std::move(doc)); + + return getUntypedNodeDefName(fragName); +} + +const std::vector& GlslOcioNodeImpl::getOCIOImplementations() +{ + return knownOCIOImplementations; +} + +ShaderNodeImplPtr GlslOcioNodeImpl::create() { return std::make_shared(); } + +void GlslOcioNodeImpl::createVariables(const ShaderNode& node, GenContext& context, Shader& shader) + const +{ + const auto& ocioDoc = docFromImplementationName(getName()); + if (ocioDoc.empty()) { + return; + } + + // Need to create texture inputs if required: + for (auto&& property : ocioDoc.child(TAG_FRAGMENT).child(TAG_PROPERTIES).children()) { + if (std::strncmp(property.name(), TAG_TEXTURE2, TAG_TEXTURE2_LEN) == 0) { + std::string samplerName = property.attribute(ATTR_NAME).as_string(); + samplerName += "Sampler"; + addStageUniform( + HW::PUBLIC_UNIFORMS, Type::FILENAME, samplerName, shader.getStage(Stage::PIXEL)); + } + } +} + +void GlslOcioNodeImpl::emitFunctionDefinition( + const ShaderNode& node, + GenContext& context, + ShaderStage& stage) const +{ + if (stage.getName() == Stage::PIXEL) { + const auto& ocioDoc = docFromImplementationName(getName()); + if (ocioDoc.empty()) { + return; + } + + // Since the color3 and color4 implementations share the same code block, we need to make + // sure the definition is only emitted once. + auto pOcioData = context.getUserData(GlslOcioNodeData::name()); + if (!pOcioData) { + context.pushUserData(GlslOcioNodeData::name(), GlslOcioNodeData::create()); + pOcioData = context.getUserData(GlslOcioNodeData::name()); + } + const auto* fragName = ocioDoc.child(TAG_FRAGMENT).attribute(ATTR_NAME).as_string(); + if (pOcioData->emittedOcioBlocks.count(fragName)) { + return; + } + pOcioData->emittedOcioBlocks.insert(fragName); + + auto implementations = ocioDoc.child(TAG_FRAGMENT).child(TAG_IMPLEMENTATION); + if (!implementations) { + return; + } + for (auto&& implementation : implementations.children()) { + auto language = implementation.attribute(ATTR_LANGUAGE); + if (std::strncmp(language.as_string(), OCIO_GLSL, OCIO_GLSL_LEN) == 0) { + stage.addString(implementation.child_value(TAG_SOURCE)); + stage.endLine(false); + return; + } + } + } +} + +void GlslOcioNodeImpl::emitFunctionCall( + const ShaderNode& node, + GenContext& context, + ShaderStage& stage) const +{ + if (stage.getName() == Stage::PIXEL) { + std::string implName = getName(); + const auto& ocioDoc = docFromImplementationName(implName); + if (ocioDoc.empty()) { + return; + } + std::string functionName; + + auto implementations = ocioDoc.child(TAG_FRAGMENT).child(TAG_IMPLEMENTATION); + if (!implementations) { + return; + } + for (auto&& implementation : implementations.children()) { + auto language = implementation.attribute(ATTR_LANGUAGE); + if (std::strncmp(language.as_string(), OCIO_GLSL, OCIO_GLSL_LEN) == 0) { + + functionName + = implementation.child(TAG_FUNCTION_NAME).attribute(ATTR_VAL).as_string(); + break; + } + } + + // Function call for color4: vec4 res = vec4(func(in.rgb, ...), in.a); + // Function call for color3: vec3 res = func(in, ...); + bool isColor4 = implName[implName.size() - 1] == '4'; + + const ShaderGenerator& shadergen = context.getShaderGenerator(); + shadergen.emitLineBegin(stage); + + const ShaderOutput* output = node.getOutput(); + const ShaderInput* colorInput = node.getInput(0); + + shadergen.emitOutput(output, true, false, context, stage); + shadergen.emitString(" =", stage); + + if (isColor4) { + shadergen.emitString(" vec4(", stage); + } + + shadergen.emitString(functionName + "(", stage); + shadergen.emitInput(colorInput, context, stage); + if (isColor4) { + shadergen.emitString(".rgb", stage); + } + + bool skipColorInput = true; + for (auto&& prop : ocioDoc.child(TAG_FRAGMENT).child(TAG_PROPERTIES).children()) { + if (skipColorInput) { + // Skip the color input as it was processed above + skipColorInput = false; + continue; + } + if (std::strncmp(prop.name(), TAG_TEXTURE2, TAG_TEXTURE2_LEN) == 0) { + // Skip texture inputs since we only need the sampler + continue; + } + // Add all other parameters as-is since this will be the uniform parameter name + shadergen.emitString(", ", stage); + shadergen.emitString(prop.attribute(ATTR_NAME).as_string(), stage); + } + + shadergen.emitString(")", stage); + + if (isColor4) { + shadergen.emitString(", ", stage); + shadergen.emitInput(colorInput, context, stage); + shadergen.emitString(".a", stage); + shadergen.emitString(")", stage); + } + + shadergen.emitLineEnd(stage); + } +} + +MATERIALX_NAMESPACE_END diff --git a/lib/mayaUsd/render/MaterialXGenOgsXml/GlslOcioNodeImpl.h b/lib/mayaUsd/render/MaterialXGenOgsXml/GlslOcioNodeImpl.h new file mode 100644 index 0000000000..f9364d636b --- /dev/null +++ b/lib/mayaUsd/render/MaterialXGenOgsXml/GlslOcioNodeImpl.h @@ -0,0 +1,52 @@ +// +// Copyright 2023 Autodesk +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#ifndef MATERIALX_GLSLOCIONODEIMPL_H +#define MATERIALX_GLSLOCIONODEIMPL_H + +/// @file +/// GLSL OCIO node implementation + +#include + +MATERIALX_NAMESPACE_BEGIN + +/// GLSL OCIO node implementation. Takes a Maya OCIO shader fragment and +/// makes it compatible with the shadergen +class GlslOcioNodeImpl : public GlslImplementation +{ +public: + static ShaderNodeImplPtr create(); + + void + createVariables(const ShaderNode& node, GenContext& context, Shader& shader) const override; + + void emitFunctionDefinition(const ShaderNode& node, GenContext& context, ShaderStage& stage) + const override; + + void emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) + const override; + + /// Prepare all data structures to handle an internal Maya OCIO fragment: + static std::string registerOCIOFragment(const std::string& fragName, DocumentPtr mtlxLibrary); + + /// Returns the full list of internal Maya OCIO fragment we can implement: + static const std::vector& getOCIOImplementations(); +}; + +MATERIALX_NAMESPACE_END + +#endif diff --git a/lib/mayaUsd/render/MaterialXGenOgsXml/OgsFragment.cpp b/lib/mayaUsd/render/MaterialXGenOgsXml/OgsFragment.cpp index 3723d61f3e..ab57afc880 100644 --- a/lib/mayaUsd/render/MaterialXGenOgsXml/OgsFragment.cpp +++ b/lib/mayaUsd/render/MaterialXGenOgsXml/OgsFragment.cpp @@ -1,6 +1,7 @@ #include "OgsFragment.h" #include +#include #include #include @@ -496,4 +497,11 @@ std::string OgsFragment::getSpecularEnvKey() return retVal; } +std::string +OgsFragment::registerOCIOFragment(const std::string& fragName, mx::DocumentPtr mtlxLibrary) +{ + // Delegate to the GlslOcioNodeImpl: + return mx::GlslOcioNodeImpl::registerOCIOFragment(fragName, mtlxLibrary); +} + } // namespace MaterialXMaya diff --git a/lib/mayaUsd/render/MaterialXGenOgsXml/OgsFragment.h b/lib/mayaUsd/render/MaterialXGenOgsXml/OgsFragment.h index 575710b73c..8b46360d66 100644 --- a/lib/mayaUsd/render/MaterialXGenOgsXml/OgsFragment.h +++ b/lib/mayaUsd/render/MaterialXGenOgsXml/OgsFragment.h @@ -88,6 +88,10 @@ class OgsFragment /// Get a string that is unique for each environment settings possible: static std::string getSpecularEnvKey(); + /// Prepare all data structures to handle an internal Maya OCIO fragment: + static std::string + registerOCIOFragment(const std::string& fragName, mx::DocumentPtr mtlxLibrary); + private: /// The constructor implementation that public constructors delegate to. template diff --git a/lib/mayaUsd/render/MaterialXGenOgsXml/OgsXmlGenerator.cpp b/lib/mayaUsd/render/MaterialXGenOgsXml/OgsXmlGenerator.cpp index 5a86c7c581..2cb5faba73 100644 --- a/lib/mayaUsd/render/MaterialXGenOgsXml/OgsXmlGenerator.cpp +++ b/lib/mayaUsd/render/MaterialXGenOgsXml/OgsXmlGenerator.cpp @@ -304,6 +304,8 @@ void xmlAddValues(pugi::xml_node& parent, const VariableBlock& block, bool skipL const string OgsXmlGenerator::OUTPUT_NAME = "outColor"; const string OgsXmlGenerator::VP_TRANSPARENCY_NAME = "vp2Transparency"; const string OgsXmlGenerator::SAMPLER_SUFFIX = "_sampler"; +const string OgsXmlGenerator::OCIO_SAMPLER_SUFFIX = "Sampler"; +const string OgsXmlGenerator::OCIO_SAMPLER_PREFIX = "Input_"; bool OgsXmlGenerator::isSamplerName(const string& name) { @@ -313,8 +315,23 @@ bool OgsXmlGenerator::isSamplerName(const string& name) // requires that the texture name be a substring of the sampler name. static const size_t SUFFIX_LENGTH = SAMPLER_SUFFIX.size(); - return name.size() > SUFFIX_LENGTH + 1 && name[0] == '_' - && 0 == name.compare(name.size() - SUFFIX_LENGTH, SUFFIX_LENGTH, SAMPLER_SUFFIX); + if (name.size() > SUFFIX_LENGTH + 1 && name[0] == '_' + && 0 == name.compare(name.size() - SUFFIX_LENGTH, SUFFIX_LENGTH, SAMPLER_SUFFIX)) { + // Regular sampler. + return true; + } + + static const size_t OCIO_SUFFIX_LENGTH = OCIO_SAMPLER_SUFFIX.size(); + if (name.rfind(OCIO_SAMPLER_PREFIX, 0) == 0) { + if (name.size() > OCIO_SUFFIX_LENGTH + 1 + && 0 + == name.compare( + name.size() - OCIO_SUFFIX_LENGTH, OCIO_SUFFIX_LENGTH, OCIO_SAMPLER_SUFFIX)) { + // OCIO sampler. + return true; + } + } + return false; } string OgsXmlGenerator::textureToSamplerName(const string& textureName) @@ -328,9 +345,16 @@ string OgsXmlGenerator::textureToSamplerName(const string& textureName) string OgsXmlGenerator::samplerToTextureName(const string& samplerName) { static const size_t PREFIX_SUFFIX_LENGTH = SAMPLER_SUFFIX.size() + 1; - return isSamplerName(samplerName) - ? samplerName.substr(1, samplerName.size() - PREFIX_SUFFIX_LENGTH) - : ""; + static const size_t OCIO_SUFFIX_LENGTH = OCIO_SAMPLER_PREFIX.size() + 1; + if (isSamplerName(samplerName)) { + if (samplerName[0] == '_') { + return samplerName.substr(1, samplerName.size() - PREFIX_SUFFIX_LENGTH); + } else { + return samplerName.substr(0, samplerName.size() - OCIO_SUFFIX_LENGTH); + } + } + + return {}; } string OgsXmlGenerator::generate( diff --git a/lib/mayaUsd/render/MaterialXGenOgsXml/OgsXmlGenerator.h b/lib/mayaUsd/render/MaterialXGenOgsXml/OgsXmlGenerator.h index 3a35b166f6..2888b34685 100644 --- a/lib/mayaUsd/render/MaterialXGenOgsXml/OgsXmlGenerator.h +++ b/lib/mayaUsd/render/MaterialXGenOgsXml/OgsXmlGenerator.h @@ -39,6 +39,8 @@ class OgsXmlGenerator private: static const string SAMPLER_SUFFIX; + static const string OCIO_SAMPLER_SUFFIX; + static const string OCIO_SAMPLER_PREFIX; static int sUseLightAPI; }; diff --git a/lib/mayaUsd/render/vp2RenderDelegate/material.cpp b/lib/mayaUsd/render/vp2RenderDelegate/material.cpp index 44f8601ac5..b52c944a21 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/material.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/material.cpp @@ -321,6 +321,7 @@ const std::set _mtlxTopoNodeSet = { "switch" }; +#ifndef HAS_COLOR_MANAGEMENT_SUPPORT_API // Maps from a known Maya target color space name to the corresponding color correct category. const std::unordered_map _mtlxColorCorrectCategoryMap = { { "scene-linear Rec.709-sRGB", "MayaND_sRGBtoLinrec709_" }, @@ -333,6 +334,7 @@ const std::unordered_map _mtlxColorCorrectCategoryMap { "scene-linear Rec.2020", "MayaND_sRGBtoLinrec2020_" }, { "scene-linear Rec 2020", "MayaND_sRGBtoLinrec2020_" }, }; +#endif // clang-format on @@ -2603,19 +2605,21 @@ void HdVP2Material::CompiledNetwork::_ApplyVP2Fixes( #ifdef WANT_MATERIALX_BUILD -// MaterialX does offer only limited support for OCIO. We expect something more in a future release, -// but in the meantime we can still add color management nodes to bring textures in one of the five -// colorspaces MayaUSD already supports for UsdPreviewSurface. -// // We will be extremely arbitrary on all MaterialX image and tiledimage nodes and assume that color3 // and color4 require color management based on the file extension. // // For image nodes connected to a fileTexture post-processor, we will also check for the colorSpace -// attribute and respect requests for Raw. +// attribute and respect requests. TfToken _RequiresColorManagement( - const HdMaterialNode2& node, - const HdMaterialNode2& upstream, + const HdMaterialNode2& node, + const HdMaterialNode2& upstream, +#ifdef HAS_COLOR_MANAGEMENT_SUPPORT_API + const HdMaterialNetwork2& inNet, + TfToken& cmInputName, + TfToken& cmOutputName) +#else const HdMaterialNetwork2& inNet) +#endif { const mx::NodeDefPtr nodeDef = _GetMaterialXData()._mtlxLibrary->getNodeDef(node.nodeTypeId); const mx::NodeDefPtr upstreamDef @@ -2647,37 +2651,97 @@ TfToken _RequiresColorManagement( return {}; } - SdfAssetPath filenameVal; - for (const auto& inputName : fileInputs) { - auto itFileParam = upstream.parameters.find(inputName); - if (itFileParam != upstream.parameters.end() - && itFileParam->second.IsHolding()) { - filenameVal = itFileParam->second.Get(); - break; + // Look for explicit color spaces first: + std::string sourceColorSpace; + static const auto _knownColorSpaceAttrs + = std::vector { _tokens->sourceColorSpace, _mtlxTokens->colorSpace }; + static const auto _mxFindColorSpace = [&sourceColorSpace](const auto& n) { + if (!sourceColorSpace.empty()) { + return; } + + for (auto&& csAttrName : _knownColorSpaceAttrs) { + auto paramIt = n.parameters.find(csAttrName); + if (paramIt != n.parameters.end()) { + const VtValue& val = paramIt->second; + if (val.IsHolding()) { + sourceColorSpace = val.UncheckedGet().GetString(); + return; + } else if (val.IsHolding()) { + sourceColorSpace = val.UncheckedGet(); + return; + } + } + } + }; + // Can be on the upstream node (UsdUVTexture): + _mxFindColorSpace(upstream); + // Can sometimes be on node (MayaND_fileTexture): + _mxFindColorSpace(node); + // To be updated as soon as color space metadata gets transmitted through Hydra. + + if (sourceColorSpace.empty() || sourceColorSpace == _tokens->auto_) { + SdfAssetPath filenameVal; + for (const auto& inputName : fileInputs) { + auto itFileParam = upstream.parameters.find(inputName); + if (itFileParam != upstream.parameters.end() + && itFileParam->second.IsHolding()) { + filenameVal = itFileParam->second.Get(); + break; + } + } + + const std::string& resolvedPath = filenameVal.GetResolvedPath(); + if (resolvedPath.empty()) { + return {}; + } + const std::string& assetPath = filenameVal.GetAssetPath(); + MString colorRuleCmd; + colorRuleCmd.format( + "colorManagementFileRules -evaluate \"^1s\";", + (!resolvedPath.empty() ? resolvedPath : assetPath).c_str()); + const MString colorSpaceByRule(MGlobal::executeCommandStringResult(colorRuleCmd)); + sourceColorSpace = colorSpaceByRule.asChar(); } - const std::string& resolvedPath = filenameVal.GetResolvedPath(); - if (resolvedPath.empty()) { + if (sourceColorSpace == "Raw" || sourceColorSpace == "raw") { return {}; } - const std::string& assetPath = filenameVal.GetAssetPath(); - MString colorRuleCmd; - colorRuleCmd.format( - "colorManagementFileRules -evaluate \"^1s\";", - (!resolvedPath.empty() ? resolvedPath : assetPath).c_str()); - const MString colorSpaceByRule(MGlobal::executeCommandStringResult(colorRuleCmd)); - if (colorSpaceByRule != _tokens->sRGB.GetText()) { - // We only know how to handle sRGB source color space. + +#ifdef HAS_COLOR_MANAGEMENT_SUPPORT_API + MHWRender::MRenderer* theRenderer = MHWRender::MRenderer::theRenderer(); + if (!theRenderer) { return {}; } - // If we ended up here, then a color management node was required: - if (colorOutput->getType().back() == '3') { - return _mtlxTokens->color3; - } else { - return _mtlxTokens->color4; + MHWRender::MFragmentManager* fragmentManager = theRenderer->getFragmentManager(); + if (!fragmentManager) { + return {}; + } + + MString fragName, fragInput, fragOutput; + if (fragmentManager->getColorManagementFragmentInfo( + sourceColorSpace.c_str(), fragName, fragInput, fragOutput)) { + std::string untypedNodeDefId = MaterialXMaya::OgsFragment::registerOCIOFragment( + fragName.asChar(), _GetMaterialXData()._mtlxLibrary); + if (!untypedNodeDefId.empty()) { + cmInputName = TfToken(fragInput.asChar()); + cmOutputName = TfToken(fragOutput.asChar()); + return TfToken((untypedNodeDefId + colorOutput->getType())); + } + } +#else + if (sourceColorSpace == _tokens->sRGB.GetString()) { + // Non-OCIO code only knows how to handle sRGB source color space. + // If we ended up here, then a color management node was required: + if (colorOutput->getType().back() == '3') { + return _mtlxTokens->color3; + } else { + return _mtlxTokens->color4; + } } +#endif + return {}; } void HdVP2Material::CompiledNetwork::_ApplyMtlxVP2Fixes( @@ -2749,34 +2813,48 @@ void HdVP2Material::CompiledNetwork::_ApplyMtlxVP2Fixes( for (const auto& cnxPair : inNode.inputConnections) { std::vector outCnx; for (const auto& c : cnxPair.second) { + TfToken cmNodeDefId, cmInputName, cmOutputName; +#ifdef HAS_COLOR_MANAGEMENT_SUPPORT_API + cmNodeDefId = _RequiresColorManagement( + inNode, + inNet.nodes.find(c.upstreamNode)->second, + inNet, + cmInputName, + cmOutputName); +#else TfToken colorManagementType = _RequiresColorManagement( inNode, inNet.nodes.find(c.upstreamNode)->second, inNet); - if (!colorManagementType.IsEmpty() && colorManagementCategory.empty()) { - // Query the user pref: - MString mayaWorkingColorSpace = MGlobal::executeCommandStringResult( - "colorManagementPrefs -q -renderingSpaceName"); - - auto categoryIt - = _mtlxColorCorrectCategoryMap.find(mayaWorkingColorSpace.asChar()); - if (categoryIt != _mtlxColorCorrectCategoryMap.end()) { - colorManagementCategory = categoryIt->second; + if (!colorManagementType.IsEmpty()) { + if (colorManagementCategory.empty()) { + // Query the user pref: + MString mayaWorkingColorSpace = MGlobal::executeCommandStringResult( + "colorManagementPrefs -q -renderingSpaceName"); + + auto categoryIt + = _mtlxColorCorrectCategoryMap.find(mayaWorkingColorSpace.asChar()); + if (categoryIt != _mtlxColorCorrectCategoryMap.end()) { + colorManagementCategory = categoryIt->second; + } } + cmNodeDefId + = TfToken(colorManagementCategory + colorManagementType.GetString()); + cmInputName = _mtlxTokens->in; + cmOutputName = _mtlxTokens->out; } - - if (colorManagementType.IsEmpty() || colorManagementCategory.empty()) { +#endif + if (cmNodeDefId.IsEmpty()) { outCnx.emplace_back(HdMaterialConnection2 { _nodePathMap[c.upstreamNode], c.upstreamOutputName }); } else { // Insert color management node: HdMaterialNode2 ccNode; - ccNode.nodeTypeId - = TfToken(colorManagementCategory + colorManagementType.GetString()); + ccNode.nodeTypeId = cmNodeDefId; HdMaterialConnection2 ccCnx { _nodePathMap[c.upstreamNode], c.upstreamOutputName }; - ccNode.inputConnections.insert({ _mtlxTokens->in, { ccCnx } }); + ccNode.inputConnections.insert({ cmInputName, { ccCnx } }); SdfPath ccPath = ngBase.AppendChild(TfToken("N" + std::to_string(nodeCounter++))); - outCnx.emplace_back(HdMaterialConnection2 { ccPath, _mtlxTokens->out }); + outCnx.emplace_back(HdMaterialConnection2 { ccPath, cmOutputName }); outNet.nodes.emplace(ccPath, std::move(ccNode)); } } @@ -2851,7 +2929,7 @@ MHWRender::MShaderInstance* HdVP2Material::CompiledNetwork::_CreateMaterialXShad _GetMaterialXData()._mtlxLibrary); #else std::set hdTextureNodes; - mx::StringMap mxHdTextureMap; // Mx-Hd texture name counterparts + mx::StringMap mxHdTextureMap; // Mx-Hd texture name counterparts mtlxDoc = HdMtlxCreateMtlxDocumentFromHdNetwork( fixedNetwork, *surfTerminal, // MaterialX HdNode diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt b/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt index a37d7ab110..765d95281f 100644 --- a/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt +++ b/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt @@ -63,6 +63,7 @@ if (CMAKE_WANT_MATERIALX_BUILD) "LD_LIBRARY_PATH=${ADDITIONAL_LD_LIBRARY_PATH}" "MAYA_LIGHTAPI_VERSION=${MAYA_LIGHTAPI_VERSION}" "MATERIALX_VERSION=${MaterialX_VERSION}" + "MAYA_HAS_COLOR_MANAGEMENT_SUPPORT_API=${MAYA_HAS_COLOR_MANAGEMENT_SUPPORT_API}" # Maya uses a very old version of GLEW, so we need support for # pre-loading a newer version from elsewhere. diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateMaterialXTest/baseline/MayaSurfaces_flat_ocio_render.png b/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateMaterialXTest/baseline/MayaSurfaces_flat_ocio_render.png new file mode 100644 index 0000000000..a18aeea8ca Binary files /dev/null and b/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateMaterialXTest/baseline/MayaSurfaces_flat_ocio_render.png differ diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateMaterialXTest/baseline/MayaSurfaces_ocio_render.png b/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateMaterialXTest/baseline/MayaSurfaces_ocio_render.png new file mode 100644 index 0000000000..18c142596d Binary files /dev/null and b/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateMaterialXTest/baseline/MayaSurfaces_ocio_render.png differ diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateMaterialXTest/baseline/OCIO_Integration.png b/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateMaterialXTest/baseline/OCIO_Integration.png new file mode 100644 index 0000000000..88ce77e5e0 Binary files /dev/null and b/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateMaterialXTest/baseline/OCIO_Integration.png differ diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/testVP2RenderDelegateMaterialX.py b/test/lib/mayaUsd/render/vp2RenderDelegate/testVP2RenderDelegateMaterialX.py index b978f2c57f..f9da0731c7 100644 --- a/test/lib/mayaUsd/render/vp2RenderDelegate/testVP2RenderDelegateMaterialX.py +++ b/test/lib/mayaUsd/render/vp2RenderDelegate/testVP2RenderDelegateMaterialX.py @@ -87,16 +87,32 @@ def testMayaSurfaces(self): cmds.file(force=True, new=True) cmds.move(6, -6, 6, 'persp') cmds.rotate(60, 0, 45, 'persp') - self._StartTest('MayaSurfaces') + + # OCIO will clamp colors before converting them, giving slightly different + # results for the triplanar projection: + suffix = "" + if os.getenv('MAYA_HAS_COLOR_MANAGEMENT_SUPPORT_API', 'FALSE') == 'TRUE': + suffix = "_ocio" + + mayaUtils.loadPlugin("mayaUsdPlugin") + panel = mayaUtils.activeModelPanel() + cmds.modelEditor(panel, edit=True, displayTextures=True) + + testFile = testUtils.getTestScene("MaterialX", "MayaSurfaces.usda") + mayaUtils.createProxyFromFile(testFile) + globalSelection = ufe.GlobalSelection.get() + globalSelection.clear() + self.assertSnapshotClose('%s_render.png' % ("MayaSurfaces" + suffix)) # Flat shading requires V3 lighting API: if int(os.getenv("MAYA_LIGHTAPI_VERSION")) >= 3: panel = mayaUtils.activeModelPanel() cmds.modelEditor(panel, edit=True, displayLights="flat") - self._StartTest('MayaSurfaces_flat') + self.assertSnapshotClose('%s_render.png' % ('MayaSurfaces_flat' + suffix)) cmds.modelEditor(panel, edit=True, displayLights="default") - self._StartTest('MayaSurfaces_untextured', False) + cmds.modelEditor(panel, edit=True, displayTextures=False) + self.assertSnapshotClose('MayaSurfaces_untextured_render.png') def testResetToDefaultValues(self): """When deleting an authored attribute, make sure the shader reverts to the default unauthored value.""" @@ -232,6 +248,42 @@ def testMayaNodesExport(self): cmds.setAttr("hardwareRenderingGlobals.multiSampleEnable", True) + @unittest.skipUnless(os.getenv('MAYA_HAS_COLOR_MANAGEMENT_SUPPORT_API', 'FALSE') == 'TRUE', 'Test requires OCIO API in Maya SDK.') + def testOCIOIntegration(self): + """Test that we can color manage using Maya OCIO fragments.""" + cmds.file(new=True, force=True) + # This config has file rules for all the new textures: + configFile = testUtils.getTestScene("MaterialX", "studio-config-v1.0.0_aces-v1.3_ocio-v2.0.ocio") + cmds.colorManagementPrefs(edit=True, configFilePath=configFile) + + # Import the Maya data so we can compare: + mayaFile = testUtils.getTestScene("MaterialX", "color_management.ma") + cmds.file(mayaFile, i=True, type="mayaAscii") + + # And a few USD stages that have USD and MaterialX data in need of color management: + usdCases = (("USD", 0.51), ("MTLX", -0.51), ("MTLX_Raw", -1.02)) + for suffix, offset in usdCases: + testFile = testUtils.getTestScene("MaterialX", "color_management_{}.usda".format(suffix)) + proxyNode = mayaUtils.createProxyFromFile(testFile)[0] + + proxyXform = "|".join(proxyNode.split("|")[:-1]) + cmds.setAttr(proxyXform + ".translateZ", offset) + cmds.setAttr(proxyXform + ".scaleX", 0.5) + + # Position our camera: + cmds.setAttr("persp.translateX", 0) + cmds.setAttr("persp.translateY", 4) + cmds.setAttr("persp.translateZ", -0.25) + cmds.setAttr("persp.rotateX", -90) + cmds.setAttr("persp.rotateY", 0) + cmds.setAttr("persp.rotateZ", 0) + + # Turn on textured display and focus in on the subject + panel = mayaUtils.activeModelPanel() + cmds.modelEditor(panel, e=1, displayTextures=1) + + # Snapshot and assert similarity + self.assertSnapshotClose('OCIO_Integration.png') if __name__ == '__main__': fixturesUtils.runTests(globals()) diff --git a/test/testSamples/MaterialX/color_management.ma b/test/testSamples/MaterialX/color_management.ma new file mode 100644 index 0000000000..89191e8c7c --- /dev/null +++ b/test/testSamples/MaterialX/color_management.ma @@ -0,0 +1,776 @@ +//Maya ASCII 2025ff01 scene +//Name: color_management.ma +//Last modified: Tue, Jun 13, 2023 12:02:19 PM +//Codeset: 1252 +requires maya "2025ff01"; +requires -nodeType "mayaUsdLayerManager" -nodeType "usdPreviewSurface" -dataType "pxrUsdStageData" + "mayaUsdPlugin" "0.24.0"; +currentUnit -l centimeter -a degree -t film; +fileInfo "application" "maya"; +fileInfo "product" "Maya 2024"; +fileInfo "version" "Preview Release 145"; +fileInfo "cutIdentifier" "202306081536-000000"; +fileInfo "osv" "Windows 11 Pro v2009 (Build: 22621)"; +fileInfo "UUID" "4D41F00E-4F15-2799-1925-D9ADBADFFBCB"; +createNode transform -s -n "persp"; + rename -uid "AF02B90C-4B39-AECA-F999-A090C70FA9E5"; + setAttr ".v" no; + setAttr ".t" -type "double3" 0 7 0 ; + setAttr ".r" -type "double3" -90 0 0 ; +createNode camera -s -n "perspShape" -p "persp"; + rename -uid "2D2584B4-4037-7C13-6C83-D7BA9291CF6B"; + setAttr -k off ".v" no; + setAttr ".fl" 34.999999999999993; + setAttr ".coi" 7.6061802350769963; + setAttr ".imn" -type "string" "persp"; + setAttr ".den" -type "string" "persp_depth"; + setAttr ".man" -type "string" "persp_mask"; + setAttr ".hc" -type "string" "viewSet -p %camera"; +createNode transform -s -n "top"; + rename -uid "77DAF787-4D73-F8D2-EC5C-0698D68BADAE"; + setAttr ".v" no; + setAttr ".t" -type "double3" 0 1000.1 0 ; + setAttr ".r" -type "double3" -90 0 0 ; +createNode camera -s -n "topShape" -p "top"; + rename -uid "61F2192A-488B-C717-D9F5-8A83C53EA6B2"; + setAttr -k off ".v" no; + setAttr ".rnd" no; + setAttr ".coi" 1000.1; + setAttr ".ow" 30; + setAttr ".imn" -type "string" "top"; + setAttr ".den" -type "string" "top_depth"; + setAttr ".man" -type "string" "top_mask"; + setAttr ".hc" -type "string" "viewSet -t %camera"; + setAttr ".o" yes; +createNode transform -s -n "front"; + rename -uid "59850281-4E09-D027-B3E3-F8A0B7A1CD8A"; + setAttr ".v" no; + setAttr ".t" -type "double3" 0 0 1000.1 ; +createNode camera -s -n "frontShape" -p "front"; + rename -uid "C6EB0F69-48B3-635A-7A48-6DAD33C1E5D4"; + setAttr -k off ".v" no; + setAttr ".rnd" no; + setAttr ".coi" 1000.1; + setAttr ".ow" 30; + setAttr ".imn" -type "string" "front"; + setAttr ".den" -type "string" "front_depth"; + setAttr ".man" -type "string" "front_mask"; + setAttr ".hc" -type "string" "viewSet -f %camera"; + setAttr ".o" yes; +createNode transform -s -n "side"; + rename -uid "A0C3D175-449E-7B5B-D899-FF9B17C13E61"; + setAttr ".v" no; + setAttr ".t" -type "double3" 1000.1 0 0 ; + setAttr ".r" -type "double3" 0 90 0 ; +createNode camera -s -n "sideShape" -p "side"; + rename -uid "66235CFF-4444-AC8C-8342-11BCFC26C626"; + setAttr -k off ".v" no; + setAttr ".rnd" no; + setAttr ".coi" 1000.1; + setAttr ".ow" 30; + setAttr ".imn" -type "string" "side"; + setAttr ".den" -type "string" "side_depth"; + setAttr ".man" -type "string" "side_mask"; + setAttr ".hc" -type "string" "viewSet -s %camera"; + setAttr ".o" yes; +createNode transform -n "group1"; + rename -uid "1CB7CECE-45AB-888D-2BA4-DCAF8B3A8459"; + setAttr ".s" -type "double3" 0.5 1 1 ; +createNode transform -n "pPlane1" -p "group1"; + rename -uid "AE70271D-4BF6-3649-B0CF-9D869235C011"; + setAttr ".t" -type "double3" -3.03 0 0 ; +createNode mesh -n "pPlaneShape1" -p "pPlane1"; + rename -uid "C398501F-4DFE-B24A-0751-4D83FAB0961E"; + setAttr -k off ".v"; + setAttr ".vir" yes; + setAttr ".vif" yes; + setAttr ".uvst[0].uvsn" -type "string" "map1"; + setAttr ".cuvs" -type "string" "map1"; + setAttr ".dcc" -type "string" "Ambient+Diffuse"; + setAttr ".covm[0]" 0 1 1; + setAttr ".cdvm[0]" 0 1 1; +createNode transform -n "pPlane2" -p "group1"; + rename -uid "AB193516-44CA-7673-05AC-5B826E3434E4"; + setAttr ".t" -type "double3" -2.02 0 0 ; +createNode mesh -n "pPlaneShape2" -p "pPlane2"; + rename -uid "5B673453-4986-DCDA-59F6-2089997772C9"; + setAttr -k off ".v"; + setAttr ".vir" yes; + setAttr ".vif" yes; + setAttr -s 5 ".gtag"; + setAttr ".gtag[0].gtagnm" -type "string" "back"; + setAttr ".gtag[0].gtagcmp" -type "componentList" 1 "e[3]"; + setAttr ".gtag[1].gtagnm" -type "string" "front"; + setAttr ".gtag[1].gtagcmp" -type "componentList" 1 "e[0]"; + setAttr ".gtag[2].gtagnm" -type "string" "left"; + setAttr ".gtag[2].gtagcmp" -type "componentList" 1 "e[1]"; + setAttr ".gtag[3].gtagnm" -type "string" "right"; + setAttr ".gtag[3].gtagcmp" -type "componentList" 1 "e[2]"; + setAttr ".gtag[4].gtagnm" -type "string" "rim"; + setAttr ".gtag[4].gtagcmp" -type "componentList" 1 "e[0:3]"; + setAttr ".uvst[0].uvsn" -type "string" "map1"; + setAttr -s 4 ".uvst[0].uvsp[0:3]" -type "float2" 0 0 1 0 0 1 1 1; + setAttr ".cuvs" -type "string" "map1"; + setAttr ".dcc" -type "string" "Ambient+Diffuse"; + setAttr ".covm[0]" 0 1 1; + setAttr ".cdvm[0]" 0 1 1; + setAttr -s 4 ".vt[0:3]" -0.5 0 0.25 0.5 0 0.25 -0.5 0 -0.25 0.5 0 -0.25; + setAttr -s 4 ".ed[0:3]" 0 1 0 0 2 0 1 3 0 2 3 0; + setAttr -ch 4 ".fc[0]" -type "polyFaces" + f 4 0 2 -4 -2 + mu 0 4 0 1 3 2; + setAttr ".cd" -type "dataPolyComponent" Index_Data Edge 0 ; + setAttr ".cvd" -type "dataPolyComponent" Index_Data Vertex 0 ; + setAttr ".pd[0]" -type "dataPolyComponent" Index_Data UV 0 ; + setAttr ".hfd" -type "dataPolyComponent" Index_Data Face 0 ; +createNode transform -n "pPlane3" -p "group1"; + rename -uid "6D67039E-491D-A8F4-8B33-10B047DA05F4"; + setAttr ".t" -type "double3" -1.01 0 0 ; +createNode mesh -n "pPlaneShape3" -p "pPlane3"; + rename -uid "21B1062A-4F68-B2F8-C9A6-4A8DC5A70266"; + setAttr -k off ".v"; + setAttr ".vir" yes; + setAttr ".vif" yes; + setAttr -s 5 ".gtag"; + setAttr ".gtag[0].gtagnm" -type "string" "back"; + setAttr ".gtag[0].gtagcmp" -type "componentList" 1 "e[3]"; + setAttr ".gtag[1].gtagnm" -type "string" "front"; + setAttr ".gtag[1].gtagcmp" -type "componentList" 1 "e[0]"; + setAttr ".gtag[2].gtagnm" -type "string" "left"; + setAttr ".gtag[2].gtagcmp" -type "componentList" 1 "e[1]"; + setAttr ".gtag[3].gtagnm" -type "string" "right"; + setAttr ".gtag[3].gtagcmp" -type "componentList" 1 "e[2]"; + setAttr ".gtag[4].gtagnm" -type "string" "rim"; + setAttr ".gtag[4].gtagcmp" -type "componentList" 1 "e[0:3]"; + setAttr ".uvst[0].uvsn" -type "string" "map1"; + setAttr -s 4 ".uvst[0].uvsp[0:3]" -type "float2" 0 0 1 0 0 1 1 1; + setAttr ".cuvs" -type "string" "map1"; + setAttr ".dcc" -type "string" "Ambient+Diffuse"; + setAttr ".covm[0]" 0 1 1; + setAttr ".cdvm[0]" 0 1 1; + setAttr -s 4 ".vt[0:3]" -0.5 0 0.25 0.5 0 0.25 -0.5 0 -0.25 0.5 0 -0.25; + setAttr -s 4 ".ed[0:3]" 0 1 0 0 2 0 1 3 0 2 3 0; + setAttr -ch 4 ".fc[0]" -type "polyFaces" + f 4 0 2 -4 -2 + mu 0 4 0 1 3 2; + setAttr ".cd" -type "dataPolyComponent" Index_Data Edge 0 ; + setAttr ".cvd" -type "dataPolyComponent" Index_Data Vertex 0 ; + setAttr ".pd[0]" -type "dataPolyComponent" Index_Data UV 0 ; + setAttr ".hfd" -type "dataPolyComponent" Index_Data Face 0 ; +createNode transform -n "pPlane4" -p "group1"; + rename -uid "9FDC4121-416B-D43A-0E8B-B193BA6BCA60"; +createNode mesh -n "pPlaneShape4" -p "pPlane4"; + rename -uid "A6F1CD6D-48B1-E73C-7FC0-9CA8070F91EE"; + setAttr -k off ".v"; + setAttr ".vir" yes; + setAttr ".vif" yes; + setAttr -s 5 ".gtag"; + setAttr ".gtag[0].gtagnm" -type "string" "back"; + setAttr ".gtag[0].gtagcmp" -type "componentList" 1 "e[3]"; + setAttr ".gtag[1].gtagnm" -type "string" "front"; + setAttr ".gtag[1].gtagcmp" -type "componentList" 1 "e[0]"; + setAttr ".gtag[2].gtagnm" -type "string" "left"; + setAttr ".gtag[2].gtagcmp" -type "componentList" 1 "e[1]"; + setAttr ".gtag[3].gtagnm" -type "string" "right"; + setAttr ".gtag[3].gtagcmp" -type "componentList" 1 "e[2]"; + setAttr ".gtag[4].gtagnm" -type "string" "rim"; + setAttr ".gtag[4].gtagcmp" -type "componentList" 1 "e[0:3]"; + setAttr ".uvst[0].uvsn" -type "string" "map1"; + setAttr -s 4 ".uvst[0].uvsp[0:3]" -type "float2" 0 0 1 0 0 1 1 1; + setAttr ".cuvs" -type "string" "map1"; + setAttr ".dcc" -type "string" "Ambient+Diffuse"; + setAttr ".covm[0]" 0 1 1; + setAttr ".cdvm[0]" 0 1 1; + setAttr -s 4 ".vt[0:3]" -0.5 0 0.25 0.5 0 0.25 -0.5 0 -0.25 0.5 0 -0.25; + setAttr -s 4 ".ed[0:3]" 0 1 0 0 2 0 1 3 0 2 3 0; + setAttr -ch 4 ".fc[0]" -type "polyFaces" + f 4 0 2 -4 -2 + mu 0 4 0 1 3 2; + setAttr ".cd" -type "dataPolyComponent" Index_Data Edge 0 ; + setAttr ".cvd" -type "dataPolyComponent" Index_Data Vertex 0 ; + setAttr ".pd[0]" -type "dataPolyComponent" Index_Data UV 0 ; + setAttr ".hfd" -type "dataPolyComponent" Index_Data Face 0 ; +createNode transform -n "pPlane5" -p "group1"; + rename -uid "2627DB82-4A7D-6F22-16B2-5EA8068A2DFD"; + setAttr ".t" -type "double3" 1.01 0 0 ; +createNode mesh -n "pPlaneShape5" -p "pPlane5"; + rename -uid "3EA41FF5-4133-144E-50E6-7CB82291854B"; + setAttr -k off ".v"; + setAttr ".vir" yes; + setAttr ".vif" yes; + setAttr -s 5 ".gtag"; + setAttr ".gtag[0].gtagnm" -type "string" "back"; + setAttr ".gtag[0].gtagcmp" -type "componentList" 1 "e[3]"; + setAttr ".gtag[1].gtagnm" -type "string" "front"; + setAttr ".gtag[1].gtagcmp" -type "componentList" 1 "e[0]"; + setAttr ".gtag[2].gtagnm" -type "string" "left"; + setAttr ".gtag[2].gtagcmp" -type "componentList" 1 "e[1]"; + setAttr ".gtag[3].gtagnm" -type "string" "right"; + setAttr ".gtag[3].gtagcmp" -type "componentList" 1 "e[2]"; + setAttr ".gtag[4].gtagnm" -type "string" "rim"; + setAttr ".gtag[4].gtagcmp" -type "componentList" 1 "e[0:3]"; + setAttr ".uvst[0].uvsn" -type "string" "map1"; + setAttr -s 4 ".uvst[0].uvsp[0:3]" -type "float2" 0 0 1 0 0 1 1 1; + setAttr ".cuvs" -type "string" "map1"; + setAttr ".dcc" -type "string" "Ambient+Diffuse"; + setAttr ".covm[0]" 0 1 1; + setAttr ".cdvm[0]" 0 1 1; + setAttr -s 4 ".vt[0:3]" -0.5 0 0.25 0.5 0 0.25 -0.5 0 -0.25 0.5 0 -0.25; + setAttr -s 4 ".ed[0:3]" 0 1 0 0 2 0 1 3 0 2 3 0; + setAttr -ch 4 ".fc[0]" -type "polyFaces" + f 4 0 2 -4 -2 + mu 0 4 0 1 3 2; + setAttr ".cd" -type "dataPolyComponent" Index_Data Edge 0 ; + setAttr ".cvd" -type "dataPolyComponent" Index_Data Vertex 0 ; + setAttr ".pd[0]" -type "dataPolyComponent" Index_Data UV 0 ; + setAttr ".hfd" -type "dataPolyComponent" Index_Data Face 0 ; +createNode transform -n "pPlane6" -p "group1"; + rename -uid "5AB53EC0-4AD6-BB1F-9066-23951B5E2A83"; + setAttr ".t" -type "double3" 2.02 0 0 ; +createNode mesh -n "pPlaneShape6" -p "pPlane6"; + rename -uid "CC781739-4C03-B969-350A-979349A56060"; + setAttr -k off ".v"; + setAttr ".vir" yes; + setAttr ".vif" yes; + setAttr -s 5 ".gtag"; + setAttr ".gtag[0].gtagnm" -type "string" "back"; + setAttr ".gtag[0].gtagcmp" -type "componentList" 1 "e[3]"; + setAttr ".gtag[1].gtagnm" -type "string" "front"; + setAttr ".gtag[1].gtagcmp" -type "componentList" 1 "e[0]"; + setAttr ".gtag[2].gtagnm" -type "string" "left"; + setAttr ".gtag[2].gtagcmp" -type "componentList" 1 "e[1]"; + setAttr ".gtag[3].gtagnm" -type "string" "right"; + setAttr ".gtag[3].gtagcmp" -type "componentList" 1 "e[2]"; + setAttr ".gtag[4].gtagnm" -type "string" "rim"; + setAttr ".gtag[4].gtagcmp" -type "componentList" 1 "e[0:3]"; + setAttr ".uvst[0].uvsn" -type "string" "map1"; + setAttr -s 4 ".uvst[0].uvsp[0:3]" -type "float2" 0 0 1 0 0 1 1 1; + setAttr ".cuvs" -type "string" "map1"; + setAttr ".dcc" -type "string" "Ambient+Diffuse"; + setAttr ".covm[0]" 0 1 1; + setAttr ".cdvm[0]" 0 1 1; + setAttr -s 4 ".vt[0:3]" -0.5 0 0.25 0.5 0 0.25 -0.5 0 -0.25 0.5 0 -0.25; + setAttr -s 4 ".ed[0:3]" 0 1 0 0 2 0 1 3 0 2 3 0; + setAttr -ch 4 ".fc[0]" -type "polyFaces" + f 4 0 2 -4 -2 + mu 0 4 0 1 3 2; + setAttr ".cd" -type "dataPolyComponent" Index_Data Edge 0 ; + setAttr ".cvd" -type "dataPolyComponent" Index_Data Vertex 0 ; + setAttr ".pd[0]" -type "dataPolyComponent" Index_Data UV 0 ; + setAttr ".hfd" -type "dataPolyComponent" Index_Data Face 0 ; +createNode transform -n "pPlane7" -p "group1"; + rename -uid "7369C83F-4088-B57A-3AEB-52A262DF2692"; + setAttr ".t" -type "double3" 3.03 0 0 ; +createNode mesh -n "pPlaneShape7" -p "pPlane7"; + rename -uid "11E83C77-406B-2983-B8A2-5983379C99DA"; + setAttr -k off ".v"; + setAttr ".vir" yes; + setAttr ".vif" yes; + setAttr -s 5 ".gtag"; + setAttr ".gtag[0].gtagnm" -type "string" "back"; + setAttr ".gtag[0].gtagcmp" -type "componentList" 1 "e[3]"; + setAttr ".gtag[1].gtagnm" -type "string" "front"; + setAttr ".gtag[1].gtagcmp" -type "componentList" 1 "e[0]"; + setAttr ".gtag[2].gtagnm" -type "string" "left"; + setAttr ".gtag[2].gtagcmp" -type "componentList" 1 "e[1]"; + setAttr ".gtag[3].gtagnm" -type "string" "right"; + setAttr ".gtag[3].gtagcmp" -type "componentList" 1 "e[2]"; + setAttr ".gtag[4].gtagnm" -type "string" "rim"; + setAttr ".gtag[4].gtagcmp" -type "componentList" 1 "e[0:3]"; + setAttr ".uvst[0].uvsn" -type "string" "map1"; + setAttr -s 4 ".uvst[0].uvsp[0:3]" -type "float2" 0 0 1 0 0 1 1 1; + setAttr ".cuvs" -type "string" "map1"; + setAttr ".dcc" -type "string" "Ambient+Diffuse"; + setAttr ".covm[0]" 0 1 1; + setAttr ".cdvm[0]" 0 1 1; + setAttr -s 4 ".vt[0:3]" -0.5 0 0.25 0.5 0 0.25 -0.5 0 -0.25 0.5 0 -0.25; + setAttr -s 4 ".ed[0:3]" 0 1 0 0 2 0 1 3 0 2 3 0; + setAttr -ch 4 ".fc[0]" -type "polyFaces" + f 4 0 2 -4 -2 + mu 0 4 0 1 3 2; + setAttr ".cd" -type "dataPolyComponent" Index_Data Edge 0 ; + setAttr ".cvd" -type "dataPolyComponent" Index_Data Vertex 0 ; + setAttr ".pd[0]" -type "dataPolyComponent" Index_Data UV 0 ; + setAttr ".hfd" -type "dataPolyComponent" Index_Data Face 0 ; +createNode lightLinker -s -n "lightLinker1"; + rename -uid "B4B8E36A-46A7-C141-37D7-DA9612789DFD"; + setAttr -s 9 ".lnk"; + setAttr -s 9 ".slnk"; +createNode shapeEditorManager -n "shapeEditorManager"; + rename -uid "634C62CB-4341-B675-E3F6-13A93911FC48"; +createNode poseInterpolatorManager -n "poseInterpolatorManager"; + rename -uid "BADCF7EC-4A1F-49B5-3676-08B9456C86F9"; +createNode displayLayerManager -n "layerManager"; + rename -uid "DDD1C4AF-4FEE-AC27-CB67-F49404781F29"; +createNode displayLayer -n "defaultLayer"; + rename -uid "4B810EDD-4655-6320-E162-5D908D7C4221"; + setAttr ".ufem" -type "stringArray" 0 ; +createNode renderLayerManager -n "renderLayerManager"; + rename -uid "DF64D0EF-4CEB-AA5D-86C2-42BEB5C67CC4"; +createNode renderLayer -n "defaultRenderLayer"; + rename -uid "F1510015-4BEC-B339-E3E8-039BDF8C97D8"; + setAttr ".g" yes; +createNode polyPlane -n "polyPlane1"; + rename -uid "AD9534EE-4BAA-4941-3F48-98B5A9E6C98D"; + setAttr ".h" 0.5; + setAttr ".sw" 1; + setAttr ".sh" 1; +createNode usdPreviewSurface -n "usdPreviewSurface1"; + rename -uid "9342D9E0-42A5-19B7-4A8F-2DBCA1B94B69"; + setAttr ".dc" -type "float3" 0 0 0 ; + setAttr ".rgh" 1; +createNode shadingEngine -n "usdPreviewSurface1SG"; + rename -uid "7D051271-4E87-4E23-8220-EBBE3281A910"; + setAttr ".ihi" 0; + setAttr ".ro" yes; +createNode materialInfo -n "materialInfo4"; + rename -uid "D8F9CB79-4106-53AD-ACF8-58BF815256A7"; +createNode file -n "file1"; + rename -uid "3C1B4A2E-4377-B1B7-D93C-63A98ACC11BA"; + setAttr ".ftn" -type "string" "textures/color_palette_ACEScg.exr"; + setAttr ".cs" -type "string" "ACEScg"; + setAttr ".ifr" yes; +createNode place2dTexture -n "place2dTexture1"; + rename -uid "0F29EE4E-47D1-6342-E53A-A99B9ACAE487"; +createNode script -n "uiConfigurationScriptNode"; + rename -uid "68047047-4A90-041E-6D86-78BA4414120E"; + setAttr ".b" -type "string" ( + "// Maya Mel UI Configuration File.\n//\n// This script is machine generated. Edit at your own risk.\n//\n//\n\nglobal string $gMainPane;\nif (`paneLayout -exists $gMainPane`) {\n\n\tglobal int $gUseScenePanelConfig;\n\tint $useSceneConfig = $gUseScenePanelConfig;\n\tint $nodeEditorPanelVisible = stringArrayContains(\"nodeEditorPanel1\", `getPanel -vis`);\n\tint $nodeEditorWorkspaceControlOpen = (`workspaceControl -exists nodeEditorPanel1Window` && `workspaceControl -q -visible nodeEditorPanel1Window`);\n\tint $menusOkayInPanels = `optionVar -q allowMenusInPanels`;\n\tint $nVisPanes = `paneLayout -q -nvp $gMainPane`;\n\tint $nPanes = 0;\n\tstring $editorName;\n\tstring $panelName;\n\tstring $itemFilterName;\n\tstring $panelConfig;\n\n\t//\n\t// get current state of the UI\n\t//\n\tsceneUIReplacement -update $gMainPane;\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Top View\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"|top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n" + + " -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -controllers 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n" + + " -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -bluePencil 1\n -greasePencils 0\n -excludeObjectPreset \"All\" \n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Side View\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"|side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n" + + " -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n" + + " -interactiveBackFaceCull 0\n -sortTransparent 1\n -controllers 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -bluePencil 1\n -greasePencils 0\n -excludeObjectPreset \"All\" \n" + + " -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Front View\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"|front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n" + + " -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n" + + " -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -controllers 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n" + + " -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -bluePencil 1\n -greasePencils 0\n -excludeObjectPreset \"All\" \n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Persp View\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n" + + " -camera \"|persp\" \n -useInteractiveMode 0\n -displayLights \"all\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 1\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n" + + " -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -controllers 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n" + + " -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -bluePencil 1\n -greasePencils 0\n -excludeObjectPreset \"All\" \n -shadows 0\n -captureSequenceNumber -1\n -width 1959\n -height 1071\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n" + + "\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"outlinerPanel\" (localizedPanelLabel(\"ToggledOutliner\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\toutlinerPanel -edit -l (localizedPanelLabel(\"ToggledOutliner\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n outlinerEditor -e \n -showShapes 0\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 1\n -showReferenceMembers 1\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -organizeByClip 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -autoExpandAllAnimatedShapes 1\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showParentContainers 0\n -showContainerContents 1\n" + + " -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n -showUfeItems 1\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n" + + " -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n -expandAttribute 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"outlinerPanel\" (localizedPanelLabel(\"Outliner\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\toutlinerPanel -edit -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n outlinerEditor -e \n -showShapes 0\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n" + + " -organizeByLayer 1\n -organizeByClip 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -autoExpandAllAnimatedShapes 1\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showParentContainers 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -showUfeItems 1\n -displayMode \"DAG\" \n -expandObjects 0\n" + + " -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"graphEditor\" (localizedPanelLabel(\"Graph Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n" + + " -showShapes 1\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -organizeByClip 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 1\n -autoExpandAllAnimatedShapes 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showParentContainers 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n" + + " -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 1\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -showUfeItems 1\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n" + + " -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n animCurveEditor -e \n -displayValues 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -showPlayRangeShades \"on\" \n -lockPlayRangeShades \"off\" \n -smoothness \"fine\" \n -resultSamples 1\n -resultScreenSamples 0\n -resultUpdate \"delayed\" \n -showUpstreamCurves 1\n -keyMinScale 1\n -stackedCurvesMin -1\n -stackedCurvesMax 1\n -stackedCurvesSpace 0.2\n -preSelectionHighlight 1\n -limitToSelectedCurves 0\n -constrainDrag 0\n -valueLinesToggle 0\n -highlightAffectedCurves 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dopeSheetPanel\" (localizedPanelLabel(\"Dope Sheet\")) `;\n" + + "\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -organizeByClip 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -autoExpandAllAnimatedShapes 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showParentContainers 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n" + + " -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 0\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -showUfeItems 1\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n" + + " -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n dopeSheetEditor -e \n -displayValues 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -showSummary 1\n -showScene 0\n -hierarchyBelow 0\n -showTicks 1\n -selectionWindow 0 0 0 0 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"timeEditorPanel\" (localizedPanelLabel(\"Time Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Time Editor\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"clipEditorPanel\" (localizedPanelLabel(\"Trax Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n clipEditor -e \n -displayValues 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 0 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"sequenceEditorPanel\" (localizedPanelLabel(\"Camera Sequencer\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n" + + " clipEditor -e \n -displayValues 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperGraphPanel\" (localizedPanelLabel(\"Hypergraph Hierarchy\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n -orientation \"horiz\" \n -mergeConnections 0\n -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n -showExpressions 0\n -showConstraints 0\n" + + " -showConnectionFromSelected 0\n -showConnectionToSelected 0\n -showConstraintLabels 0\n -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n -heatMapDisplay 0\n -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperShadePanel\" (localizedPanelLabel(\"Hypershade\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"visorPanel\" (localizedPanelLabel(\"Visor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"nodeEditorPanel\" (localizedPanelLabel(\"Node Editor\")) `;\n\tif ($nodeEditorPanelVisible || $nodeEditorWorkspaceControlOpen) {\n\t\tif (\"\" == $panelName) {\n\t\t\tif ($useSceneConfig) {\n\t\t\t\t$panelName = `scriptedPanel -unParent -type \"nodeEditorPanel\" -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -consistentNameSize 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n" + + " -connectNodeOnCreation 0\n -connectOnDrop 0\n -copyConnectionsOnPaste 0\n -connectionStyle \"bezier\" \n -defaultPinnedState 0\n -additiveGraphingMode 0\n -connectedGraphingMode 1\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -crosshairOnEdgeDragging 0\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -showNamespace 1\n -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -useAssets 1\n -syncedSelection 1\n -extendToShapes 1\n -showUnitConversions 0\n -editorMode \"default\" \n -hasWatchpoint 0\n $editorName;\n\t\t\t}\n\t\t} else {\n\t\t\t$label = `panel -q -label $panelName`;\n" + + "\t\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -consistentNameSize 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -connectNodeOnCreation 0\n -connectOnDrop 0\n -copyConnectionsOnPaste 0\n -connectionStyle \"bezier\" \n -defaultPinnedState 0\n -additiveGraphingMode 0\n -connectedGraphingMode 1\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -crosshairOnEdgeDragging 0\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -showNamespace 1\n" + + " -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -useAssets 1\n -syncedSelection 1\n -extendToShapes 1\n -showUnitConversions 0\n -editorMode \"default\" \n -hasWatchpoint 0\n $editorName;\n\t\t\tif (!$useSceneConfig) {\n\t\t\t\tpanel -e -l $label $panelName;\n\t\t\t}\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"createNodePanel\" (localizedPanelLabel(\"Create Node\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"polyTexturePlacementPanel\" (localizedPanelLabel(\"UV Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"UV Editor\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"renderWindowPanel\" (localizedPanelLabel(\"Render View\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"shapePanel\" (localizedPanelLabel(\"Shape Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tshapePanel -edit -l (localizedPanelLabel(\"Shape Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"posePanel\" (localizedPanelLabel(\"Pose Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tposePanel -edit -l (localizedPanelLabel(\"Pose Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n" + + "\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynRelEdPanel\" (localizedPanelLabel(\"Dynamic Relationships\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"relationshipPanel\" (localizedPanelLabel(\"Relationship Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"referenceEditorPanel\" (localizedPanelLabel(\"Reference Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynPaintScriptedPanelType\" (localizedPanelLabel(\"Paint Effects\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"scriptEditorPanel\" (localizedPanelLabel(\"Script Editor\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"profilerPanel\" (localizedPanelLabel(\"Profiler Tool\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Profiler Tool\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"contentBrowserPanel\" (localizedPanelLabel(\"Content Browser\")) `;\n\tif (\"\" != $panelName) {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Content Browser\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\tif ($useSceneConfig) {\n string $configName = `getPanel -cwl (localizedPanelLabel(\"Current Layout\"))`;\n if (\"\" != $configName) {\n\t\t\tpanelConfiguration -edit -label (localizedPanelLabel(\"Current Layout\")) \n\t\t\t\t-userCreated false\n\t\t\t\t-defaultImage \"\"\n\t\t\t\t-image \"\"\n\t\t\t\t-sc false\n\t\t\t\t-configString \"global string $gMainPane; paneLayout -e -cn \\\"single\\\" -ps 1 100 100 $gMainPane;\"\n\t\t\t\t-removeAllPanels\n\t\t\t\t-ap false\n\t\t\t\t\t(localizedPanelLabel(\"Persp View\")) \n\t\t\t\t\t\"modelPanel\"\n" + + "\t\t\t\t\t\"$panelName = `modelPanel -unParent -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels `;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"all\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -holdOuts 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 0\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 1\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 32768\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -depthOfFieldPreview 1\\n -maxConstantTransparency 1\\n -rendererName \\\"vp2Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -controllers 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -particleInstancers 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -bluePencil 1\\n -greasePencils 0\\n -excludeObjectPreset \\\"All\\\" \\n -shadows 0\\n -captureSequenceNumber -1\\n -width 1959\\n -height 1071\\n -sceneRenderFilter 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n" + + "\t\t\t\t\t\"modelPanel -edit -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels $panelName;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"all\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -holdOuts 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 0\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 1\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 32768\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -depthOfFieldPreview 1\\n -maxConstantTransparency 1\\n -rendererName \\\"vp2Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -controllers 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -particleInstancers 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -bluePencil 1\\n -greasePencils 0\\n -excludeObjectPreset \\\"All\\\" \\n -shadows 0\\n -captureSequenceNumber -1\\n -width 1959\\n -height 1071\\n -sceneRenderFilter 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n" + + "\t\t\t\t$configName;\n\n setNamedPanelLayout (localizedPanelLabel(\"Current Layout\"));\n }\n\n panelHistory -e -clear mainPanelHistory;\n sceneUIReplacement -clear;\n\t}\n\n\ngrid -spacing 5 -size 12 -divisions 5 -displayAxes yes -displayGridLines yes -displayDivisionLines yes -displayPerspectiveLabels no -displayOrthographicLabels no -displayAxesBold yes -perspectiveLabelPosition axis -orthographicLabelPosition edge;\nviewManip -drawCompass 0 -compassAngle 0 -frontParameters \"\" -homeParameters \"\" -selectionLockParameters \"\";\n}\n"); + setAttr ".st" 3; +createNode script -n "sceneConfigurationScriptNode"; + rename -uid "36F29056-4447-1B86-3019-82B8C8CDAE03"; + setAttr ".b" -type "string" "playbackOptions -min 1 -max 120 -ast 1 -aet 200 "; + setAttr ".st" 6; +createNode usdPreviewSurface -n "usdPreviewSurface9"; + rename -uid "F39BA394-4A1A-7309-634A-17BED475B92C"; + setAttr ".dc" -type "float3" 0 0 0 ; + setAttr ".rgh" 1; +createNode shadingEngine -n "usdPreviewSurface9SG"; + rename -uid "A98C963E-4812-3FE2-2657-CD8F831BA540"; + setAttr ".ihi" 0; + setAttr ".ro" yes; +createNode materialInfo -n "materialInfo12"; + rename -uid "CA00F731-4B85-1834-D234-71BC09CB5989"; +createNode file -n "file8"; + rename -uid "F0B64C3B-4EAB-8454-D749-719D325AB4E6"; + setAttr ".ftn" -type "string" "textures/color_palette_ADX10.exr"; + setAttr ".cs" -type "string" "ADX10"; + setAttr ".ifr" yes; +createNode place2dTexture -n "place2dTexture8"; + rename -uid "C5CB1772-45E1-78C2-C5CB-E5AFE8739E79"; +createNode usdPreviewSurface -n "usdPreviewSurface10"; + rename -uid "5CDF8EDE-443B-48BA-C2AA-62B4844B3C24"; + setAttr ".dc" -type "float3" 0 0 0 ; + setAttr ".rgh" 1; +createNode shadingEngine -n "usdPreviewSurface10SG"; + rename -uid "25D10B78-45E9-FB87-3691-AFB76395A665"; + setAttr ".ihi" 0; + setAttr ".ro" yes; +createNode materialInfo -n "materialInfo13"; + rename -uid "76F44121-4198-F1F4-3159-7586A03E8FC8"; +createNode file -n "file9"; + rename -uid "BF6FFCA2-47CF-9DD6-7166-02AC67F52996"; + setAttr ".ftn" -type "string" "textures/color_palette_ADX16.exr"; + setAttr ".cs" -type "string" "ADX16"; + setAttr ".ifr" yes; +createNode place2dTexture -n "place2dTexture9"; + rename -uid "B1801A8E-4C22-564A-806F-1F8764E0D6B9"; +createNode usdPreviewSurface -n "usdPreviewSurface11"; + rename -uid "57C166B5-4602-39EC-B452-CABD03BB920E"; + setAttr ".dc" -type "float3" 0 0 0 ; + setAttr ".rgh" 1; +createNode shadingEngine -n "usdPreviewSurface11SG"; + rename -uid "76BDF54B-4549-92F6-2B66-BF9E663BE864"; + setAttr ".ihi" 0; + setAttr ".ro" yes; +createNode materialInfo -n "materialInfo14"; + rename -uid "8479F37D-4E03-D41F-7963-B1A85136F91B"; +createNode file -n "file10"; + rename -uid "E9740FE7-481C-2469-BC07-3D860667B601"; + setAttr ".ftn" -type "string" "textures/color_palette_arri_logc4.exr"; + setAttr ".cs" -type "string" "ARRI LogC4 - Curve"; + setAttr ".ifr" yes; +createNode place2dTexture -n "place2dTexture10"; + rename -uid "62653A4C-4760-6549-07A8-479165051C4D"; +createNode usdPreviewSurface -n "usdPreviewSurface12"; + rename -uid "526849AE-47B4-48CC-B6C6-9CB0BF02DE9D"; + setAttr ".dc" -type "float3" 0 0 0 ; + setAttr ".rgh" 1; +createNode shadingEngine -n "usdPreviewSurface12SG"; + rename -uid "BF1ED8C1-4263-E786-CD9D-36B2F581386F"; + setAttr ".ihi" 0; + setAttr ".ro" yes; +createNode materialInfo -n "materialInfo15"; + rename -uid "18F6E64A-4437-C257-C611-FA9930A27D7E"; +createNode file -n "file11"; + rename -uid "3433D3DA-4CB0-A705-48AA-D1BA761ECD22"; + setAttr ".ftn" -type "string" "textures/color_palette_g24_rec709.exr"; + setAttr ".cs" -type "string" "Gamma 2.4 Rec.709 - Texture"; + setAttr ".ifr" yes; +createNode place2dTexture -n "place2dTexture11"; + rename -uid "2714C4FC-415A-953A-4007-B8A753F3FA54"; +createNode usdPreviewSurface -n "usdPreviewSurface13"; + rename -uid "CF2375D1-4BE2-ABDE-BC87-A9942877B5A0"; + setAttr ".dc" -type "float3" 0 0 0 ; + setAttr ".rgh" 1; +createNode shadingEngine -n "usdPreviewSurface13SG"; + rename -uid "AD576090-44CA-DF14-97AD-85A3CFD260EB"; + setAttr ".ihi" 0; + setAttr ".ro" yes; +createNode materialInfo -n "materialInfo16"; + rename -uid "80F6D45D-4528-E101-AB6E-3DB7BECA4A46"; +createNode file -n "file12"; + rename -uid "8A85BC9F-413A-4DA6-EF89-16A9EBCDB150"; + setAttr ".ftn" -type "string" "textures/color_palette_lin_p3d65.exr"; + setAttr ".cs" -type "string" "Linear P3-D65"; + setAttr ".ifr" yes; +createNode place2dTexture -n "place2dTexture12"; + rename -uid "3A229B0F-4AD1-2E7F-3F2F-528501135DCD"; +createNode usdPreviewSurface -n "usdPreviewSurface14"; + rename -uid "A1F7563A-427D-FC69-1078-6B865CAE3AFD"; + setAttr ".dc" -type "float3" 0 0 0 ; + setAttr ".rgh" 1; +createNode shadingEngine -n "usdPreviewSurface14SG"; + rename -uid "3850DC86-49F6-8FF6-F030-78B8E178FF8D"; + setAttr ".ihi" 0; + setAttr ".ro" yes; +createNode materialInfo -n "materialInfo17"; + rename -uid "EF6D8285-4443-A586-3F65-0E936E120FEA"; +createNode file -n "file13"; + rename -uid "A7168056-4A5C-F31F-FD7D-15938476D499"; + setAttr ".ftn" -type "string" "textures/color_palette_srgb_texture.exr"; + setAttr ".cs" -type "string" "sRGB - Texture"; + setAttr ".ifr" yes; +createNode place2dTexture -n "place2dTexture13"; + rename -uid "1168DEC9-4339-9E46-E173-868069B88D8D"; +createNode nodeGraphEditorInfo -n "hyperShadePrimaryNodeEditorSavedTabsInfo"; + rename -uid "5E31733A-46C9-121B-BEAC-9CAFF553DE2C"; + setAttr ".tgi[0].tn" -type "string" "Untitled_1"; + setAttr ".tgi[0].vl" -type "double2" -44.047617297323995 -617.85711830570688 ; + setAttr ".tgi[0].vh" -type "double2" 604.76188073082676 44.047617297323995 ; +createNode mayaUsdLayerManager -n "mayaUsdLayerManager1"; + rename -uid "B4E2810A-473B-7E1F-DDBD-59A57F181A7A"; + setAttr ".sst" -type "string" "|WIP|WIPShape"; +select -ne :time1; + setAttr ".o" 1; + setAttr ".unw" 1; +select -ne :hardwareRenderingGlobals; + setAttr ".otfna" -type "stringArray" 22 "NURBS Curves" "NURBS Surfaces" "Polygons" "Subdiv Surface" "Particles" "Particle Instance" "Fluids" "Strokes" "Image Planes" "UI" "Lights" "Cameras" "Locators" "Joints" "IK Handles" "Deformers" "Motion Trails" "Components" "Hair Systems" "Follicles" "Misc. UI" "Ornaments" ; + setAttr ".otfva" -type "Int32Array" 22 0 1 1 1 1 1 + 1 1 1 0 0 0 0 0 0 0 0 0 + 0 0 0 0 ; + setAttr ".fprt" yes; + setAttr ".rtfm" 1; +select -ne :renderPartition; + setAttr -s 9 ".st"; +select -ne :renderGlobalsList1; +select -ne :defaultShaderList1; + setAttr -s 12 ".s"; +select -ne :postProcessList1; + setAttr -s 2 ".p"; +select -ne :defaultRenderUtilityList1; + setAttr -s 7 ".u"; +select -ne :defaultRenderingList1; +select -ne :defaultTextureList1; + setAttr -s 7 ".tx"; +select -ne :standardSurface1; + setAttr ".bc" -type "float3" 0.40000001 0.40000001 0.40000001 ; + setAttr ".sr" 0.5; +select -ne :initialShadingGroup; + setAttr ".ro" yes; +select -ne :initialParticleSE; + setAttr ".ro" yes; +select -ne :defaultRenderGlobals; + addAttr -ci true -h true -sn "dss" -ln "defaultSurfaceShader" -dt "string"; + setAttr ".ren" -type "string" "mayaHardware2"; + setAttr ".dss" -type "string" "standardSurface1"; +select -ne :defaultResolution; + setAttr ".pa" 1; +select -ne :hardwareRenderGlobals; + setAttr ".ctrs" 256; + setAttr ".btrs" 512; +connectAttr "polyPlane1.out" "pPlaneShape1.i"; +relationship "link" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "usdPreviewSurface1SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "usdPreviewSurface9SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "usdPreviewSurface10SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "usdPreviewSurface11SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "usdPreviewSurface12SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "usdPreviewSurface13SG.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" "usdPreviewSurface14SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "usdPreviewSurface1SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "usdPreviewSurface9SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "usdPreviewSurface10SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "usdPreviewSurface11SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "usdPreviewSurface12SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "usdPreviewSurface13SG.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" "usdPreviewSurface14SG.message" ":defaultLightSet.message"; +connectAttr "layerManager.dli[0]" "defaultLayer.id"; +connectAttr "renderLayerManager.rlmi[0]" "defaultRenderLayer.rlid"; +connectAttr "file1.oc" "usdPreviewSurface1.ec"; +connectAttr "usdPreviewSurface1.oc" "usdPreviewSurface1SG.ss"; +connectAttr "pPlaneShape1.iog" "usdPreviewSurface1SG.dsm" -na; +connectAttr "usdPreviewSurface1SG.msg" "materialInfo4.sg"; +connectAttr "usdPreviewSurface1.msg" "materialInfo4.m"; +connectAttr "usdPreviewSurface1.msg" "materialInfo4.t" -na; +connectAttr ":defaultColorMgtGlobals.cme" "file1.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "file1.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "file1.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "file1.ws"; +connectAttr "place2dTexture1.c" "file1.c"; +connectAttr "place2dTexture1.tf" "file1.tf"; +connectAttr "place2dTexture1.rf" "file1.rf"; +connectAttr "place2dTexture1.mu" "file1.mu"; +connectAttr "place2dTexture1.mv" "file1.mv"; +connectAttr "place2dTexture1.s" "file1.s"; +connectAttr "place2dTexture1.wu" "file1.wu"; +connectAttr "place2dTexture1.wv" "file1.wv"; +connectAttr "place2dTexture1.re" "file1.re"; +connectAttr "place2dTexture1.of" "file1.of"; +connectAttr "place2dTexture1.r" "file1.ro"; +connectAttr "place2dTexture1.n" "file1.n"; +connectAttr "place2dTexture1.vt1" "file1.vt1"; +connectAttr "place2dTexture1.vt2" "file1.vt2"; +connectAttr "place2dTexture1.vt3" "file1.vt3"; +connectAttr "place2dTexture1.vc1" "file1.vc1"; +connectAttr "place2dTexture1.o" "file1.uv"; +connectAttr "place2dTexture1.ofs" "file1.fs"; +connectAttr "file8.oc" "usdPreviewSurface9.ec"; +connectAttr "usdPreviewSurface9.oc" "usdPreviewSurface9SG.ss"; +connectAttr "pPlaneShape2.iog" "usdPreviewSurface9SG.dsm" -na; +connectAttr "usdPreviewSurface9SG.msg" "materialInfo12.sg"; +connectAttr "usdPreviewSurface9.msg" "materialInfo12.m"; +connectAttr "usdPreviewSurface9.msg" "materialInfo12.t" -na; +connectAttr ":defaultColorMgtGlobals.cme" "file8.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "file8.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "file8.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "file8.ws"; +connectAttr "place2dTexture8.c" "file8.c"; +connectAttr "place2dTexture8.tf" "file8.tf"; +connectAttr "place2dTexture8.rf" "file8.rf"; +connectAttr "place2dTexture8.mu" "file8.mu"; +connectAttr "place2dTexture8.mv" "file8.mv"; +connectAttr "place2dTexture8.s" "file8.s"; +connectAttr "place2dTexture8.wu" "file8.wu"; +connectAttr "place2dTexture8.wv" "file8.wv"; +connectAttr "place2dTexture8.re" "file8.re"; +connectAttr "place2dTexture8.of" "file8.of"; +connectAttr "place2dTexture8.r" "file8.ro"; +connectAttr "place2dTexture8.n" "file8.n"; +connectAttr "place2dTexture8.vt1" "file8.vt1"; +connectAttr "place2dTexture8.vt2" "file8.vt2"; +connectAttr "place2dTexture8.vt3" "file8.vt3"; +connectAttr "place2dTexture8.vc1" "file8.vc1"; +connectAttr "place2dTexture8.o" "file8.uv"; +connectAttr "place2dTexture8.ofs" "file8.fs"; +connectAttr "file9.oc" "usdPreviewSurface10.ec"; +connectAttr "usdPreviewSurface10.oc" "usdPreviewSurface10SG.ss"; +connectAttr "pPlaneShape3.iog" "usdPreviewSurface10SG.dsm" -na; +connectAttr "usdPreviewSurface10SG.msg" "materialInfo13.sg"; +connectAttr "usdPreviewSurface10.msg" "materialInfo13.m"; +connectAttr "usdPreviewSurface10.msg" "materialInfo13.t" -na; +connectAttr ":defaultColorMgtGlobals.cme" "file9.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "file9.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "file9.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "file9.ws"; +connectAttr "place2dTexture9.c" "file9.c"; +connectAttr "place2dTexture9.tf" "file9.tf"; +connectAttr "place2dTexture9.rf" "file9.rf"; +connectAttr "place2dTexture9.mu" "file9.mu"; +connectAttr "place2dTexture9.mv" "file9.mv"; +connectAttr "place2dTexture9.s" "file9.s"; +connectAttr "place2dTexture9.wu" "file9.wu"; +connectAttr "place2dTexture9.wv" "file9.wv"; +connectAttr "place2dTexture9.re" "file9.re"; +connectAttr "place2dTexture9.of" "file9.of"; +connectAttr "place2dTexture9.r" "file9.ro"; +connectAttr "place2dTexture9.n" "file9.n"; +connectAttr "place2dTexture9.vt1" "file9.vt1"; +connectAttr "place2dTexture9.vt2" "file9.vt2"; +connectAttr "place2dTexture9.vt3" "file9.vt3"; +connectAttr "place2dTexture9.vc1" "file9.vc1"; +connectAttr "place2dTexture9.o" "file9.uv"; +connectAttr "place2dTexture9.ofs" "file9.fs"; +connectAttr "file10.oc" "usdPreviewSurface11.ec"; +connectAttr "usdPreviewSurface11.oc" "usdPreviewSurface11SG.ss"; +connectAttr "pPlaneShape4.iog" "usdPreviewSurface11SG.dsm" -na; +connectAttr "usdPreviewSurface11SG.msg" "materialInfo14.sg"; +connectAttr "usdPreviewSurface11.msg" "materialInfo14.m"; +connectAttr "usdPreviewSurface11.msg" "materialInfo14.t" -na; +connectAttr ":defaultColorMgtGlobals.cme" "file10.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "file10.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "file10.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "file10.ws"; +connectAttr "place2dTexture10.c" "file10.c"; +connectAttr "place2dTexture10.tf" "file10.tf"; +connectAttr "place2dTexture10.rf" "file10.rf"; +connectAttr "place2dTexture10.mu" "file10.mu"; +connectAttr "place2dTexture10.mv" "file10.mv"; +connectAttr "place2dTexture10.s" "file10.s"; +connectAttr "place2dTexture10.wu" "file10.wu"; +connectAttr "place2dTexture10.wv" "file10.wv"; +connectAttr "place2dTexture10.re" "file10.re"; +connectAttr "place2dTexture10.of" "file10.of"; +connectAttr "place2dTexture10.r" "file10.ro"; +connectAttr "place2dTexture10.n" "file10.n"; +connectAttr "place2dTexture10.vt1" "file10.vt1"; +connectAttr "place2dTexture10.vt2" "file10.vt2"; +connectAttr "place2dTexture10.vt3" "file10.vt3"; +connectAttr "place2dTexture10.vc1" "file10.vc1"; +connectAttr "place2dTexture10.o" "file10.uv"; +connectAttr "place2dTexture10.ofs" "file10.fs"; +connectAttr "file11.oc" "usdPreviewSurface12.ec"; +connectAttr "usdPreviewSurface12.oc" "usdPreviewSurface12SG.ss"; +connectAttr "pPlaneShape5.iog" "usdPreviewSurface12SG.dsm" -na; +connectAttr "usdPreviewSurface12SG.msg" "materialInfo15.sg"; +connectAttr "usdPreviewSurface12.msg" "materialInfo15.m"; +connectAttr "usdPreviewSurface12.msg" "materialInfo15.t" -na; +connectAttr ":defaultColorMgtGlobals.cme" "file11.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "file11.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "file11.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "file11.ws"; +connectAttr "place2dTexture11.c" "file11.c"; +connectAttr "place2dTexture11.tf" "file11.tf"; +connectAttr "place2dTexture11.rf" "file11.rf"; +connectAttr "place2dTexture11.mu" "file11.mu"; +connectAttr "place2dTexture11.mv" "file11.mv"; +connectAttr "place2dTexture11.s" "file11.s"; +connectAttr "place2dTexture11.wu" "file11.wu"; +connectAttr "place2dTexture11.wv" "file11.wv"; +connectAttr "place2dTexture11.re" "file11.re"; +connectAttr "place2dTexture11.of" "file11.of"; +connectAttr "place2dTexture11.r" "file11.ro"; +connectAttr "place2dTexture11.n" "file11.n"; +connectAttr "place2dTexture11.vt1" "file11.vt1"; +connectAttr "place2dTexture11.vt2" "file11.vt2"; +connectAttr "place2dTexture11.vt3" "file11.vt3"; +connectAttr "place2dTexture11.vc1" "file11.vc1"; +connectAttr "place2dTexture11.o" "file11.uv"; +connectAttr "place2dTexture11.ofs" "file11.fs"; +connectAttr "file12.oc" "usdPreviewSurface13.ec"; +connectAttr "usdPreviewSurface13.oc" "usdPreviewSurface13SG.ss"; +connectAttr "pPlaneShape6.iog" "usdPreviewSurface13SG.dsm" -na; +connectAttr "usdPreviewSurface13SG.msg" "materialInfo16.sg"; +connectAttr "usdPreviewSurface13.msg" "materialInfo16.m"; +connectAttr "usdPreviewSurface13.msg" "materialInfo16.t" -na; +connectAttr ":defaultColorMgtGlobals.cme" "file12.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "file12.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "file12.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "file12.ws"; +connectAttr "place2dTexture12.c" "file12.c"; +connectAttr "place2dTexture12.tf" "file12.tf"; +connectAttr "place2dTexture12.rf" "file12.rf"; +connectAttr "place2dTexture12.mu" "file12.mu"; +connectAttr "place2dTexture12.mv" "file12.mv"; +connectAttr "place2dTexture12.s" "file12.s"; +connectAttr "place2dTexture12.wu" "file12.wu"; +connectAttr "place2dTexture12.wv" "file12.wv"; +connectAttr "place2dTexture12.re" "file12.re"; +connectAttr "place2dTexture12.of" "file12.of"; +connectAttr "place2dTexture12.r" "file12.ro"; +connectAttr "place2dTexture12.n" "file12.n"; +connectAttr "place2dTexture12.vt1" "file12.vt1"; +connectAttr "place2dTexture12.vt2" "file12.vt2"; +connectAttr "place2dTexture12.vt3" "file12.vt3"; +connectAttr "place2dTexture12.vc1" "file12.vc1"; +connectAttr "place2dTexture12.o" "file12.uv"; +connectAttr "place2dTexture12.ofs" "file12.fs"; +connectAttr "file13.oc" "usdPreviewSurface14.ec"; +connectAttr "usdPreviewSurface14.oc" "usdPreviewSurface14SG.ss"; +connectAttr "pPlaneShape7.iog" "usdPreviewSurface14SG.dsm" -na; +connectAttr "usdPreviewSurface14SG.msg" "materialInfo17.sg"; +connectAttr "usdPreviewSurface14.msg" "materialInfo17.m"; +connectAttr "usdPreviewSurface14.msg" "materialInfo17.t" -na; +connectAttr ":defaultColorMgtGlobals.cme" "file13.cme"; +connectAttr ":defaultColorMgtGlobals.cfe" "file13.cmcf"; +connectAttr ":defaultColorMgtGlobals.cfp" "file13.cmcp"; +connectAttr ":defaultColorMgtGlobals.wsn" "file13.ws"; +connectAttr "place2dTexture13.c" "file13.c"; +connectAttr "place2dTexture13.tf" "file13.tf"; +connectAttr "place2dTexture13.rf" "file13.rf"; +connectAttr "place2dTexture13.mu" "file13.mu"; +connectAttr "place2dTexture13.mv" "file13.mv"; +connectAttr "place2dTexture13.s" "file13.s"; +connectAttr "place2dTexture13.wu" "file13.wu"; +connectAttr "place2dTexture13.wv" "file13.wv"; +connectAttr "place2dTexture13.re" "file13.re"; +connectAttr "place2dTexture13.of" "file13.of"; +connectAttr "place2dTexture13.r" "file13.ro"; +connectAttr "place2dTexture13.n" "file13.n"; +connectAttr "place2dTexture13.vt1" "file13.vt1"; +connectAttr "place2dTexture13.vt2" "file13.vt2"; +connectAttr "place2dTexture13.vt3" "file13.vt3"; +connectAttr "place2dTexture13.vc1" "file13.vc1"; +connectAttr "place2dTexture13.o" "file13.uv"; +connectAttr "place2dTexture13.ofs" "file13.fs"; +connectAttr "usdPreviewSurface1SG.pa" ":renderPartition.st" -na; +connectAttr "usdPreviewSurface9SG.pa" ":renderPartition.st" -na; +connectAttr "usdPreviewSurface10SG.pa" ":renderPartition.st" -na; +connectAttr "usdPreviewSurface11SG.pa" ":renderPartition.st" -na; +connectAttr "usdPreviewSurface12SG.pa" ":renderPartition.st" -na; +connectAttr "usdPreviewSurface13SG.pa" ":renderPartition.st" -na; +connectAttr "usdPreviewSurface14SG.pa" ":renderPartition.st" -na; +connectAttr "usdPreviewSurface1.msg" ":defaultShaderList1.s" -na; +connectAttr "usdPreviewSurface9.msg" ":defaultShaderList1.s" -na; +connectAttr "usdPreviewSurface10.msg" ":defaultShaderList1.s" -na; +connectAttr "usdPreviewSurface11.msg" ":defaultShaderList1.s" -na; +connectAttr "usdPreviewSurface12.msg" ":defaultShaderList1.s" -na; +connectAttr "usdPreviewSurface13.msg" ":defaultShaderList1.s" -na; +connectAttr "usdPreviewSurface14.msg" ":defaultShaderList1.s" -na; +connectAttr "place2dTexture1.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "place2dTexture8.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "place2dTexture9.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "place2dTexture10.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "place2dTexture11.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "place2dTexture12.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "place2dTexture13.msg" ":defaultRenderUtilityList1.u" -na; +connectAttr "defaultRenderLayer.msg" ":defaultRenderingList1.r" -na; +connectAttr "file1.msg" ":defaultTextureList1.tx" -na; +connectAttr "file8.msg" ":defaultTextureList1.tx" -na; +connectAttr "file9.msg" ":defaultTextureList1.tx" -na; +connectAttr "file10.msg" ":defaultTextureList1.tx" -na; +connectAttr "file11.msg" ":defaultTextureList1.tx" -na; +connectAttr "file12.msg" ":defaultTextureList1.tx" -na; +connectAttr "file13.msg" ":defaultTextureList1.tx" -na; +// End of color_management.ma diff --git a/test/testSamples/MaterialX/color_management_MTLX.usda b/test/testSamples/MaterialX/color_management_MTLX.usda new file mode 100644 index 0000000000..a044bd4472 --- /dev/null +++ b/test/testSamples/MaterialX/color_management_MTLX.usda @@ -0,0 +1,600 @@ +#usda 1.0 +( + defaultPrim = "pPlane1" + metersPerUnit = 0.01 + upAxis = "Y" +) + +def Mesh "pPlane1" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (-3.03, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface1SG" + { + string inputs:file1:varname = "st" + token outputs:mtlx:surface.connect = + + def Shader "usdPreviewSurface1" + { + uniform token info:id = "ND_UsdPreviewSurface_surfaceshader" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:out + } + + def NodeGraph "MayaNG_usdPreviewSurface1SG" + { + string inputs:file1:varname.connect = + color3f outputs:emissiveColor.connect = + + def Shader "file1" + { + uniform token info:id = "ND_image_color4" + asset inputs:file = @textures/color_palette_ACEScg.exr@ ( + colorSpace = "ACEScg" + ) + string inputs:filtertype = "cubic" + float2 inputs:texcoord.connect = + string inputs:uaddressmode = "periodic" + string inputs:vaddressmode = "periodic" + color4f outputs:out + } + + def Shader "file1_MayafileTexture" + { + uniform token info:id = "MayaND_fileTexture_color4" + string inputs:colorSpace = "ACEScg" + color4f inputs:defaultColor = (0.5, 0.5, 0.5, 1) + color4f inputs:inColor.connect = + color4f inputs:uvCoord.connect = + color4f outputs:outColor + } + + def Shader "MayaConvert_file1_MayafileTexture" + { + uniform token info:id = "ND_convert_color4_color3" + color4f inputs:in.connect = + color3f outputs:out + } + + def Shader "place2dTexture1" + { + uniform token info:id = "ND_geompropvalue_vector2" + string inputs:geomprop.connect = + float2 outputs:out + } + } + } + } +} + +def Mesh "pPlane2" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (-2.02, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface9SG" + { + string inputs:file8:varname = "st" + token outputs:mtlx:surface.connect = + + def Shader "usdPreviewSurface9" + { + uniform token info:id = "ND_UsdPreviewSurface_surfaceshader" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:out + } + + def NodeGraph "MayaNG_usdPreviewSurface9SG" + { + string inputs:file8:varname.connect = + color3f outputs:emissiveColor.connect = + + def Shader "file8" + { + uniform token info:id = "ND_image_color4" + asset inputs:file = @textures/color_palette_ADX10.exr@ ( + colorSpace = "ADX10" + ) + string inputs:filtertype = "cubic" + float2 inputs:texcoord.connect = + string inputs:uaddressmode = "periodic" + string inputs:vaddressmode = "periodic" + color4f outputs:out + } + + def Shader "file8_MayafileTexture" + { + uniform token info:id = "MayaND_fileTexture_color4" + string inputs:colorSpace = "ADX10" + color4f inputs:defaultColor = (0.5, 0.5, 0.5, 1) + color4f inputs:inColor.connect = + color4f inputs:uvCoord.connect = + color4f outputs:outColor + } + + def Shader "MayaConvert_file8_MayafileTexture" + { + uniform token info:id = "ND_convert_color4_color3" + color4f inputs:in.connect = + color3f outputs:out + } + + def Shader "place2dTexture8" + { + uniform token info:id = "ND_geompropvalue_vector2" + string inputs:geomprop.connect = + float2 outputs:out + } + } + } + } +} + +def Mesh "pPlane3" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (-1.01, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface10SG" + { + string inputs:file9:varname = "st" + token outputs:mtlx:surface.connect = + + def Shader "usdPreviewSurface10" + { + uniform token info:id = "ND_UsdPreviewSurface_surfaceshader" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:out + } + + def NodeGraph "MayaNG_usdPreviewSurface10SG" + { + string inputs:file9:varname.connect = + color3f outputs:emissiveColor.connect = + + def Shader "file9" + { + uniform token info:id = "ND_image_color4" + asset inputs:file = @textures/color_palette_ADX16.exr@ ( + colorSpace = "ADX16" + ) + string inputs:filtertype = "cubic" + float2 inputs:texcoord.connect = + string inputs:uaddressmode = "periodic" + string inputs:vaddressmode = "periodic" + color4f outputs:out + } + + def Shader "file9_MayafileTexture" + { + uniform token info:id = "MayaND_fileTexture_color4" + string inputs:colorSpace = "ADX16" + color4f inputs:defaultColor = (0.5, 0.5, 0.5, 1) + color4f inputs:inColor.connect = + color4f inputs:uvCoord.connect = + color4f outputs:outColor + } + + def Shader "MayaConvert_file9_MayafileTexture" + { + uniform token info:id = "ND_convert_color4_color3" + color4f inputs:in.connect = + color3f outputs:out + } + + def Shader "place2dTexture9" + { + uniform token info:id = "ND_geompropvalue_vector2" + string inputs:geomprop.connect = + float2 outputs:out + } + } + } + } +} + +def Mesh "pPlane4" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + + def Scope "mtl" + { + def Material "usdPreviewSurface11SG" + { + string inputs:file10:varname = "st" + token outputs:mtlx:surface.connect = + + def Shader "usdPreviewSurface11" + { + uniform token info:id = "ND_UsdPreviewSurface_surfaceshader" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:out + } + + def NodeGraph "MayaNG_usdPreviewSurface11SG" + { + string inputs:file10:varname.connect = + color3f outputs:emissiveColor.connect = + + def Shader "file10" + { + uniform token info:id = "ND_image_color4" + asset inputs:file = @textures/color_palette_arri_logc4.exr@ ( + colorSpace = "ARRI LogC4 - Curve" + ) + string inputs:filtertype = "cubic" + float2 inputs:texcoord.connect = + string inputs:uaddressmode = "periodic" + string inputs:vaddressmode = "periodic" + color4f outputs:out + } + + def Shader "file10_MayafileTexture" + { + uniform token info:id = "MayaND_fileTexture_color4" + string inputs:colorSpace = "ARRI LogC4 - Curve" + color4f inputs:defaultColor = (0.5, 0.5, 0.5, 1) + color4f inputs:inColor.connect = + color4f inputs:uvCoord.connect = + color4f outputs:outColor + } + + def Shader "MayaConvert_file10_MayafileTexture" + { + uniform token info:id = "ND_convert_color4_color3" + color4f inputs:in.connect = + color3f outputs:out + } + + def Shader "place2dTexture10" + { + uniform token info:id = "ND_geompropvalue_vector2" + string inputs:geomprop.connect = + float2 outputs:out + } + } + } + } +} + +def Mesh "pPlane5" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (1.01, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface12SG" + { + string inputs:file11:varname = "st" + token outputs:mtlx:surface.connect = + + def Shader "usdPreviewSurface12" + { + uniform token info:id = "ND_UsdPreviewSurface_surfaceshader" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:out + } + + def NodeGraph "MayaNG_usdPreviewSurface12SG" + { + string inputs:file11:varname.connect = + color3f outputs:emissiveColor.connect = + + def Shader "file11" + { + uniform token info:id = "ND_image_color4" + asset inputs:file = @textures/color_palette_g24_rec709.exr@ ( + colorSpace = "Gamma 2.4 Rec.709 - Texture" + ) + string inputs:filtertype = "cubic" + float2 inputs:texcoord.connect = + string inputs:uaddressmode = "periodic" + string inputs:vaddressmode = "periodic" + color4f outputs:out + } + + def Shader "file11_MayafileTexture" + { + uniform token info:id = "MayaND_fileTexture_color4" + string inputs:colorSpace = "Gamma 2.4 Rec.709 - Texture" + color4f inputs:defaultColor = (0.5, 0.5, 0.5, 1) + color4f inputs:inColor.connect = + color4f inputs:uvCoord.connect = + color4f outputs:outColor + } + + def Shader "MayaConvert_file11_MayafileTexture" + { + uniform token info:id = "ND_convert_color4_color3" + color4f inputs:in.connect = + color3f outputs:out + } + + def Shader "place2dTexture11" + { + uniform token info:id = "ND_geompropvalue_vector2" + string inputs:geomprop.connect = + float2 outputs:out + } + } + } + } +} + +def Mesh "pPlane6" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (2.02, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface13SG" + { + string inputs:file12:varname = "st" + token outputs:mtlx:surface.connect = + + def Shader "usdPreviewSurface13" + { + uniform token info:id = "ND_UsdPreviewSurface_surfaceshader" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:out + } + + def NodeGraph "MayaNG_usdPreviewSurface13SG" + { + string inputs:file12:varname.connect = + color3f outputs:emissiveColor.connect = + + def Shader "file12" + { + uniform token info:id = "ND_image_color4" + asset inputs:file = @textures/color_palette_lin_p3d65.exr@ ( + colorSpace = "Linear P3-D65" + ) + string inputs:filtertype = "cubic" + float2 inputs:texcoord.connect = + string inputs:uaddressmode = "periodic" + string inputs:vaddressmode = "periodic" + color4f outputs:out + } + + def Shader "file12_MayafileTexture" + { + uniform token info:id = "MayaND_fileTexture_color4" + string inputs:colorSpace = "Linear P3-D65" + color4f inputs:defaultColor = (0.5, 0.5, 0.5, 1) + color4f inputs:inColor.connect = + color4f inputs:uvCoord.connect = + color4f outputs:outColor + } + + def Shader "MayaConvert_file12_MayafileTexture" + { + uniform token info:id = "ND_convert_color4_color3" + color4f inputs:in.connect = + color3f outputs:out + } + + def Shader "place2dTexture12" + { + uniform token info:id = "ND_geompropvalue_vector2" + string inputs:geomprop.connect = + float2 outputs:out + } + } + } + } +} + +def Mesh "pPlane7" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (3.03, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface14SG" + { + string inputs:file13:varname = "st" + token outputs:mtlx:surface.connect = + + def Shader "usdPreviewSurface14" + { + uniform token info:id = "ND_UsdPreviewSurface_surfaceshader" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:out + } + + def NodeGraph "MayaNG_usdPreviewSurface14SG" + { + string inputs:file13:varname.connect = + color3f outputs:emissiveColor.connect = + + def Shader "file13" + { + uniform token info:id = "ND_image_color4" + asset inputs:file = @textures/color_palette_srgb_texture.exr@ ( + colorSpace = "sRGB - Texture" + ) + string inputs:filtertype = "cubic" + float2 inputs:texcoord.connect = + string inputs:uaddressmode = "periodic" + string inputs:vaddressmode = "periodic" + color4f outputs:out + } + + def Shader "file13_MayafileTexture" + { + uniform token info:id = "MayaND_fileTexture_color4" + string inputs:colorSpace = "sRGB - Texture" + color4f inputs:defaultColor = (0.5, 0.5, 0.5, 1) + color4f inputs:inColor.connect = + color4f inputs:uvCoord.connect = + color4f outputs:outColor + } + + def Shader "MayaConvert_file13_MayafileTexture" + { + uniform token info:id = "ND_convert_color4_color3" + color4f inputs:in.connect = + color3f outputs:out + } + + def Shader "place2dTexture13" + { + uniform token info:id = "ND_geompropvalue_vector2" + string inputs:geomprop.connect = + float2 outputs:out + } + } + } + } +} + diff --git a/test/testSamples/MaterialX/color_management_MTLX_Raw.usda b/test/testSamples/MaterialX/color_management_MTLX_Raw.usda new file mode 100644 index 0000000000..d77a5561bb --- /dev/null +++ b/test/testSamples/MaterialX/color_management_MTLX_Raw.usda @@ -0,0 +1,530 @@ +#usda 1.0 +( + defaultPrim = "pPlane1" + metersPerUnit = 0.01 + upAxis = "Y" +) + +def Mesh "pPlane1" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (-3.03, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface1SG" + { + string inputs:file1:varname = "st" + token outputs:mtlx:surface.connect = + + def Shader "usdPreviewSurface1" + { + uniform token info:id = "ND_UsdPreviewSurface_surfaceshader" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:out + } + + def NodeGraph "MayaNG_usdPreviewSurface1SG" + { + string inputs:file1:varname.connect = + color3f outputs:emissiveColor.connect = + + def Shader "file1" + { + uniform token info:id = "ND_image_color4" + asset inputs:file = @textures/color_palette_ACEScg.exr@ ( + colorSpace = "ACEScg" + ) + string inputs:filtertype = "cubic" + float2 inputs:texcoord.connect = + string inputs:uaddressmode = "periodic" + string inputs:vaddressmode = "periodic" + color4f outputs:out + } + + def Shader "MayaConvert_file1" + { + uniform token info:id = "ND_convert_color4_color3" + color4f inputs:in.connect = + color3f outputs:out + } + + def Shader "place2dTexture1" + { + uniform token info:id = "ND_geompropvalue_vector2" + string inputs:geomprop.connect = + float2 outputs:out + } + } + } + } +} + +def Mesh "pPlane2" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (-2.02, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface9SG" + { + string inputs:file8:varname = "st" + token outputs:mtlx:surface.connect = + + def Shader "usdPreviewSurface9" + { + uniform token info:id = "ND_UsdPreviewSurface_surfaceshader" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:out + } + + def NodeGraph "MayaNG_usdPreviewSurface9SG" + { + string inputs:file8:varname.connect = + color3f outputs:emissiveColor.connect = + + def Shader "file8" + { + uniform token info:id = "ND_image_color4" + asset inputs:file = @textures/color_palette_ADX10.exr@ ( + colorSpace = "ADX10" + ) + string inputs:filtertype = "cubic" + float2 inputs:texcoord.connect = + string inputs:uaddressmode = "periodic" + string inputs:vaddressmode = "periodic" + color4f outputs:out + } + + def Shader "MayaConvert_file8" + { + uniform token info:id = "ND_convert_color4_color3" + color4f inputs:in.connect = + color3f outputs:out + } + + def Shader "place2dTexture8" + { + uniform token info:id = "ND_geompropvalue_vector2" + string inputs:geomprop.connect = + float2 outputs:out + } + } + } + } +} + +def Mesh "pPlane3" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (-1.01, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface10SG" + { + string inputs:file9:varname = "st" + token outputs:mtlx:surface.connect = + + def Shader "usdPreviewSurface10" + { + uniform token info:id = "ND_UsdPreviewSurface_surfaceshader" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:out + } + + def NodeGraph "MayaNG_usdPreviewSurface10SG" + { + string inputs:file9:varname.connect = + color3f outputs:emissiveColor.connect = + + def Shader "file9" + { + uniform token info:id = "ND_image_color4" + asset inputs:file = @textures/color_palette_ADX16.exr@ ( + colorSpace = "ADX16" + ) + string inputs:filtertype = "cubic" + float2 inputs:texcoord.connect = + string inputs:uaddressmode = "periodic" + string inputs:vaddressmode = "periodic" + color4f outputs:out + } + + def Shader "MayaConvert_file9" + { + uniform token info:id = "ND_convert_color4_color3" + color4f inputs:in.connect = + color3f outputs:out + } + + def Shader "place2dTexture9" + { + uniform token info:id = "ND_geompropvalue_vector2" + string inputs:geomprop.connect = + float2 outputs:out + } + } + } + } +} + +def Mesh "pPlane4" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + + def Scope "mtl" + { + def Material "usdPreviewSurface11SG" + { + string inputs:file10:varname = "st" + token outputs:mtlx:surface.connect = + + def Shader "usdPreviewSurface11" + { + uniform token info:id = "ND_UsdPreviewSurface_surfaceshader" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:out + } + + def NodeGraph "MayaNG_usdPreviewSurface11SG" + { + string inputs:file10:varname.connect = + color3f outputs:emissiveColor.connect = + + def Shader "file10" + { + uniform token info:id = "ND_image_color4" + asset inputs:file = @textures/color_palette_arri_logc4.exr@ ( + colorSpace = "ARRI LogC4 - Curve" + ) + string inputs:filtertype = "cubic" + float2 inputs:texcoord.connect = + string inputs:uaddressmode = "periodic" + string inputs:vaddressmode = "periodic" + color4f outputs:out + } + + def Shader "MayaConvert_file10" + { + uniform token info:id = "ND_convert_color4_color3" + color4f inputs:in.connect = + color3f outputs:out + } + + def Shader "place2dTexture10" + { + uniform token info:id = "ND_geompropvalue_vector2" + string inputs:geomprop.connect = + float2 outputs:out + } + } + } + } +} + +def Mesh "pPlane5" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (1.01, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface12SG" + { + string inputs:file11:varname = "st" + token outputs:mtlx:surface.connect = + + def Shader "usdPreviewSurface12" + { + uniform token info:id = "ND_UsdPreviewSurface_surfaceshader" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:out + } + + def NodeGraph "MayaNG_usdPreviewSurface12SG" + { + string inputs:file11:varname.connect = + color3f outputs:emissiveColor.connect = + + def Shader "file11" + { + uniform token info:id = "ND_image_color4" + asset inputs:file = @textures/color_palette_g24_rec709.exr@ ( + colorSpace = "Gamma 2.4 Rec.709 - Texture" + ) + string inputs:filtertype = "cubic" + float2 inputs:texcoord.connect = + string inputs:uaddressmode = "periodic" + string inputs:vaddressmode = "periodic" + color4f outputs:out + } + + def Shader "MayaConvert_file11" + { + uniform token info:id = "ND_convert_color4_color3" + color4f inputs:in.connect = + color3f outputs:out + } + + def Shader "place2dTexture11" + { + uniform token info:id = "ND_geompropvalue_vector2" + string inputs:geomprop.connect = + float2 outputs:out + } + } + } + } +} + +def Mesh "pPlane6" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (2.02, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface13SG" + { + string inputs:file12:varname = "st" + token outputs:mtlx:surface.connect = + + def Shader "usdPreviewSurface13" + { + uniform token info:id = "ND_UsdPreviewSurface_surfaceshader" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:out + } + + def NodeGraph "MayaNG_usdPreviewSurface13SG" + { + string inputs:file12:varname.connect = + color3f outputs:emissiveColor.connect = + + def Shader "file12" + { + uniform token info:id = "ND_image_color4" + asset inputs:file = @textures/color_palette_lin_p3d65.exr@ ( + colorSpace = "Linear P3-D65" + ) + string inputs:filtertype = "cubic" + float2 inputs:texcoord.connect = + string inputs:uaddressmode = "periodic" + string inputs:vaddressmode = "periodic" + color4f outputs:out + } + + def Shader "MayaConvert_file12" + { + uniform token info:id = "ND_convert_color4_color3" + color4f inputs:in.connect = + color3f outputs:out + } + + def Shader "place2dTexture12" + { + uniform token info:id = "ND_geompropvalue_vector2" + string inputs:geomprop.connect = + float2 outputs:out + } + } + } + } +} + +def Mesh "pPlane7" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (3.03, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface14SG" + { + string inputs:file13:varname = "st" + token outputs:mtlx:surface.connect = + + def Shader "usdPreviewSurface14" + { + uniform token info:id = "ND_UsdPreviewSurface_surfaceshader" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:out + } + + def NodeGraph "MayaNG_usdPreviewSurface14SG" + { + string inputs:file13:varname.connect = + color3f outputs:emissiveColor.connect = + + def Shader "file13" + { + uniform token info:id = "ND_image_color4" + asset inputs:file = @textures/color_palette_srgb_texture.exr@ ( + colorSpace = "sRGB - Texture" + ) + string inputs:filtertype = "cubic" + float2 inputs:texcoord.connect = + string inputs:uaddressmode = "periodic" + string inputs:vaddressmode = "periodic" + color4f outputs:out + } + + def Shader "MayaConvert_file13" + { + uniform token info:id = "ND_convert_color4_color3" + color4f inputs:in.connect = + color3f outputs:out + } + + def Shader "place2dTexture13" + { + uniform token info:id = "ND_geompropvalue_vector2" + string inputs:geomprop.connect = + float2 outputs:out + } + } + } + } +} + diff --git a/test/testSamples/MaterialX/color_management_USD.usda b/test/testSamples/MaterialX/color_management_USD.usda new file mode 100644 index 0000000000..139e8a1bf4 --- /dev/null +++ b/test/testSamples/MaterialX/color_management_USD.usda @@ -0,0 +1,435 @@ +#usda 1.0 +( + defaultPrim = "pPlane1" + metersPerUnit = 0.01 + upAxis = "Y" +) + +def Mesh "pPlane1" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (-3.03, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface1SG" + { + string inputs:file1:varname = "st" + token outputs:surface.connect = + + def Shader "usdPreviewSurface1" + { + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:displacement + token outputs:surface + } + + def Shader "file1" + { + uniform token info:id = "UsdUVTexture" + float4 inputs:fallback = (0.5, 0.5, 0.5, 1) + asset inputs:file = @textures/color_palette_ACEScg.exr@ + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + float3 outputs:rgb + } + + def Shader "place2dTexture1" + { + uniform token info:id = "UsdPrimvarReader_float2" + string inputs:varname.connect = + float2 outputs:result + } + } + } +} + +def Mesh "pPlane2" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (-2.02, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface9SG" + { + string inputs:file8:varname = "st" + token outputs:surface.connect = + + def Shader "usdPreviewSurface9" + { + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:displacement + token outputs:surface + } + + def Shader "file8" + { + uniform token info:id = "UsdUVTexture" + float4 inputs:fallback = (0.5, 0.5, 0.5, 1) + asset inputs:file = @textures/color_palette_ADX10.exr@ + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + float3 outputs:rgb + } + + def Shader "place2dTexture8" + { + uniform token info:id = "UsdPrimvarReader_float2" + string inputs:varname.connect = + float2 outputs:result + } + } + } +} + +def Mesh "pPlane3" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (-1.01, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface10SG" + { + string inputs:file9:varname = "st" + token outputs:surface.connect = + + def Shader "usdPreviewSurface10" + { + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:displacement + token outputs:surface + } + + def Shader "file9" + { + uniform token info:id = "UsdUVTexture" + float4 inputs:fallback = (0.5, 0.5, 0.5, 1) + asset inputs:file = @textures/color_palette_ADX16.exr@ + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + float3 outputs:rgb + } + + def Shader "place2dTexture9" + { + uniform token info:id = "UsdPrimvarReader_float2" + string inputs:varname.connect = + float2 outputs:result + } + } + } +} + +def Mesh "pPlane4" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + + def Scope "mtl" + { + def Material "usdPreviewSurface11SG" + { + string inputs:file10:varname = "st" + token outputs:surface.connect = + + def Shader "usdPreviewSurface11" + { + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:displacement + token outputs:surface + } + + def Shader "file10" + { + uniform token info:id = "UsdUVTexture" + float4 inputs:fallback = (0.5, 0.5, 0.5, 1) + asset inputs:file = @textures/color_palette_arri_logc4.exr@ + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + float3 outputs:rgb + } + + def Shader "place2dTexture10" + { + uniform token info:id = "UsdPrimvarReader_float2" + string inputs:varname.connect = + float2 outputs:result + } + } + } +} + +def Mesh "pPlane5" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (1.01, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface12SG" + { + string inputs:file11:varname = "st" + token outputs:surface.connect = + + def Shader "usdPreviewSurface12" + { + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:displacement + token outputs:surface + } + + def Shader "file11" + { + uniform token info:id = "UsdUVTexture" + float4 inputs:fallback = (0.5, 0.5, 0.5, 1) + asset inputs:file = @textures/color_palette_g24_rec709.exr@ + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + float3 outputs:rgb + } + + def Shader "place2dTexture11" + { + uniform token info:id = "UsdPrimvarReader_float2" + string inputs:varname.connect = + float2 outputs:result + } + } + } +} + +def Mesh "pPlane6" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (2.02, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface13SG" + { + string inputs:file12:varname = "st" + token outputs:surface.connect = + + def Shader "usdPreviewSurface13" + { + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:displacement + token outputs:surface + } + + def Shader "file12" + { + uniform token info:id = "UsdUVTexture" + float4 inputs:fallback = (0.5, 0.5, 0.5, 1) + asset inputs:file = @textures/color_palette_lin_p3d65.exr@ + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + float3 outputs:rgb + } + + def Shader "place2dTexture12" + { + uniform token info:id = "UsdPrimvarReader_float2" + string inputs:varname.connect = + float2 outputs:result + } + } + } +} + +def Mesh "pPlane7" ( + prepend apiSchemas = ["MaterialBindingAPI"] + kind = "component" +) +{ + uniform bool doubleSided = 1 + float3[] extent = [(-0.5, 0, -0.25), (0.5, 0, 0.25)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + rel material:binding = + point3f[] points = [(-0.5, 0, 0.25), (0.5, 0, 0.25), (-0.5, 0, -0.25), (0.5, 0, -0.25)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (0, 1), (1, 1)] ( + customData = { + dictionary Maya = { + token name = "map1" + } + } + interpolation = "faceVarying" + ) + int[] primvars:st:indices = [0, 1, 3, 2] + double3 xformOp:translate = (3.03, 0, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Scope "mtl" + { + def Material "usdPreviewSurface14SG" + { + string inputs:file13:varname = "st" + token outputs:surface.connect = + + def Shader "usdPreviewSurface14" + { + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor = (0, 0, 0) + color3f inputs:emissiveColor.connect = + float inputs:roughness = 1 + token outputs:displacement + token outputs:surface + } + + def Shader "file13" + { + uniform token info:id = "UsdUVTexture" + float4 inputs:fallback = (0.5, 0.5, 0.5, 1) + asset inputs:file = @textures/color_palette_srgb_texture.exr@ ( + colorSpace = "sRGB" + ) + token inputs:sourceColorSpace = "sRGB" + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + float3 outputs:rgb + } + + def Shader "place2dTexture13" + { + uniform token info:id = "UsdPrimvarReader_float2" + string inputs:varname.connect = + float2 outputs:result + } + } + } +} + diff --git a/test/testSamples/MaterialX/studio-config-v1.0.0_aces-v1.3_ocio-v2.0.ocio b/test/testSamples/MaterialX/studio-config-v1.0.0_aces-v1.3_ocio-v2.0.ocio new file mode 100644 index 0000000000..ccbf7f5c5d --- /dev/null +++ b/test/testSamples/MaterialX/studio-config-v1.0.0_aces-v1.3_ocio-v2.0.ocio @@ -0,0 +1,1238 @@ +ocio_profile_version: 2 + +environment: + {} +search_path: "" +strictparsing: true +luma: [0.2126, 0.7152, 0.0722] +name: studio-config-v1.0.0_aces-v1.3_ocio-v2.0 +description: | + Academy Color Encoding System - Studio Config [COLORSPACES v1.0.0] [ACES v1.3] [OCIO v2.0] + ------------------------------------------------------------------------------------------ + + This "OpenColorIO" config is geared toward studios requiring a config that includes a wide variety of camera colorspaces, displays and looks. + + Generated with "OpenColorIO-Config-ACES" v1.0.0 on the 2022/10/26 at 05:59. + +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: sRGB - Texture + scene_linear: ACEScg + texture_paint: ACEScct + +file_rules: + - ! {name: ACESCG, extension: "exr", pattern: "*ACEScg*", colorspace: ACEScg} + - ! {name: ADX10, extension: "exr", pattern: "*ADX10*", colorspace: ADX10} + - ! {name: ADX16, extension: "exr", pattern: "*ADX16*", colorspace: ADX16} + - ! {name: G24REC709, extension: "exr", pattern: "*g24_rec709*", colorspace: Gamma 2.4 Rec.709 - Texture} + - ! {name: LINP3D65, extension: "exr", pattern: "*lin_p3d65*", colorspace: Linear P3-D65} + - ! {name: SRGB, extension: "exr", pattern: "*srgb_texture*", colorspace: sRGB - Texture} + - ! {name: ARRILOGC4, extension: "exr", pattern: "*arri_logc4*", colorspace: ARRI LogC4 - Curve} + - ! {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 (D60 sim on D65), view_transform: ACES 1.1 - SDR Cinema (D60 sim on D65), 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 (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] + 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 (D60 sim on D65), ACES 1.1 - SDR Cinema (Rec.709 lim), 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, 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 (D60 sim on D65), ACES 1.1 - SDR Cinema (Rec.709 lim), ACES 1.0 - SDR Cinema (D60 sim on DCI), ACES 1.1 - SDR Cinema (D65 sim on DCI), ACES 1.1 - HDR Cinema (108 nits & P3 lim), Un-tone-mapped, Raw] +inactive_colorspaces: [CIE-XYZ-D65, sRGB - Display, Rec.1886 Rec.709 - Display, Rec.1886 Rec.2020 - Display, sRGB - Display, Rec.1886 Rec.709 - Display, Rec.1886 Rec.2020 - Display, Rec.1886 Rec.2020 - Display, Rec.2100-HLG - Display, Rec.2100-PQ - Display, Rec.2100-PQ - Display, Rec.2100-PQ - Display, ST2084-P3-D65 - Display, ST2084-P3-D65 - Display, ST2084-P3-D65 - Display, P3-D60 - Display, P3-D65 - Display, P3-D65 - Display, P3-D65 - Display, P3-DCI - Display, P3-DCI - Display, ST2084-P3-D65 - Display] + +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.Rec709_100nits_dim.a1.0.3 + ACEStransformID: urn:ampas:aces:transformId:v1.5:ODT.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.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 + 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 + 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 + 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 + 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 + 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 + 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 + from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-CINEMA_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 + from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-CINEMA-D60sim-D65_1.1} + + - ! + 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 + from_scene_reference: ! {style: ACES-OUTPUT - ACES2065-1_to_CIE-XYZ-D65 - SDR-CINEMA-D60sim-DCI_1.0} + + - ! + 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 + 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 + 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) + isdata: false + categories: [file-io] + encoding: sdr-video + allocation: uniform + from_display_reference: ! {style: DISPLAY - CIE-XYZ-D65_to_sRGB} + + - ! + 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) + 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) + 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 + 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 + 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 + 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) + 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 + 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) + 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 + 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 + 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 + isdata: false + categories: [file-io, working-space] + 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.0836578932872399, 0, 0.0854149797421404, 1.01747087860704, -0.102885858349182, 0, 0.00205652166929683, -0.0625625003847921, 1.0605059787155, 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 + 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.0836578932872399, 0, 0.0854149797421404, 1.01747087860704, -0.102885858349182, 0, 0.00205652166929683, -0.0625625003847921, 1.0605059787155, 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 + 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 + 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 + 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: 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 to ACES2065-1 + 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 + 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 + 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 + 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 + 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 + 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 + 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] + 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] + 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] + 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] + 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] + 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, 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] + 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] + 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] + 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, 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] + 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 - 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] + 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] + 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: + - ! {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} + + - ! + name: ARRI LogC4 - Curve + aliases: [arri_logc4_crv] + description: | + Convert ARRI LogC4 Curve to Relative Scene Linear + + CLFtransformID: urn:aswf:ocio:transformId:1.0:ARRI:Input:ARRI_LogC4_Curve_to_Linear:1.0 + family: Input/ARRI + categories: [file-io] + encoding: log + transform: ! + name: ARRI LogC4 Curve to Relative Scene Linear + 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} + + - ! + name: BMDFilm Gen5 Log - Curve + aliases: [bmdfilm_gen5_log_crv] + description: | + Convert Blackmagic Film (Gen 5) Log to Blackmagic Film (Gen 5) Linear + + CLFtransformID: urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:BMDFilm_Gen5_Log-Curve_to_Linear:1.0 + family: Input/BlackmagicDesign + categories: [file-io] + encoding: log + transform: ! + name: Blackmagic Film (Gen 5) Log to Linear Curve + 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} + + - ! + name: DaVinci Intermediate Log - Curve + aliases: [davinci_intermediate_log_crv] + description: | + Convert DaVinci Intermediate Log to DaVinci Intermediate Linear + + CLFtransformID: urn:aswf:ocio:transformId:1.0:BlackmagicDesign:Input:DaVinci_Intermediate_Log-Curve_to_Linear:1.0 + family: Input/BlackmagicDesign + categories: [file-io] + encoding: log + transform: ! + name: DaVinci Intermediate Log to Linear Curve + 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} + + - ! + name: V-Log - Curve + aliases: [vlog_crv, Input - Panasonic - Curve - V-Log, crv_vlog] + description: | + Convert Panasonic V-Log Log (arbitrary primaries) to Panasonic V-Log Linear (arbitrary primaries) + + CLFtransformID: urn:aswf:ocio:transformId:1.0:Panasonic:Input:VLog-Curve_to_Linear:1.0 + family: Input/Panasonic + categories: [file-io] + encoding: log + transform: ! + name: Panasonic V-Log Log to Linear Curve + 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} + + - ! + name: Log3G10 - Curve + aliases: [log3g10_crv, Input - RED - Curve - REDLog3G10, crv_rl3g10] + description: | + Convert RED Log3G10 Log (arbitrary primaries) to RED Log3G10 Linear (arbitrary primaries) + + CLFtransformID: urn:aswf:ocio:transformId:1.0:RED:Input:Log3G10-Curve_to_Linear:1.0 + family: Input/RED + categories: [file-io] + encoding: log + transform: ! + name: RED Log3G10 Log to Linear Curve + 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} + + - ! + name: S-Log3 - Curve + aliases: [slog3_crv, Input - Sony - Curve - S-Log3, crv_slog3] + description: | + Convert S-Log3 Log (arbitrary primaries) to S-Log3 Linear (arbitrary primaries) + + CLFtransformID: urn:aswf:ocio:transformId:1.0:Sony:Input:SLog3-Curve_to_Linear:1.0 + family: Input/Sony + categories: [file-io] + encoding: log + transform: ! + name: S-Log3 Log to Linear Curve + 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} + + - ! + name: Rec.1886 - Curve + aliases: [rec1886_crv, Utility - Curve - Rec.1886, crv_rec1886] + description: | + Convert generic linear RGB to generic gamma-corrected RGB + + CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:Linear_to_Rec1886-Curve:1.0 + family: Utility + categories: [file-io] + encoding: sdr-video + inverse_transform: ! + name: Linear to Rec.1886 + children: + - ! {value: 2.4, style: pass_thru, direction: inverse} + + - ! + name: Rec.709 - Curve + aliases: [rec709_crv, Utility - Curve - Rec.709, crv_rec709] + description: | + Convert generic linear RGB to generic gamma-corrected RGB + + CLFtransformID: urn:aswf:ocio:transformId:1.0:ITU:Utility:Linear_to_Rec709-Curve:1.0 + family: Utility/ITU + categories: [file-io] + encoding: sdr-video + inverse_transform: ! + name: Linear to Rec.709 + children: + - ! {gamma: 2.22222222222222, offset: 0.099, direction: inverse} + + - ! + name: sRGB - Curve + aliases: [srgb_crv, Utility - Curve - sRGB, crv_srgb] + description: | + Convert generic linear RGB to generic gamma-corrected RGB + + CLFtransformID: urn:aswf:ocio:transformId:1.0:OCIO:Utility:Linear_to_sRGB-Curve:1.0 + family: Utility + categories: [file-io] + encoding: sdr-video + inverse_transform: ! + name: Linear to sRGB + children: + - ! {gamma: 2.4, offset: 0.055, direction: inverse} + + - ! + name: ST-2084 - Curve + aliases: [st_2084_crv] + description: Convert linear nits/100 to SMPTE ST-2084 (PQ) full-range + family: Utility + categories: [file-io] + encoding: hdr-video + inverse_transform: ! {style: CURVE - LINEAR_to_ST-2084} diff --git a/test/testSamples/MaterialX/textures/color_palette_ACEScg.exr b/test/testSamples/MaterialX/textures/color_palette_ACEScg.exr new file mode 100644 index 0000000000..7be5437ac9 Binary files /dev/null and b/test/testSamples/MaterialX/textures/color_palette_ACEScg.exr differ diff --git a/test/testSamples/MaterialX/textures/color_palette_ADX10.exr b/test/testSamples/MaterialX/textures/color_palette_ADX10.exr new file mode 100644 index 0000000000..9e3513b5f8 Binary files /dev/null and b/test/testSamples/MaterialX/textures/color_palette_ADX10.exr differ diff --git a/test/testSamples/MaterialX/textures/color_palette_ADX16.exr b/test/testSamples/MaterialX/textures/color_palette_ADX16.exr new file mode 100644 index 0000000000..95ff11cd87 Binary files /dev/null and b/test/testSamples/MaterialX/textures/color_palette_ADX16.exr differ diff --git a/test/testSamples/MaterialX/textures/color_palette_arri_logc4.exr b/test/testSamples/MaterialX/textures/color_palette_arri_logc4.exr new file mode 100644 index 0000000000..7848095c63 Binary files /dev/null and b/test/testSamples/MaterialX/textures/color_palette_arri_logc4.exr differ diff --git a/test/testSamples/MaterialX/textures/color_palette_g24_rec709.exr b/test/testSamples/MaterialX/textures/color_palette_g24_rec709.exr new file mode 100644 index 0000000000..b9cd57b854 Binary files /dev/null and b/test/testSamples/MaterialX/textures/color_palette_g24_rec709.exr differ diff --git a/test/testSamples/MaterialX/textures/color_palette_lin_p3d65.exr b/test/testSamples/MaterialX/textures/color_palette_lin_p3d65.exr new file mode 100644 index 0000000000..846e330fe9 Binary files /dev/null and b/test/testSamples/MaterialX/textures/color_palette_lin_p3d65.exr differ diff --git a/test/testSamples/MaterialX/textures/color_palette_srgb_texture.exr b/test/testSamples/MaterialX/textures/color_palette_srgb_texture.exr new file mode 100644 index 0000000000..7fc53ce40c Binary files /dev/null and b/test/testSamples/MaterialX/textures/color_palette_srgb_texture.exr differ