summaryrefslogtreecommitdiffstats
path: root/src/render/shadergraph
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/shadergraph')
-rw-r--r--src/render/shadergraph/qshadergraph.cpp22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/render/shadergraph/qshadergraph.cpp b/src/render/shadergraph/qshadergraph.cpp
index c2f3c343e..285aff116 100644
--- a/src/render/shadergraph/qshadergraph.cpp
+++ b/src/render/shadergraph/qshadergraph.cpp
@@ -242,16 +242,6 @@ QVector<QShaderGraph::Statement> QShaderGraph::createStatements(const QStringLis
return res;
}();
- const QVector<Edge> enabledEdges = [this, intersectsEnabledLayers] {
- auto res = QVector<Edge>();
- std::copy_if(m_edges.cbegin(), m_edges.cend(),
- std::back_inserter(res),
- [intersectsEnabledLayers] (const Edge &edge) {
- return intersectsEnabledLayers(edge.layers);
- });
- return res;
- }();
-
const QHash<QUuid, Statement> idHash = [enabledNodes] {
auto nextVarId = 0;
auto res = QHash<QUuid, Statement>();
@@ -260,6 +250,18 @@ QVector<QShaderGraph::Statement> QShaderGraph::createStatements(const QStringLis
return res;
}();
+ const QVector<Edge> enabledEdges = [this, intersectsEnabledLayers, &idHash] {
+ auto res = QVector<Edge>();
+ std::copy_if(m_edges.cbegin(), m_edges.cend(),
+ std::back_inserter(res),
+ [intersectsEnabledLayers, &idHash] (const Edge &edge) {
+ return intersectsEnabledLayers(edge.layers)
+ && idHash.contains(edge.sourceNodeUuid)
+ && idHash.contains(edge.targetNodeUuid);
+ });
+ return res;
+ }();
+
auto result = QVector<Statement>();
QVector<Edge> currentEdges = enabledEdges;
QVector<QUuid> currentUuids = [enabledNodes, enabledEdges] {