Skip to content

Commit e66ccbb

Browse files
No lobe pruning for MaterialX < 1.38.8
1 parent 8d6903d commit e66ccbb

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

lib/mayaUsd/render/vp2RenderDelegate/material.cpp

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,12 @@
6565

6666
#ifdef WANT_MATERIALX_BUILD
6767
#include <mayaUsd/render/MaterialXGenOgsXml/CombinedMaterialXVersion.h>
68-
#include <mayaUsd/render/MaterialXGenOgsXml/LobePruner.h>
6968
#include <mayaUsd/render/MaterialXGenOgsXml/OgsFragment.h>
7069
#include <mayaUsd/render/MaterialXGenOgsXml/OgsXmlGenerator.h>
7170
#include <mayaUsd/render/MaterialXGenOgsXml/ShaderGenUtil.h>
71+
#if MX_COMBINED_VERSION >= 13808
72+
#include <mayaUsd/render/MaterialXGenOgsXml/LobePruner.h>
73+
#endif
7274

7375
#include <MaterialXCore/Document.h>
7476
#include <MaterialXFormat/File.h>
@@ -354,6 +356,7 @@ struct _MaterialXData
354356
static const std::string env = TfGetenv("USDMTLX_PRIMARY_UV_NAME");
355357
_mainUvSetName = env.empty() ? UsdUtilsGetPrimaryUVSetName().GetString() : env;
356358

359+
#if MX_COMBINED_VERSION >= 13808
357360
_lobePruner = MaterialXMaya::ShaderGenUtil::LobePruner::create();
358361
_lobePruner->setLibrary(_mtlxLibrary);
359362

@@ -366,6 +369,7 @@ struct _MaterialXData
366369
// NodeGraph boundary, then no optimization will be found. This would require a change
367370
// in the LobePruner to detect transitive weights. Doable, but complex. We will wait
368371
// until there is sufficient demand.
372+
#endif
369373
} catch (mx::Exception& e) {
370374
TF_RUNTIME_ERROR(
371375
"Caught exception '%s' while initializing MaterialX library", e.what());
@@ -374,7 +378,9 @@ struct _MaterialXData
374378
MaterialX::FileSearchPath _mtlxSearchPath; //!< MaterialX library search path
375379
MaterialX::DocumentPtr _mtlxLibrary; //!< MaterialX library
376380
std::string _mainUvSetName; //!< Main UV set name
381+
#if MX_COMBINED_VERSION >= 13808
377382
MaterialXMaya::ShaderGenUtil::LobePruner::Ptr _lobePruner;
383+
#endif
378384

379385
private:
380386
void _FixLibraryTangentInputs(MaterialX::DocumentPtr& mtlxLibrary);
@@ -476,13 +482,16 @@ size_t _GenerateNetwork2TopoHash(const HdMaterialNetwork2& materialNetwork)
476482
MayaUsd::hash_combine(topoHash, hash_value(nodePair.first));
477483

478484
const auto& node = nodePair.second;
479-
TfToken optimizedNodeId = _GetMaterialXData()._lobePruner->getOptimizedNodeId(node);
485+
#if MX_COMBINED_VERSION >= 13808
486+
TfToken optimizedNodeId = _GetMaterialXData()._lobePruner->getOptimizedNodeId(node);
480487
if (optimizedNodeId.IsEmpty()) {
481488
MayaUsd::hash_combine(topoHash, hash_value(node.nodeTypeId));
482489
} else {
483490
MayaUsd::hash_combine(topoHash, hash_value(optimizedNodeId));
484491
}
485-
492+
#else
493+
MayaUsd::hash_combine(topoHash, hash_value(node.nodeTypeId));
494+
#endif
486495
if (_IsTopologicalNode(node)) {
487496
// We need to capture values that affect topology:
488497
for (auto const& p : node.parameters) {
@@ -2902,13 +2911,16 @@ void HdVP2Material::CompiledNetwork::_ApplyMtlxVP2Fixes(
29022911
for (const auto& nodePair : inNet.nodes) {
29032912
const HdMaterialNode2& inNode = nodePair.second;
29042913
HdMaterialNode2 outNode;
2914+
#if MX_COMBINED_VERSION >= 13808
29052915
TfToken optimizedNodeId = _GetMaterialXData()._lobePruner->getOptimizedNodeId(inNode);
29062916
if (optimizedNodeId.IsEmpty()) {
29072917
outNode.nodeTypeId = inNode.nodeTypeId;
29082918
} else {
29092919
outNode.nodeTypeId = optimizedNodeId;
29102920
}
2911-
2921+
#else
2922+
outNode.nodeTypeId = inNode.nodeTypeId;
2923+
#endif
29122924
if (_IsTopologicalNode(inNode)) {
29132925
// These parameters affect topology:
29142926
outNode.parameters = inNode.parameters;
@@ -3024,9 +3036,13 @@ MHWRender::MShaderInstance* HdVP2Material::CompiledNetwork::_CreateMaterialXShad
30243036

30253037
mx::DocumentPtr mtlxDoc;
30263038
const mx::FileSearchPath& crLibrarySearchPath(_GetMaterialXData()._mtlxSearchPath);
3039+
#if MX_COMBINED_VERSION >= 13808
30273040
if (mtlxSdrNode
30283041
|| MaterialXMaya::ShaderGenUtil::LobePruner::isOptimizedNodeId(
30293042
surfTerminal->nodeTypeId)) {
3043+
#else
3044+
if (mtlxSdrNode) {
3045+
#endif
30303046

30313047
#ifdef HAS_COLOR_MANAGEMENT_SUPPORT_API
30323048
mx::DocumentPtr completeLibrary = mx::createDocument();

0 commit comments

Comments
 (0)