diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2020-12-01 16:59:02 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2020-12-02 05:48:24 +0000 |
commit | 07a216f327bea9a4f7880fe44eda7e27c2bbe820 (patch) | |
tree | cfee36d379480027127b4b4ea2e1532daff39d08 | |
parent | fa26369dedf9ae96dc1971dc8b6dbbcd8cdd7351 (diff) |
Force command filtering based on frustum culling result
Change-Id: I9def719816548d45e1235cb4f65bf0c0d6d0f405
Reviewed-by: Mike Krus <mike.krus@kdab.com>
(cherry picked from commit f56bc203388866614d8c9f3653c5c835a58ff8d7)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/render/jobs/rendersyncjobs_p.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/render/jobs/rendersyncjobs_p.h b/src/render/jobs/rendersyncjobs_p.h index c2ad714a3..856126e24 100644 --- a/src/render/jobs/rendersyncjobs_p.h +++ b/src/render/jobs/rendersyncjobs_p.h @@ -299,7 +299,7 @@ public: const bool lightsCacheRebuild = m_rebuildFlags.testFlag(RebuildFlag::LightCacheRebuild); const bool cameraDirty = cacheForLeaf.viewProjectionMatrix != rv->viewProjectionMatrix(); const bool hasProximityFilter = !rv->proximityFilterIds().empty(); - const bool commandFilteringRequired = + bool commandFilteringRequired = fullRebuild || layerFilteringRebuild || lightsCacheRebuild || @@ -375,9 +375,12 @@ public: // We need to check this regardless of whether the camera has moved since // entities in the scene themselves could have moved if (isDraw && rv->frustumCulling()) { - cacheForLeaf.filteredAndCulledRenderables = entitiesInSubset( + const std::vector<Entity *> &subset = entitiesInSubset( cacheForLeaf.layeredFilteredRenderables, m_frustumCullingJob->visibleEntities()); + // Force command filtering if what we contain in cache and what we filtered differ + commandFilteringRequired |= (subset != cacheForLeaf.filteredAndCulledRenderables); + cacheForLeaf.filteredAndCulledRenderables = subset; } rv->setMaterialParameterTable(cacheForLeaf.materialParameterGatherer); |