From 569b0441e4736df2b0002bc75907e71b2c12a47c Mon Sep 17 00:00:00 2001 From: Jonathan Stone Date: Wed, 5 Feb 2025 14:55:41 -0800 Subject: [PATCH] Improvements to 'normalmap' upgrade logic This changelist improves the upgrade logic for the `normalmap` node in v1.38 documents, extending support to nodes with explicit `nodedef` attributes, while maintaining support for nodes without them. Two examples of v1.38 `normalmap` nodes have been added to the `TestSuite/stdlib/upgrade` folder for validation in unit testing. --- .../TestSuite/stdlib/upgrade/syntax_1_38.mtlx | 38 +++++++++++++++++++ source/MaterialXCore/Version.cpp | 7 +--- 2 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 resources/Materials/TestSuite/stdlib/upgrade/syntax_1_38.mtlx diff --git a/resources/Materials/TestSuite/stdlib/upgrade/syntax_1_38.mtlx b/resources/Materials/TestSuite/stdlib/upgrade/syntax_1_38.mtlx new file mode 100644 index 0000000000..575edbd800 --- /dev/null +++ b/resources/Materials/TestSuite/stdlib/upgrade/syntax_1_38.mtlx @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/MaterialXCore/Version.cpp b/source/MaterialXCore/Version.cpp index a1a6e16d5b..e1b6604bc6 100644 --- a/source/MaterialXCore/Version.cpp +++ b/source/MaterialXCore/Version.cpp @@ -1316,11 +1316,8 @@ void Document::upgradeVersion() } else if (nodeCategory == "normalmap") { - // ND_normalmap was renamed to ND_normalmap_float - NodeDefPtr nodeDef = getShaderNodeDef(node); - InputPtr scaleInput = node->getInput("scale"); - if ((nodeDef && nodeDef->getName() == "ND_normalmap") || - (scaleInput && scaleInput->getType() == "float")) + // Handle a rename of the float-typed nodedef. + if (node->getNodeDefString() == "ND_normalmap") { node->setNodeDefString("ND_normalmap_float"); }