summaryrefslogtreecommitdiffstats
path: root/src/render/framegraph/framegraphvisitor.cpp
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2016-06-27 07:37:14 +0200
committerPaul Lemire <paul.lemire@kdab.com>2016-07-04 06:10:12 +0000
commit833211452246dc497ae252698e4262b0fbc328a1 (patch)
tree45f9ac7a67b0f121605d17148ec749224edb8868 /src/render/framegraph/framegraphvisitor.cpp
parentec02c3dcad1deb1cec5b83a95194071cef2bf8e1 (diff)
LayerFiltering: only filter using enabled layers
Change-Id: Ia0831387e01527c15ebef6c734367f42debbd5df Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/framegraph/framegraphvisitor.cpp')
-rw-r--r--src/render/framegraph/framegraphvisitor.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/render/framegraph/framegraphvisitor.cpp b/src/render/framegraph/framegraphvisitor.cpp
index c90a4c1e6..211ed0660 100644
--- a/src/render/framegraph/framegraphvisitor.cpp
+++ b/src/render/framegraph/framegraphvisitor.cpp
@@ -188,7 +188,21 @@ void FrameGraphVisitor::visit(Render::FrameGraphNode *node)
// Layer filtering
filterEntityByLayer->setHasLayerFilter(rv->hasLayerFilter());
- filterEntityByLayer->setLayers(rv->layerFilter());
+
+ // Only trouble ourselves to filter out disabled layers if layer filtering
+ // is enabled
+ if (rv->hasLayerFilter()) {
+ Qt3DCore::QNodeIdVector layerIdsToFilter = rv->layerFilter();
+ LayerManager *layerManager = renderer->nodeManagers()->layerManager();
+
+ // Remove layerIds which are not active
+ for (auto i = layerIdsToFilter.size() - 1; i >= 0; --i) {
+ Layer *backendLayer = layerManager->lookupResource(layerIdsToFilter.at(i));
+ if (backendLayer == nullptr || !backendLayer->isEnabled())
+ layerIdsToFilter.removeAt(i);
+ }
+ filterEntityByLayer->setLayers(layerIdsToFilter);
+ }
// Material Parameter building
for (const auto materialGatherer : qAsConst(materialGatherers)) {