File tree Expand file tree Collapse file tree
source/MaterialXGenShader Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1073,7 +1073,8 @@ void ShaderGraph::optimize(GenContext& context)
10731073
10741074 if (numEdits > 0 )
10751075 {
1076- std::set<ShaderNode*> usedNodes;
1076+ std::set<ShaderNode*> usedNodesSet;
1077+ std::vector<ShaderNode*> usedNodesVec;
10771078
10781079 // Traverse the graph to find nodes still in use
10791080 for (ShaderGraphOutputSocket* outputSocket : getOutputSockets ())
@@ -1084,15 +1085,20 @@ void ShaderGraph::optimize(GenContext& context)
10841085 {
10851086 for (ShaderGraphEdge edge : ShaderGraph::traverseUpstream (upstreamPort))
10861087 {
1087- usedNodes.insert (edge.upstream ->getNode ());
1088+ ShaderNode* node = edge.upstream ->getNode ();
1089+ if (usedNodesSet.count (node) == 0 )
1090+ {
1091+ usedNodesSet.insert (node);
1092+ usedNodesVec.push_back (node);
1093+ }
10881094 }
10891095 }
10901096 }
10911097
10921098 // Remove any unused nodes
10931099 for (ShaderNode* node : _nodeOrder)
10941100 {
1095- if (usedNodes .count (node) == 0 )
1101+ if (usedNodesSet .count (node) == 0 )
10961102 {
10971103 // Break all connections
10981104 disconnect (node);
@@ -1102,8 +1108,7 @@ void ShaderGraph::optimize(GenContext& context)
11021108 }
11031109 }
11041110
1105- _nodeOrder.resize (usedNodes.size ());
1106- _nodeOrder.assign (usedNodes.begin (), usedNodes.end ());
1111+ _nodeOrder = usedNodesVec;
11071112 }
11081113}
11091114
You can’t perform that action at this time.
0 commit comments