diff options
author | James Turner <zakalawe@mac.com> | 2018-11-14 13:22:28 +0000 |
---|---|---|
committer | James Turner <james.turner@kdab.com> | 2019-04-10 14:57:40 +0000 |
commit | 1fcdee0f313845f4e06b294cf520ab477191774b (patch) | |
tree | 0ac12fcf01f81f4d39a3ee26fdb3537228abce08 /src/render/lights | |
parent | 88b521ffa8d3dd9210251f2ab84721db1e10ef35 (diff) |
Cache light/renderable/computable vectors
This avoids running these jobs when lights / renderables have
not changed in a frame
Change-Id: I604180fe3442ab67648c4ba5d9effb8639c68ef7
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/lights')
-rw-r--r-- | src/render/lights/light.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/render/lights/light.cpp b/src/render/lights/light.cpp index 1e1855349..e8474b728 100644 --- a/src/render/lights/light.cpp +++ b/src/render/lights/light.cpp @@ -63,6 +63,9 @@ void Light::initializeFromPeer(const QNodeCreatedChangeBasePtr &change) const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QAbstractLightData>>(change); const auto &data = typedChange->data; m_shaderDataId = data.shaderDataId; + + Q_ASSERT(m_renderer); + BackendNode::markDirty(AbstractRenderer::LightsDirty); } RenderLightFunctor::RenderLightFunctor(AbstractRenderer *renderer, NodeManagers *managers) @@ -85,6 +88,8 @@ Qt3DCore::QBackendNode *RenderLightFunctor::get(Qt3DCore::QNodeId id) const void RenderLightFunctor::destroy(Qt3DCore::QNodeId id) const { + Light *backend = m_managers->lightManager()->getOrCreateResource(id); + m_renderer->markDirty(AbstractRenderer::LightsDirty, backend); m_managers->lightManager()->releaseResource(id); } |