From 5b561698e717f9720a3a65cb4a5c2ef8ca100149 Mon Sep 17 00:00:00 2001 From: krickw Date: Fri, 4 Jun 2021 14:19:52 -0400 Subject: [PATCH 1/6] Add support for card draw mode in Vp2RenderDelegate. --- .../render/vp2RenderDelegate/material.cpp | 183 ++++++++++-- lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp | 34 +++ .../render/vp2ShaderFragments/CMakeLists.txt | 1 + .../vp2ShaderFragments/UsdDrawModeCards.xml | 267 ++++++++++++++++++ .../vp2ShaderFragments/shaderFragments.cpp | 2 + 5 files changed, 471 insertions(+), 16 deletions(-) create mode 100644 lib/mayaUsd/render/vp2ShaderFragments/UsdDrawModeCards.xml diff --git a/lib/mayaUsd/render/vp2RenderDelegate/material.cpp b/lib/mayaUsd/render/vp2RenderDelegate/material.cpp index aa6b54f02a..a423ed8760 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/material.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/material.cpp @@ -31,6 +31,8 @@ #include #include #include +#include "pxr/usd/sdr/registry.h" +#include "pxr/usd/sdr/shaderNode.h" #include #include @@ -77,10 +79,14 @@ TF_DEFINE_PRIVATE_TOKENS( (opacity) (st) (varname) + (result) + (cardsUv) + (glslfx) (input) (output) + (diffuseColor) (rgb) (r) (g) @@ -99,11 +105,29 @@ TF_DEFINE_PRIVATE_TOKENS( (Float4ToFloatW) (Float4ToFloat3) + (UsdDrawModeCards) + (FallbackShader) + (mayaIsBackFacing) + (isBackfacing) + (UsdPrimvarReader_color) (UsdPrimvarReader_vector) ); // clang-format on +TfToken _DrawModeCards = TfToken("drawMode.glslfx"); //!< can't make a token the normal way because it has a '.' in it. + +bool _IsUsdDrawModeId(const TfToken& id) +{ + return id == _DrawModeCards || + id == _tokens->UsdDrawModeCards; +} + +bool _IsUsdDrawModeNode(const HdMaterialNode& node) +{ + return _IsUsdDrawModeId(node.identifier); +} + //! Helper utility function to test whether a node is a UsdShade primvar reader. bool _IsUsdPrimvarReader(const HdMaterialNode& node) { @@ -113,7 +137,13 @@ bool _IsUsdPrimvarReader(const HdMaterialNode& node) || id == UsdImagingTokens->UsdPrimvarReader_float2 || id == UsdImagingTokens->UsdPrimvarReader_float3 || id == UsdImagingTokens->UsdPrimvarReader_float4 - || id == _tokens->UsdPrimvarReader_vector); + || id == _tokens->UsdPrimvarReader_vector + || id == UsdImagingTokens->UsdPrimvarReader_int); +} + +bool _IsUsdFloat2PrimvarReader(const HdMaterialNode& node) +{ + return (node.identifier == UsdImagingTokens->UsdPrimvarReader_float2); } //! Helper utility function to test whether a node is a UsdShade UV texture. @@ -837,6 +867,15 @@ void HdVP2Material::_ApplyVP2Fixes(HdMaterialNetwork& outNet, const HdMaterialNe tmpNet.nodes.reserve(numNodes); tmpNet.relationships.reserve(numRelationships); + // Some material networks require us to nodes and connections to the base + // HdMaterialNetwork. Keep track of the existence of some key nodes to help + // with performance. + HdMaterialNode* usdDrawModeCardsNode = nullptr; + HdMaterialNode* stPrimvarReader = nullptr; + + // Get the shader registry so I can look up the real names of shading nodes. + SdrRegistry &shaderReg = SdrRegistry::GetInstance(); + // Replace the authored node paths with simplified paths in the form of "node#". By doing so // we will be able to reuse shader effects among material networks which have the same node // identifiers and relationships but different node paths, reduce shader compilation overhead @@ -845,6 +884,26 @@ void HdVP2Material::_ApplyVP2Fixes(HdMaterialNetwork& outNet, const HdMaterialNe tmpNet.nodes.push_back(node); HdMaterialNode& outNode = tmpNet.nodes.back(); + + // For card draw mode the HdMaterialNode will have an identifier which is the hash of the file + // path to drawMode.glslfx on disk. Using that value I can get the SdrShaderNode, and then + // get the actual name of the shader "drawMode.glslfx". + // For other node names the HdMaterialNode identifier and the SdrShaderNode name seem to be + // the same, so just convert everything to use the SdrShaderNode name. + SdrShaderNodeConstPtr sdrNode = shaderReg.GetShaderNodeByIdentifierAndType(outNode.identifier, _tokens->glslfx); + outNode.identifier = TfToken(sdrNode->GetName()); + + if (_IsUsdDrawModeNode(outNode)) { + outNode.identifier = _tokens->UsdDrawModeCards; // I can't easily name a Maya fragment something with a '.' in it, so pick a different fragment name. + TF_VERIFY(!usdDrawModeCardsNode); // there should only be one. + usdDrawModeCardsNode = &outNode; + } + + if (_IsUsdFloat2PrimvarReader(outNode)) { + TF_VERIFY(!stPrimvarReader); // I haven't thought about what to do for multiple UV sets! + stPrimvarReader = &outNode; + } + outNode.path = SdfPath(outNode.identifier.GetString() + std::to_string(++nodeCounter)); _nodePathMap[node.path] = outNode.path; @@ -863,26 +922,93 @@ void HdVP2Material::_ApplyVP2Fixes(HdMaterialNetwork& outNet, const HdMaterialNe outNet.relationships.reserve(numRelationships * 2); outNet.primvars.reserve(numNodes); - // Add passthrough nodes for vector component access. - for (const HdMaterialNode& node : tmpNet.nodes) { - TfToken primvarToRead; + // Add additional nodes necessary for Maya's fragment compiler + // to work that are logical predecessors of node. + auto addPredecessorNodes = [&](const HdMaterialNode& node) { + // If the node is a UsdUVTexture node, verify there is a UsdPrimvarReader_float2 connected + // to the st input of it. If not, find the basic st reader and/or create it and connect it + if (_IsUsdUVTexture(node)) { + // the DrawModeCardsFragment has UsdUVtexture nodes without primvar readers. + // Add a primvar reader to each UsdUVTexture which doesn't already have one. + if (!stPrimvarReader) + { + HdMaterialNode stReader; + stReader.identifier = UsdImagingTokens->UsdPrimvarReader_float2; + stReader.path = SdfPath(stReader.identifier.GetString() + std::to_string(++nodeCounter)); + stReader.parameters[_tokens->varname] = _tokens->cardsUv; + outNet.nodes.push_back(stReader); + stPrimvarReader = &outNet.nodes.back(); + outNet.primvars.push_back(_tokens->cardsUv); + } - const bool isUsdPrimvarReader = _IsUsdPrimvarReader(node); - if (isUsdPrimvarReader) { - auto it = node.parameters.find(_tokens->varname); - if (it != node.parameters.end()) { - primvarToRead = TfToken(TfStringify(it->second)); + // search for an existing relationship between stPrimvarReader & node. + // TODO: if there are multiple UV sets this can fail, it is looking for + // a connection to a specific UsdPrimvarReader_float2. + bool hasRelationship = false; + for (const HdMaterialRelationship& rel : tmpNet.relationships) { + if (rel.inputId == stPrimvarReader->path && + rel.inputName == _tokens->result && + rel.outputId == node.path && + rel.outputName == _tokens->st) { + hasRelationship = true; + break; + } + } + + if (!hasRelationship) + { + // The only case I'm currently aware of where we have UsdUVTexture nodes without + // a corresponding UsdPrimvarReader_float2 to read the UVs is draw mode cards. + // There could be other cases, and it could be find to add the primvar reader + // and connection, but we want to know when it is happening. + TF_VERIFY(usdDrawModeCardsNode); + + HdMaterialRelationship newRel + = { stPrimvarReader->path, _tokens->result, node.path, _tokens->st }; + outNet.relationships.push_back(newRel); } } - outNet.nodes.push_back(node); + // If the node is a DrawModeCardsFragment add a MayaIsBackFacing fragment to cull out backfaces. + if (_IsUsdDrawModeNode(node)) { + // Add the MayaIsBackFacing fragment + HdMaterialNode mayaIsBackFacingNode; + mayaIsBackFacingNode.identifier = _tokens->mayaIsBackFacing; + mayaIsBackFacingNode.path = SdfPath(mayaIsBackFacingNode.identifier.GetString() + std::to_string(++nodeCounter)); + outNet.nodes.push_back(mayaIsBackFacingNode); - // If the primvar reader is reading color or opacity, replace it with - // UsdPrimvarReader_color which can create COLOR stream requirement - // instead of generic TEXCOORD stream. - if (primvarToRead == HdTokens->displayColor || primvarToRead == HdTokens->displayOpacity) { - HdMaterialNode& nodeToChange = outNet.nodes.back(); - nodeToChange.identifier = _tokens->UsdPrimvarReader_color; + // Connect to the isBackfacing input of the DrawModeCards fragment + HdMaterialRelationship newRel = { mayaIsBackFacingNode.path, _tokens->mayaIsBackFacing, node.path, _tokens->isBackfacing }; + outNet.relationships.push_back(newRel); + } + }; + + // Add additional nodes necessary for Maya's fragment compiler + // to work that are logical successors of node. + auto addSuccessorNodes = [&](const HdMaterialNode& node, const TfToken& primvarToRead) + { + // If the node is a DrawModeCardsFragment add the fallback material after it to do + // the lighting etc. + if (_IsUsdDrawModeNode(node)) { + + // Add the fallback shader node and hook it up. This has to be the last node in outNet.nodes. + HdMaterialNode fallbackShaderNode; + fallbackShaderNode.identifier = _tokens->FallbackShader; + fallbackShaderNode.path = SdfPath(fallbackShaderNode.identifier.GetString() + std::to_string(++nodeCounter)); + outNet.nodes.push_back(fallbackShaderNode); + + // The DrawModeCards fragment is basically a texture picker. Connect its output to + // the diffuseColor input of the fallback shader node. + HdMaterialRelationship newRel + = { node.path, _tokens->output, fallbackShaderNode.path, _tokens->diffuseColor }; + outNet.relationships.push_back(newRel); + + // Add the required primvars + outNet.primvars.push_back(HdTokens->points); + outNet.primvars.push_back(HdTokens->normals); + + // no passthrough nodes necessary between the draw mode cards node & the fallback shader. + continue; } // Copy outgoing connections and if needed add passthrough node/connection. @@ -924,6 +1050,31 @@ void HdVP2Material::_ApplyVP2Fixes(HdMaterialNetwork& outNet, const HdMaterialNe newRel = { passThroughPath, _tokens->output, rel.outputId, rel.outputName }; outNet.relationships.push_back(newRel); } + }; + + // Add nodes necessary for the fragment compiler to produce a shader that works. + for (const HdMaterialNode& node : tmpNet.nodes) { + TfToken primvarToRead; + + const bool isUsdPrimvarReader = _IsUsdPrimvarReader(node); + if (isUsdPrimvarReader) { + auto it = node.parameters.find(_tokens->varname); + if (it != node.parameters.end()) { + primvarToRead = TfToken(TfStringify(it->second)); + } + } + + addPredecessorNodes(node); + outNet.nodes.push_back(node); + addSuccessorNodes(node, primvarToRead); + + // If the primvar reader is reading color or opacity, replace it with + // UsdPrimvarReader_color which can create COLOR stream requirement + // instead of generic TEXCOORD stream. + if (primvarToRead == HdTokens->displayColor || primvarToRead == HdTokens->displayOpacity) { + HdMaterialNode& nodeToChange = outNet.nodes.back(); + nodeToChange.identifier = _tokens->UsdPrimvarReader_color; + } // Normal map is not supported yet. For now primvars:normals is used for // shading, which is also the current behavior of USD/Hydra. diff --git a/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp b/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp index f571800235..94b7f3b8fd 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp @@ -764,6 +764,40 @@ void HdVP2Mesh::_PrepareSharedVertexBuffers( interp); } } + } else if (value.IsHolding()) { + if (!buffer) { + const MHWRender::MVertexBufferDescriptor vbDesc( + "", semantic, MHWRender::MGeometry::kFloat, 1); //kInt32 + + buffer = new MHWRender::MVertexBuffer(vbDesc); + _meshSharedData->_primvarInfo[token]->_buffer.reset(buffer); + } + + if (buffer) { + bufferData = _meshSharedData->_numVertices > 0 + ? buffer->acquire(_meshSharedData->_numVertices, true) + : nullptr; + if (bufferData) { + const VtIntArray& primvarData = value.UncheckedGet(); + + VtFloatArray convertedPrimvarData; + convertedPrimvarData.reserve(primvarData.size()); + for(auto& source : primvarData) { + convertedPrimvarData.push_back(static_cast(source)); + } + + _FillPrimvarData( + static_cast(bufferData), + _meshSharedData->_numVertices, + 0, + _meshSharedData->_renderingToSceneFaceVtxIds, + _rprimId, + _meshSharedData->_topology, + token, + convertedPrimvarData, + interp); + } + } } else { TF_WARN("Unsupported primvar array"); } diff --git a/lib/mayaUsd/render/vp2ShaderFragments/CMakeLists.txt b/lib/mayaUsd/render/vp2ShaderFragments/CMakeLists.txt index ab2550596a..9a0c8ca54b 100644 --- a/lib/mayaUsd/render/vp2ShaderFragments/CMakeLists.txt +++ b/lib/mayaUsd/render/vp2ShaderFragments/CMakeLists.txt @@ -48,6 +48,7 @@ list(APPEND SHADERFRAGMENTS_XMLS Float4ToFloat3.xml Float4ToFloat4.xml NwFaceCameraIfNAN.xml + UsdDrawModeCards.xml UsdPrimvarColor.xml UsdPrimvarReader_color.xml UsdPrimvarReader_float.xml diff --git a/lib/mayaUsd/render/vp2ShaderFragments/UsdDrawModeCards.xml b/lib/mayaUsd/render/vp2ShaderFragments/UsdDrawModeCards.xml new file mode 100644 index 0000000000..206f64fde7 --- /dev/null +++ b/lib/mayaUsd/render/vp2ShaderFragments/UsdDrawModeCards.xml @@ -0,0 +1,267 @@ + + + + Computes drawMode = "cards" fragment using latest maya lighting functions, from drawMode.glslfx + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/mayaUsd/render/vp2ShaderFragments/shaderFragments.cpp b/lib/mayaUsd/render/vp2ShaderFragments/shaderFragments.cpp index 82dd9fd19c..8186cdb6fe 100644 --- a/lib/mayaUsd/render/vp2ShaderFragments/shaderFragments.cpp +++ b/lib/mayaUsd/render/vp2ShaderFragments/shaderFragments.cpp @@ -67,6 +67,7 @@ TF_DEFINE_PRIVATE_TOKENS( (scaledDiffusePassThrough) (scaledSpecularPassThrough) (opacityToTransparency) + (UsdDrawModeCards) (usdPreviewSurfaceLightingAPI1) (usdPreviewSurfaceLightingAPI2) (usdPreviewSurfaceCombiner) @@ -124,6 +125,7 @@ static const TfTokenVector _FragmentNames = { _tokens->BasisCurvesCubicColorDoma _tokens->scaledDiffusePassThrough, _tokens->scaledSpecularPassThrough, _tokens->opacityToTransparency, + _tokens->UsdDrawModeCards, _tokens->usdPreviewSurfaceLightingAPI1, _tokens->usdPreviewSurfaceLightingAPI2, _tokens->usdPreviewSurfaceCombiner }; From 56f9a96f175231bc9ed9f66aacba9a2d126b8739 Mon Sep 17 00:00:00 2001 From: krickw Date: Fri, 4 Jun 2021 15:08:56 -0400 Subject: [PATCH 2/6] Fix HLSL & cg versions of the fragment. --- .../render/vp2RenderDelegate/material.cpp | 2 +- .../vp2ShaderFragments/UsdDrawModeCards.xml | 214 +++++++++--------- 2 files changed, 112 insertions(+), 104 deletions(-) diff --git a/lib/mayaUsd/render/vp2RenderDelegate/material.cpp b/lib/mayaUsd/render/vp2RenderDelegate/material.cpp index a423ed8760..298be7e4a0 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/material.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/material.cpp @@ -1008,7 +1008,7 @@ void HdVP2Material::_ApplyVP2Fixes(HdMaterialNetwork& outNet, const HdMaterialNe outNet.primvars.push_back(HdTokens->normals); // no passthrough nodes necessary between the draw mode cards node & the fallback shader. - continue; + return; } // Copy outgoing connections and if needed add passthrough node/connection. diff --git a/lib/mayaUsd/render/vp2ShaderFragments/UsdDrawModeCards.xml b/lib/mayaUsd/render/vp2ShaderFragments/UsdDrawModeCards.xml index 206f64fde7..40f18d0166 100644 --- a/lib/mayaUsd/render/vp2ShaderFragments/UsdDrawModeCards.xml +++ b/lib/mayaUsd/render/vp2ShaderFragments/UsdDrawModeCards.xml @@ -16,7 +16,7 @@ limitations under the License. --> - Computes drawMode = "cards" fragment using latest maya lighting functions, from drawMode.glslfx + Computes drawMode = "cards" fragment, from drawMode.glslfx @@ -62,64 +62,68 @@ limitations under the License. - + - + Date: Fri, 4 Jun 2021 15:27:55 -0400 Subject: [PATCH 3/6] Clang Format. --- .../render/vp2RenderDelegate/material.cpp | 79 ++++++++++--------- lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp | 6 +- 2 files changed, 44 insertions(+), 41 deletions(-) diff --git a/lib/mayaUsd/render/vp2RenderDelegate/material.cpp b/lib/mayaUsd/render/vp2RenderDelegate/material.cpp index 298be7e4a0..5086251f3a 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/material.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/material.cpp @@ -16,6 +16,8 @@ #include "material.h" #include "debugCodes.h" +#include "pxr/usd/sdr/registry.h" +#include "pxr/usd/sdr/shaderNode.h" #include "render_delegate.h" #include @@ -31,8 +33,6 @@ #include #include #include -#include "pxr/usd/sdr/registry.h" -#include "pxr/usd/sdr/shaderNode.h" #include #include @@ -115,18 +115,15 @@ TF_DEFINE_PRIVATE_TOKENS( ); // clang-format on -TfToken _DrawModeCards = TfToken("drawMode.glslfx"); //!< can't make a token the normal way because it has a '.' in it. +TfToken _DrawModeCards + = TfToken("drawMode.glslfx"); //!< can't make a token the normal way because it has a '.' in it. bool _IsUsdDrawModeId(const TfToken& id) { - return id == _DrawModeCards || - id == _tokens->UsdDrawModeCards; + return id == _DrawModeCards || id == _tokens->UsdDrawModeCards; } -bool _IsUsdDrawModeNode(const HdMaterialNode& node) -{ - return _IsUsdDrawModeId(node.identifier); -} +bool _IsUsdDrawModeNode(const HdMaterialNode& node) { return _IsUsdDrawModeId(node.identifier); } //! Helper utility function to test whether a node is a UsdShade primvar reader. bool _IsUsdPrimvarReader(const HdMaterialNode& node) @@ -136,8 +133,7 @@ bool _IsUsdPrimvarReader(const HdMaterialNode& node) id == UsdImagingTokens->UsdPrimvarReader_float || id == UsdImagingTokens->UsdPrimvarReader_float2 || id == UsdImagingTokens->UsdPrimvarReader_float3 - || id == UsdImagingTokens->UsdPrimvarReader_float4 - || id == _tokens->UsdPrimvarReader_vector + || id == UsdImagingTokens->UsdPrimvarReader_float4 || id == _tokens->UsdPrimvarReader_vector || id == UsdImagingTokens->UsdPrimvarReader_int); } @@ -874,7 +870,7 @@ void HdVP2Material::_ApplyVP2Fixes(HdMaterialNetwork& outNet, const HdMaterialNe HdMaterialNode* stPrimvarReader = nullptr; // Get the shader registry so I can look up the real names of shading nodes. - SdrRegistry &shaderReg = SdrRegistry::GetInstance(); + SdrRegistry& shaderReg = SdrRegistry::GetInstance(); // Replace the authored node paths with simplified paths in the form of "node#". By doing so // we will be able to reuse shader effects among material networks which have the same node @@ -884,17 +880,20 @@ void HdVP2Material::_ApplyVP2Fixes(HdMaterialNetwork& outNet, const HdMaterialNe tmpNet.nodes.push_back(node); HdMaterialNode& outNode = tmpNet.nodes.back(); - - // For card draw mode the HdMaterialNode will have an identifier which is the hash of the file - // path to drawMode.glslfx on disk. Using that value I can get the SdrShaderNode, and then - // get the actual name of the shader "drawMode.glslfx". - // For other node names the HdMaterialNode identifier and the SdrShaderNode name seem to be - // the same, so just convert everything to use the SdrShaderNode name. - SdrShaderNodeConstPtr sdrNode = shaderReg.GetShaderNodeByIdentifierAndType(outNode.identifier, _tokens->glslfx); + + // For card draw mode the HdMaterialNode will have an identifier which is the hash of the + // file path to drawMode.glslfx on disk. Using that value I can get the SdrShaderNode, and + // then get the actual name of the shader "drawMode.glslfx". For other node names the + // HdMaterialNode identifier and the SdrShaderNode name seem to be the same, so just convert + // everything to use the SdrShaderNode name. + SdrShaderNodeConstPtr sdrNode + = shaderReg.GetShaderNodeByIdentifierAndType(outNode.identifier, _tokens->glslfx); outNode.identifier = TfToken(sdrNode->GetName()); if (_IsUsdDrawModeNode(outNode)) { - outNode.identifier = _tokens->UsdDrawModeCards; // I can't easily name a Maya fragment something with a '.' in it, so pick a different fragment name. + outNode.identifier + = _tokens->UsdDrawModeCards; // I can't easily name a Maya fragment something with a + // '.' in it, so pick a different fragment name. TF_VERIFY(!usdDrawModeCardsNode); // there should only be one. usdDrawModeCardsNode = &outNode; } @@ -930,11 +929,11 @@ void HdVP2Material::_ApplyVP2Fixes(HdMaterialNetwork& outNet, const HdMaterialNe if (_IsUsdUVTexture(node)) { // the DrawModeCardsFragment has UsdUVtexture nodes without primvar readers. // Add a primvar reader to each UsdUVTexture which doesn't already have one. - if (!stPrimvarReader) - { + if (!stPrimvarReader) { HdMaterialNode stReader; stReader.identifier = UsdImagingTokens->UsdPrimvarReader_float2; - stReader.path = SdfPath(stReader.identifier.GetString() + std::to_string(++nodeCounter)); + stReader.path + = SdfPath(stReader.identifier.GetString() + std::to_string(++nodeCounter)); stReader.parameters[_tokens->varname] = _tokens->cardsUv; outNet.nodes.push_back(stReader); stPrimvarReader = &outNet.nodes.back(); @@ -946,55 +945,58 @@ void HdVP2Material::_ApplyVP2Fixes(HdMaterialNetwork& outNet, const HdMaterialNe // a connection to a specific UsdPrimvarReader_float2. bool hasRelationship = false; for (const HdMaterialRelationship& rel : tmpNet.relationships) { - if (rel.inputId == stPrimvarReader->path && - rel.inputName == _tokens->result && - rel.outputId == node.path && - rel.outputName == _tokens->st) { + if (rel.inputId == stPrimvarReader->path && rel.inputName == _tokens->result + && rel.outputId == node.path && rel.outputName == _tokens->st) { hasRelationship = true; break; } } - if (!hasRelationship) - { + if (!hasRelationship) { // The only case I'm currently aware of where we have UsdUVTexture nodes without // a corresponding UsdPrimvarReader_float2 to read the UVs is draw mode cards. // There could be other cases, and it could be find to add the primvar reader // and connection, but we want to know when it is happening. TF_VERIFY(usdDrawModeCardsNode); - + HdMaterialRelationship newRel = { stPrimvarReader->path, _tokens->result, node.path, _tokens->st }; outNet.relationships.push_back(newRel); } } - // If the node is a DrawModeCardsFragment add a MayaIsBackFacing fragment to cull out backfaces. + // If the node is a DrawModeCardsFragment add a MayaIsBackFacing fragment to cull out + // backfaces. if (_IsUsdDrawModeNode(node)) { // Add the MayaIsBackFacing fragment HdMaterialNode mayaIsBackFacingNode; mayaIsBackFacingNode.identifier = _tokens->mayaIsBackFacing; - mayaIsBackFacingNode.path = SdfPath(mayaIsBackFacingNode.identifier.GetString() + std::to_string(++nodeCounter)); + mayaIsBackFacingNode.path = SdfPath( + mayaIsBackFacingNode.identifier.GetString() + std::to_string(++nodeCounter)); outNet.nodes.push_back(mayaIsBackFacingNode); // Connect to the isBackfacing input of the DrawModeCards fragment - HdMaterialRelationship newRel = { mayaIsBackFacingNode.path, _tokens->mayaIsBackFacing, node.path, _tokens->isBackfacing }; + HdMaterialRelationship newRel = { mayaIsBackFacingNode.path, + _tokens->mayaIsBackFacing, + node.path, + _tokens->isBackfacing }; outNet.relationships.push_back(newRel); } }; // Add additional nodes necessary for Maya's fragment compiler // to work that are logical successors of node. - auto addSuccessorNodes = [&](const HdMaterialNode& node, const TfToken& primvarToRead) - { + auto addSuccessorNodes = [&](const HdMaterialNode& node, const TfToken& primvarToRead) { // If the node is a DrawModeCardsFragment add the fallback material after it to do // the lighting etc. if (_IsUsdDrawModeNode(node)) { - // Add the fallback shader node and hook it up. This has to be the last node in outNet.nodes. + // Add the fallback shader node and hook it up. This has to be the last node in + // outNet.nodes. HdMaterialNode fallbackShaderNode; fallbackShaderNode.identifier = _tokens->FallbackShader; - fallbackShaderNode.path = SdfPath(fallbackShaderNode.identifier.GetString() + std::to_string(++nodeCounter)); + fallbackShaderNode.path = SdfPath( + fallbackShaderNode.identifier.GetString() + std::to_string(++nodeCounter)); outNet.nodes.push_back(fallbackShaderNode); // The DrawModeCards fragment is basically a texture picker. Connect its output to @@ -1007,7 +1009,8 @@ void HdVP2Material::_ApplyVP2Fixes(HdMaterialNetwork& outNet, const HdMaterialNe outNet.primvars.push_back(HdTokens->points); outNet.primvars.push_back(HdTokens->normals); - // no passthrough nodes necessary between the draw mode cards node & the fallback shader. + // no passthrough nodes necessary between the draw mode cards node & the fallback + // shader. return; } diff --git a/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp b/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp index 94b7f3b8fd..4fa5167ef4 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp @@ -767,7 +767,7 @@ void HdVP2Mesh::_PrepareSharedVertexBuffers( } else if (value.IsHolding()) { if (!buffer) { const MHWRender::MVertexBufferDescriptor vbDesc( - "", semantic, MHWRender::MGeometry::kFloat, 1); //kInt32 + "", semantic, MHWRender::MGeometry::kFloat, 1); // kInt32 buffer = new MHWRender::MVertexBuffer(vbDesc); _meshSharedData->_primvarInfo[token]->_buffer.reset(buffer); @@ -779,10 +779,10 @@ void HdVP2Mesh::_PrepareSharedVertexBuffers( : nullptr; if (bufferData) { const VtIntArray& primvarData = value.UncheckedGet(); - + VtFloatArray convertedPrimvarData; convertedPrimvarData.reserve(primvarData.size()); - for(auto& source : primvarData) { + for (auto& source : primvarData) { convertedPrimvarData.push_back(static_cast(source)); } From fce050303cf82e84286d5bb0ab7d4129b0ac7f5e Mon Sep 17 00:00:00 2001 From: krickw Date: Mon, 7 Jun 2021 13:15:20 -0400 Subject: [PATCH 4/6] Minor fixes from the code review. Added a test for the cards draw mode. --- .../render/vp2RenderDelegate/material.cpp | 21 ++-- .../render/vp2RenderDelegate/CMakeLists.txt | 1 + .../baseline/DrawModes_box_all_negative.png | Bin 0 -> 30719 bytes .../baseline/DrawModes_box_all_positive.png | Bin 0 -> 30091 bytes .../baseline/DrawModes_cross_all_negative.png | Bin 0 -> 18693 bytes .../baseline/DrawModes_cross_all_positive.png | Bin 0 -> 17948 bytes .../baseline/DrawModes_default.png | Bin 0 -> 26950 bytes .../testVP2RenderDelegateDrawModes.py | 104 ++++++++++++++++++ test/testSamples/drawModes/DrawModes.usda | 39 +++++++ test/testSamples/drawModes/NEG_X.png | Bin 0 -> 11239 bytes test/testSamples/drawModes/NEG_Y.png | Bin 0 -> 11119 bytes test/testSamples/drawModes/NEG_Z.png | Bin 0 -> 11086 bytes test/testSamples/drawModes/POS_X.png | Bin 0 -> 12083 bytes test/testSamples/drawModes/POS_Y.png | Bin 0 -> 12041 bytes test/testSamples/drawModes/POS_Z.png | Bin 0 -> 12085 bytes 15 files changed, 155 insertions(+), 10 deletions(-) create mode 100644 test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateDrawModesTest/baseline/DrawModes_box_all_negative.png create mode 100644 test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateDrawModesTest/baseline/DrawModes_box_all_positive.png create mode 100644 test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateDrawModesTest/baseline/DrawModes_cross_all_negative.png create mode 100644 test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateDrawModesTest/baseline/DrawModes_cross_all_positive.png create mode 100644 test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateDrawModesTest/baseline/DrawModes_default.png create mode 100644 test/lib/mayaUsd/render/vp2RenderDelegate/testVP2RenderDelegateDrawModes.py create mode 100644 test/testSamples/drawModes/DrawModes.usda create mode 100644 test/testSamples/drawModes/NEG_X.png create mode 100644 test/testSamples/drawModes/NEG_Y.png create mode 100644 test/testSamples/drawModes/NEG_Z.png create mode 100644 test/testSamples/drawModes/POS_X.png create mode 100644 test/testSamples/drawModes/POS_Y.png create mode 100644 test/testSamples/drawModes/POS_Z.png diff --git a/lib/mayaUsd/render/vp2RenderDelegate/material.cpp b/lib/mayaUsd/render/vp2RenderDelegate/material.cpp index 5086251f3a..4ca571eb92 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/material.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/material.cpp @@ -109,18 +109,16 @@ TF_DEFINE_PRIVATE_TOKENS( (FallbackShader) (mayaIsBackFacing) (isBackfacing) + (DrawMode, "drawMode.glslfx") (UsdPrimvarReader_color) (UsdPrimvarReader_vector) ); // clang-format on -TfToken _DrawModeCards - = TfToken("drawMode.glslfx"); //!< can't make a token the normal way because it has a '.' in it. - bool _IsUsdDrawModeId(const TfToken& id) { - return id == _DrawModeCards || id == _tokens->UsdDrawModeCards; + return id == _tokens->_DrawMode || id == _tokens->UsdDrawModeCards; } bool _IsUsdDrawModeNode(const HdMaterialNode& node) { return _IsUsdDrawModeId(node.identifier); } @@ -863,7 +861,7 @@ void HdVP2Material::_ApplyVP2Fixes(HdMaterialNetwork& outNet, const HdMaterialNe tmpNet.nodes.reserve(numNodes); tmpNet.relationships.reserve(numRelationships); - // Some material networks require us to nodes and connections to the base + // Some material networks require us to add nodes and connections to the base // HdMaterialNetwork. Keep track of the existence of some key nodes to help // with performance. HdMaterialNode* usdDrawModeCardsNode = nullptr; @@ -891,9 +889,9 @@ void HdVP2Material::_ApplyVP2Fixes(HdMaterialNetwork& outNet, const HdMaterialNe outNode.identifier = TfToken(sdrNode->GetName()); if (_IsUsdDrawModeNode(outNode)) { - outNode.identifier - = _tokens->UsdDrawModeCards; // I can't easily name a Maya fragment something with a - // '.' in it, so pick a different fragment name. + // I can't easily name a Maya fragment something with a '.' in it, so pick a different + // fragment name. + outNode.identifier = _tokens->UsdDrawModeCards; TF_VERIFY(!usdDrawModeCardsNode); // there should only be one. usdDrawModeCardsNode = &outNode; } @@ -925,8 +923,10 @@ void HdVP2Material::_ApplyVP2Fixes(HdMaterialNetwork& outNet, const HdMaterialNe // to work that are logical predecessors of node. auto addPredecessorNodes = [&](const HdMaterialNode& node) { // If the node is a UsdUVTexture node, verify there is a UsdPrimvarReader_float2 connected - // to the st input of it. If not, find the basic st reader and/or create it and connect it - if (_IsUsdUVTexture(node)) { + // to the st input of it. If not, find the basic st reader and/or create it and connect it. + // Adding the UV reader only works for cards draw mode. We wouldn't know which UV stream to + // read if another material was missing the primvar reader. + if (_IsUsdUVTexture(node) && usdDrawModeCardsNode) { // the DrawModeCardsFragment has UsdUVtexture nodes without primvar readers. // Add a primvar reader to each UsdUVTexture which doesn't already have one. if (!stPrimvarReader) { @@ -937,6 +937,7 @@ void HdVP2Material::_ApplyVP2Fixes(HdMaterialNetwork& outNet, const HdMaterialNe stReader.parameters[_tokens->varname] = _tokens->cardsUv; outNet.nodes.push_back(stReader); stPrimvarReader = &outNet.nodes.back(); + // Specifically looking for the cardsUv primvar outNet.primvars.push_back(_tokens->cardsUv); } diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt b/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt index a6c6c0bc90..a4e6fec2d8 100644 --- a/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt +++ b/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt @@ -30,6 +30,7 @@ if (MAYA_APP_VERSION VERSION_GREATER_EQUAL 2022) list(APPEND TEST_SCRIPT_FILES testVP2RenderDelegatePerInstanceInheritedData.py testVP2RenderDelegateBasisCurves.py + testVP2RenderDelegateDrawModes.py ) endif() diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateDrawModesTest/baseline/DrawModes_box_all_negative.png b/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateDrawModesTest/baseline/DrawModes_box_all_negative.png new file mode 100644 index 0000000000000000000000000000000000000000..3aba0322e1ec949e23082dce5f753d6188ab8e2e GIT binary patch literal 30719 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≻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 V_0yh}?6OM0()5x^xsfN~{{Z{7)ja?J literal 0 HcmV?d00001 diff --git a/test/testSamples/drawModes/POS_X.png b/test/testSamples/drawModes/POS_X.png new file mode 100644 index 0000000000000000000000000000000000000000..6f68d69bb84b87a36890537d0ff58507ede23f13 GIT binary patch literal 12083 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 VD{>b7fl<5%%#5v#Y7N}u{s&F8qA36X literal 0 HcmV?d00001 diff --git a/test/testSamples/drawModes/POS_Y.png b/test/testSamples/drawModes/POS_Y.png new file mode 100644 index 0000000000000000000000000000000000000000..72671aba3d66c1151dfdff069b9037bac1587e20 GIT binary patch literal 12041 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 Date: Tue, 8 Jun 2021 08:55:37 -0400 Subject: [PATCH 5/6] Fix tokens. --- lib/mayaUsd/render/vp2RenderDelegate/material.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/mayaUsd/render/vp2RenderDelegate/material.cpp b/lib/mayaUsd/render/vp2RenderDelegate/material.cpp index 4ca571eb92..73d08128f1 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/material.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/material.cpp @@ -109,7 +109,7 @@ TF_DEFINE_PRIVATE_TOKENS( (FallbackShader) (mayaIsBackFacing) (isBackfacing) - (DrawMode, "drawMode.glslfx") + ((DrawMode, "drawMode.glslfx")) (UsdPrimvarReader_color) (UsdPrimvarReader_vector) @@ -118,7 +118,7 @@ TF_DEFINE_PRIVATE_TOKENS( bool _IsUsdDrawModeId(const TfToken& id) { - return id == _tokens->_DrawMode || id == _tokens->UsdDrawModeCards; + return id == _tokens->DrawMode || id == _tokens->UsdDrawModeCards; } bool _IsUsdDrawModeNode(const HdMaterialNode& node) { return _IsUsdDrawModeId(node.identifier); } From 2e428a2b0905eee4cbe55c129e2c06580b11ebb4 Mon Sep 17 00:00:00 2001 From: krickw Date: Wed, 9 Jun 2021 13:31:27 -0400 Subject: [PATCH 6/6] Test only works with USD 21.05. Don't test the default draw mode, the cube shades differently. --- .../render/vp2RenderDelegate/CMakeLists.txt | 7 ++++++- .../baseline/DrawModes_default.png | Bin 26950 -> 0 bytes .../testVP2RenderDelegateDrawModes.py | 4 ---- 3 files changed, 6 insertions(+), 5 deletions(-) delete mode 100644 test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateDrawModesTest/baseline/DrawModes_default.png diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt b/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt index a4e6fec2d8..a8804ad47d 100644 --- a/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt +++ b/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt @@ -30,8 +30,13 @@ if (MAYA_APP_VERSION VERSION_GREATER_EQUAL 2022) list(APPEND TEST_SCRIPT_FILES testVP2RenderDelegatePerInstanceInheritedData.py testVP2RenderDelegateBasisCurves.py - testVP2RenderDelegateDrawModes.py ) + + if (PXR_VERSION GREATER_EQUAL 2105) + list(APPEND TEST_SCRIPT_FILES + testVP2RenderDelegateDrawModes.py + ) + endif() endif() if (MAYA_APP_VERSION VERSION_GREATER_EQUAL 2022) diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateDrawModesTest/baseline/DrawModes_default.png b/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateDrawModesTest/baseline/DrawModes_default.png deleted file mode 100644 index 326caff956a4833834beb29863a1ea198b4c2eb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26950 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 z zlbFFK1(!QW*%?c3u;$h?pDuwkCGv-f-hR4$hJT&!Z?{#qLI~M!qW9~1$t{yViS1rf z33|=_AQ0Pg9k?6ma0+vr+L3r~G}1E;oa}D>O=}LUEaHQfl}bmf749zr|5sb{aN|M2$&;bMb?9guc*5GJ#PlVRqL*s9bJeH=_BL1b4m47TXi zvxvLDh|v5I_qBr4>NnS>PBtg#!6l^{FoOq)+8+Du?1i~A+sufau_XlmVCAtL%iPHt zqlp536LT-Tg(a|${>Rea9rb${ga1hP)Qn4g?)BH3P@hqMXu3Oy2TC}fM> z4w)oyzVBPdXW0oiMQC0q`tCFIWq_%K>G)!#;I@ODgsY-&kB?j6^xMMUPHWKrqaiyI z<@L&D!LZ5d=#{?$mEbZJ1+MFVL0DPueLXh~3nA5nUVVpZYqBj8a_!Tac4=8ETf%?@ zy=^8JSz+EQO^GBic?AdFO06L(##teHbtC-wUkBMYa1%|jC8rqB!ZzaKC&7kFP}Rc# z^MKeKTZf?+E`{5OE<4&eZt*8<2OcZFg^G1nC%T|F?2>=*sgAMMF}NsY)XRv&_PP@A zDyf!e`65iS6NU4J>_Y+?boVCYKRx~0YjCZpeY?-x6Q9NxOMJ7n1JeXu??ok8pt7tOH4Ob? z%cj(ph4370=R8Hqwo|aJen1+-Hz(X7yIS4IFMo2yWM*uWh1(fuWdakWby;JXiT?;aNGY^_}7@%mp?$IrbNjl|+s;sfBD zDC($UPmk5CZn9Foj1HuQUlS;-g;Gc=z?%O3ip0m|(W8UQf)M%o%d=O*t*?41+#@LR zxRFoSq}}!(&Y4sLT9elmZu{3XkG`N4JRp0jNAPsGIT2 z!g^v~{8VDa4@ma}+Q^n*+yFu~Ka~8=w`Q@M$4*@9>G<7Zg(~2)sBE>>iHM_+Ttl9s zNhT!IH)b~H@|MGTy_i9qB?ncOpT=+_CTU2db9aTLq0`}rPYEimR8*i5GxXCHiJOum zpd!qXmL*Ks1G#pgqT?E)*<3OSMKW7c!!0(IPHbE z2N7f&_z_6RIqmPjKy3~tbz^qIn?nFUhtv)k9&*1a_vnkI!!D_xp(;{#RZ~=QV?|CV z{6R>p8DYoil^UfDCd_;X1VYqM&NG-@`>aQzy1W81^$DheY}y7xf(|-*g`zCH3AMc; z-)~M1wu_*qhruZ#!>G-tYP!3wG#sp+ro{~qD0(rK0Xpx_P{z-KB|v^bt(5CC-;mbd z)X>#EK)*)d%C^u<570naaGN=5?)KJg2&wtlN^pSC@QvHYhq=o;>VQ_B=&nPa`99^e zAy9rp9-%kaUUb)`6@PlzUeqV2YNb*8{(X3P&h#;lf=yiXB ztRqiuq8=6e(ow4jKPU977Vw+W1sR54tp&<<@caMcf~gy7%)kTh9-jXTih2m*dE)f( J;%`Ed{|_U#Reb;e diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/testVP2RenderDelegateDrawModes.py b/test/lib/mayaUsd/render/vp2RenderDelegate/testVP2RenderDelegateDrawModes.py index 7ba5162407..8e51ce9f9f 100644 --- a/test/lib/mayaUsd/render/vp2RenderDelegate/testVP2RenderDelegateDrawModes.py +++ b/test/lib/mayaUsd/render/vp2RenderDelegate/testVP2RenderDelegateDrawModes.py @@ -95,10 +95,6 @@ def testDrawModes(self): cmds.rotate(145, 45, 0, 'persp') self.assertSnapshotClose('%s_box_all_negative.png' % self._testName) - drawModeAttr = drawModesPrim.GetAttribute('model:drawMode') - drawModeAttr.Set('default') - self.assertSnapshotClose('%s_default.png' % self._testName) - if __name__ == '__main__': fixturesUtils.runTests(globals())

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 literal 0 HcmV?d00001 diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateDrawModesTest/baseline/DrawModes_default.png b/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateDrawModesTest/baseline/DrawModes_default.png new file mode 100644 index 0000000000000000000000000000000000000000..326caff956a4833834beb29863a1ea198b4c2eb4 GIT binary patch literal 26950 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 z zlbFFK1(!QW*%?c3u;$h?pDuwkCGv-f-hR4$hJT&!Z?{#qLI~M!qW9~1$t{yViS1rf z33|=_AQ0Pg9k?6ma0+vr+L3r~G}1E;oa}D>O=}LUEaHQfl}bmf749zr|5sb{aN|M2$&;bMb?9guc*5GJ#PlVRqL*s9bJeH=_BL1b4m47TXi zvxvLDh|v5I_qBr4>NnS>PBtg#!6l^{FoOq)+8+Du?1i~A+sufau_XlmVCAtL%iPHt zqlp536LT-Tg(a|${>Rea9rb${ga1hP)Qn4g?)BH3P@hqMXu3Oy2TC}fM> z4w)oyzVBPdXW0oiMQC0q`tCFIWq_%K>G)!#;I@ODgsY-&kB?j6^xMMUPHWKrqaiyI z<@L&D!LZ5d=#{?$mEbZJ1+MFVL0DPueLXh~3nA5nUVVpZYqBj8a_!Tac4=8ETf%?@ zy=^8JSz+EQO^GBic?AdFO06L(##teHbtC-wUkBMYa1%|jC8rqB!ZzaKC&7kFP}Rc# z^MKeKTZf?+E`{5OE<4&eZt*8<2OcZFg^G1nC%T|F?2>=*sgAMMF}NsY)XRv&_PP@A zDyf!e`65iS6NU4J>_Y+?boVCYKRx~0YjCZpeY?-x6Q9NxOMJ7n1JeXu??ok8pt7tOH4Ob? z%cj(ph4370=R8Hqwo|aJen1+-Hz(X7yIS4IFMo2yWM*uWh1(fuWdakWby;JXiT?;aNGY^_}7@%mp?$IrbNjl|+s;sfBD zDC($UPmk5CZn9Foj1HuQUlS;-g;Gc=z?%O3ip0m|(W8UQf)M%o%d=O*t*?41+#@LR zxRFoSq}}!(&Y4sLT9elmZu{3XkG`N4JRp0jNAPsGIT2 z!g^v~{8VDa4@ma}+Q^n*+yFu~Ka~8=w`Q@M$4*@9>G<7Zg(~2)sBE>>iHM_+Ttl9s zNhT!IH)b~H@|MGTy_i9qB?ncOpT=+_CTU2db9aTLq0`}rPYEimR8*i5GxXCHiJOum zpd!qXmL*Ks1G#pgqT?E)*<3OSMKW7c!!0(IPHbE z2N7f&_z_6RIqmPjKy3~tbz^qIn?nFUhtv)k9&*1a_vnkI!!D_xp(;{#RZ~=QV?|CV z{6R>p8DYoil^UfDCd_;X1VYqM&NG-@`>aQzy1W81^$DheY}y7xf(|-*g`zCH3AMc; z-)~M1wu_*qhruZ#!>G-tYP!3wG#sp+ro{~qD0(rK0Xpx_P{z-KB|v^bt(5CC-;mbd z)X>#EK)*)d%C^u<570naaGN=5?)KJg2&wtlN^pSC@QvHYhq=o;>VQ_B=&nPa`99^e zAy9rp9-%kaUUb)`6@PlzUeqV2YNb*8{(X3P&h#;lf=yiXB ztRqiuq8=6e(ow4jKPU977Vw+W1sR54tp&<<@caMcf~gy7%)kTh9-jXTih2m*dE)f( J;%`Ed{|_U#Reb;e literal 0 HcmV?d00001 diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/testVP2RenderDelegateDrawModes.py b/test/lib/mayaUsd/render/vp2RenderDelegate/testVP2RenderDelegateDrawModes.py new file mode 100644 index 0000000000..7ba5162407 --- /dev/null +++ b/test/lib/mayaUsd/render/vp2RenderDelegate/testVP2RenderDelegateDrawModes.py @@ -0,0 +1,104 @@ +#!/usr/bin/env mayapy +# +# Copyright 2021 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. +# + +import fixturesUtils +import imageUtils +import mayaUtils +import usdUtils +import testUtils + +from mayaUsd import lib as mayaUsdLib +from mayaUsd import ufe as mayaUsdUfe + +from pxr import Gf + +from maya import cmds + +import ufe +import sys +import os + + +class testVP2RenderDelegateDrawModes(imageUtils.ImageDiffingTestCase): + """ + Tests imaging using the Viewport 2.0 render delegate when using usd cameras + """ + + @classmethod + def setUpClass(cls): + # The test USD data is authored Z-up, so make sure Maya is configured + # that way too. + # cmds.upAxis(axis='z') + + inputPath = fixturesUtils.setUpClass(__file__, + initializeStandalone=False, loadPlugin=False) + + cls._baselineDir = os.path.join(inputPath, + 'VP2RenderDelegateDrawModesTest', 'baseline') + + cls._testDir = os.path.abspath('.') + + def assertSnapshotClose(self, imageName): + baselineImage = os.path.join(self._baselineDir, imageName) + snapshotImage = os.path.join(self._testDir, imageName) + imageUtils.snapshot(snapshotImage, width=960, height=540) + return self.assertImagesClose(baselineImage, snapshotImage) + + def _StartTest(self, testName): + cmds.file(force=True, new=True) + mayaUtils.loadPlugin("mayaUsdPlugin") + self._testName = testName + testFile = testUtils.getTestScene("drawModes", self._testName + ".usda") + mayaUtils.createProxyFromFile(testFile) + globalSelection = ufe.GlobalSelection.get() + globalSelection.clear() + + def testDrawModes(self): + self._StartTest('DrawModes') + cmds.modelEditor('modelPanel4', edit=True, grid=False) + + cmds.move(2, 2, 2, 'persp') + cmds.rotate(-33, 45, 0, 'persp') + self.assertSnapshotClose('%s_cross_all_positive.png' % self._testName) + + cmds.move(-2, -2, -2, 'persp') + cmds.rotate(145, 45, 0, 'persp') + self.assertSnapshotClose('%s_cross_all_negative.png' % self._testName) + + mayaPathSegment = mayaUtils.createUfePathSegment('|stage|stageShape') + usdPathSegment = usdUtils.createUfePathSegment('/DrawModes') + drawModesPath = ufe.Path([mayaPathSegment, usdPathSegment]) + drawModesItem = ufe.Hierarchy.createItem(drawModesPath) + drawModesPrim = usdUtils.getPrimFromSceneItem(drawModesItem) + cardGeomAttr = drawModesPrim.GetAttribute('model:cardGeometry') + cardGeomAttr.Set('box') + + cmds.move(2, 2, 2, 'persp') + cmds.rotate(-33, 45, 0, 'persp') + self.assertSnapshotClose('%s_box_all_positive.png' % self._testName) + + cmds.move(-2, -2, -2, 'persp') + cmds.rotate(145, 45, 0, 'persp') + self.assertSnapshotClose('%s_box_all_negative.png' % self._testName) + + drawModeAttr = drawModesPrim.GetAttribute('model:drawMode') + drawModeAttr.Set('default') + self.assertSnapshotClose('%s_default.png' % self._testName) + + +if __name__ == '__main__': + fixturesUtils.runTests(globals()) diff --git a/test/testSamples/drawModes/DrawModes.usda b/test/testSamples/drawModes/DrawModes.usda new file mode 100644 index 0000000000..3ae4d5ea07 --- /dev/null +++ b/test/testSamples/drawModes/DrawModes.usda @@ -0,0 +1,39 @@ +#usda 1.0 +( + defaultPrim = "DrawModes" + upAxis = "Z" +) + +def Xform "DrawModes" ( + assetInfo = { + asset identifier = @./DrawModes.usda@ + string name = "DrawModes" + } + kind = "component" + add variantSets = "shadingVariant" + variants = { + string shadingVariant = "Default" + } + prepend apiSchemas = ["GeomModelAPI"] +) +{ + uniform token model:cardGeometry = "cross" + uniform token model:drawMode = "cards" + uniform asset model:cardTextureXPos = @POS_X.png@ + uniform asset model:cardTextureYPos = @POS_Y.png@ + uniform asset model:cardTextureZPos = @POS_Z.png@ + uniform asset model:cardTextureXNeg = @NEG_X.png@ + uniform asset model:cardTextureYNeg = @NEG_Y.png@ + uniform asset model:cardTextureZNeg = @NEG_Z.png@ + + def Xform "Geom" + { + def Mesh "Cube" + { + float3[] extent = [(-0.5, -0.5, -0.5), (0.5, 0.5, 0.5)] + int[] faceVertexCounts = [4, 4, 4, 4, 4, 4] + int[] faceVertexIndices = [0, 1, 3, 2, 2, 3, 5, 4, 4, 5, 7, 6, 6, 7, 1, 0, 1, 7, 5, 3, 6, 0, 2, 4] + point3f[] points = [(-0.5, -0.5, 0.5), (0.5, -0.5, 0.5), (-0.5, 0.5, 0.5), (0.5, 0.5, 0.5), (-0.5, 0.5, -0.5), (0.5, 0.5, -0.5), (-0.5, -0.5, -0.5), (0.5, -0.5, -0.5)] + } + } +} diff --git a/test/testSamples/drawModes/NEG_X.png b/test/testSamples/drawModes/NEG_X.png new file mode 100644 index 0000000000000000000000000000000000000000..67081905b392dad30088e57ea6fc2f8394969552 GIT binary patch literal 11239 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 EA6pfV!vFvP literal 0 HcmV?d00001 diff --git a/test/testSamples/drawModes/NEG_Y.png b/test/testSamples/drawModes/NEG_Y.png new file mode 100644 index 0000000000000000000000000000000000000000..6671574d13b71a7917f9f59d897cd2e3d8e57a38 GIT binary patch literal 11119 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 B;ST@+ literal 0 HcmV?d00001 diff --git a/test/testSamples/drawModes/NEG_Z.png b/test/testSamples/drawModes/NEG_Z.png new file mode 100644 index 0000000000000000000000000000000000000000..26f072292fc5e30d3fd9ae9d429955d70168fc4a GIT binary patch literal 11086 zcmW+c2|QHa_ir}FK6Vmj?2@IVl9;hCB_d>tN~wgg%Qj<>L0L;h;)_zrQrWi|`&N+@ z*=EKPl6^O0=0Csx=Y8Jiy?4*K=bU@bJNKS@&PlSpWX{KZgc|?=K1&M|I{*N&UqJwz zgZ*#|e0!Vy5r5a%*w)h67>Nz^zkT=qEdWr-h|bWrXvZAw^suj%bKul_d)DjiB{37z zqpy=qD{aTP%g#M_JAhdq$rKScZ>^?MyKnq#?R0kHbTULRfPkPNyWk8V)-w^8j&STm zTG*~k*edYfwcGE1p8&nhxutOP@`)^WQAovt5fCjw@VN0t#zy@OO}Ax*HnZd&@BJX3 z9<+5#Hw$Et5uUpE(6q_${O7xiFL#rSKd7j7%y-OixTo)BEPd+tf62qob6(r4IBT;5 zb>rh;SD@7A!vBP9gcC&_ilR_6pV}Uze0C}S^hbZ6Cr;N_u`?t`o_L)rKmloFCaU=4 zI?AZjEICPG*<7E|o{Bcqc;Tj~6?nV=ESfpP$%>;)=Ip<-JfkWBJLhqqep3Yg5BxaC z7biO&Is;upL!4atJ>Ee+=NFH-xa`3fC>$E)t~pJdZYw~XO@o(3>THSX>?WBm8Er2n zQ3s3oH8GV#KN}4U4gcKW!(!o&L{%auXC^0?n-3%3{H6$qIR+BqI1`C%wQ$_HU~U4i z{&y8Lmt?V9xUd$^K>(m3|Gyg){u&+1ZsZKMv^M3OIO0ZS9ZE8%0y(LPwOap%duMMb|{wTCQn zB)`%Ru8r@4&phw5wu3$G`@wJ8iO7=3TDwS7hcL*de)A6SudkZVlZUK?4*`4tN6?3!ZHw~6ja3~$YGX6Px0ekx*NA2)2QK$I@VM69vpVDi_5C2((M>9r=7iXJybx=i_K_iH; zaYTfDPm5o<&ZbUqSwHK$ngXvQV&^>S?PXpSz*H`VxD_o!D^)6V%}jd%H_%|oY|7Q! zti4Bt-zUoC&ZqJ&s!grlNpjS_QRz*r_ldtg0`CaLAU_0!A0J7smx-LNTudUY3W0B6 zPzAuO_87g`$!KiBKyJsaH)g1@>ru3mvKG}e5S?Q#(_4gjA4_%$*8n65w%T43o8`){ z&ff8&oV@JugV?QOfGg4mRU@c zLNJk;MO=kvHe*I|5FDpa{LX~Rm84c<;6kAOslv*?y776u-WVqgXu+jQAmdulZUCSh zKWiVDCp7IkuKJfHjr(vG3;h+j?{2un<;a^2oChjZMvQ@e zIrvhS^uJRU!YUjh_*9d~$6t;tnqPc^R*cU-(UG4{*U1-fm@DGgIV{*M&04)x)=R&~ z2W?$FcW2VmlvrV;rRgCn5mtHoWvl_eI|x=#){(}$UixtBrqO{a@B_FcHEl!Wk>E== z5SbI``;oF1^E2mz=H3cfJkBABDexFE!C8r9#dvWi=f1g(SWvKqs{q~dEiR1ry^A_S z1HjpvL|orh#`T-4zO+lSXT0Y7_olp(2vgp(3YD!#(4vuc9ixVSG5ol}rl| zwm|B|sN8XZoTeB%xkE|7doCw?+=i$&=$Plfs@8pc@TmiWaS)rYbSEXi+O0M7Y^-km zN-ycz#b(bRrK11ipD5Q-y? zQ#rj$baV@EgaMr${Oc2g_PXCmorDKNqckfrN~ zMejsZ(tdKOK%43ReMmTVaA@@B1Zww@$-$-(<1;p)Im;*tUF%Xw7*Z5s{d%GoX&PRqyb6=il0z-gL2x028|i2ghgk9H=5VE2}5 zt@Fs-t?KnFM8t7Pb1IMFKz*!Lnh-^7*UY*DEkG?q;2b}+m@z=cQKS&_p)e=j`+ApM zlm5cRI$#rEti4<8If6rRN`k&J^r;Mrq`tPe_Kk>Q>Y|v6`^+luZ8~IMKPlhFsUU