diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2016-06-27 07:37:14 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2016-07-04 06:10:12 +0000 |
commit | 833211452246dc497ae252698e4262b0fbc328a1 (patch) | |
tree | 45f9ac7a67b0f121605d17148ec749224edb8868 /src/render/framegraph/framegraphvisitor.cpp | |
parent | ec02c3dcad1deb1cec5b83a95194071cef2bf8e1 (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.cpp | 16 |
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)) { |