summaryrefslogtreecommitdiffstats
path: root/src/render/frontend
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2015-12-10 15:58:05 +0000
committerMike Krus <mike.krus@kdab.com>2016-01-25 14:13:13 +0000
commit28ec1ca1883e0fe9b8b0e0de4049564ae652bd90 (patch)
tree3722809fc54b75d08b08fb68bd5d9d56fbe24342 /src/render/frontend
parent4ad00b344bc79e34f2ba2f8355e65c7948791389 (diff)
Refactor picking to use one thread per entity
Added triangle visitor by refactor the triangle volume extractor Added ability to do a ray intersection with a single volume without using a thread Added entity collector Use one thread for each entity Ignore entities that don’t have a pick object Removed list of triangle volumes stored on each entity Use triangle visitor to test each triangle by creating a single volume on the stack Added triangle and 3 vertex index to the pick event Change-Id: Id3fd53549bf3ea07805426ef868df174f30e176b Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/frontend')
-rw-r--r--src/render/frontend/qrenderaspect.cpp13
1 files changed, 2 insertions, 11 deletions
diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp
index bd14694cd..71ca42b80 100644
--- a/src/render/frontend/qrenderaspect.cpp
+++ b/src/render/frontend/qrenderaspect.cpp
@@ -371,19 +371,10 @@ QVector<Qt3DCore::QAspectJobPtr> QRenderAspect::jobsToExecute(qint64 time)
const QVector<QAspectJobPtr> geometryJobs = createGeometryRendererJobs();
jobs.append(geometryJobs);
-
- const QVector<QNodeId> geometryRendererTriangleUpdates = manager->geometryRendererManager()->geometryRenderersRequiringTriangleDataRefresh();
- Q_FOREACH (const QNodeId geomRendererId, geometryRendererTriangleUpdates) {
- Render::CalcGeometryTriangleVolumesPtr triangleComputeJob(new Render::CalcGeometryTriangleVolumes(geomRendererId, manager));
- triangleComputeJob->addDependency(d->m_framePreparationJob);
- pickBoundingVolumeJob->addDependency(triangleComputeJob);
- jobs.append(triangleComputeJob);
- }
-
// Only add dependency if not already present
const QVector<QWeakPointer<QAspectJob> > dependencies = pickBoundingVolumeJob->dependencies();
- if (std::find(dependencies.begin(), dependencies.end(), d->m_updateBoundingVolumeJob) == dependencies.end())
- pickBoundingVolumeJob->addDependency(d->m_updateBoundingVolumeJob);
+ if (std::find(dependencies.begin(), dependencies.end(), d->m_framePreparationJob) == dependencies.end())
+ pickBoundingVolumeJob->addDependency(d->m_framePreparationJob);
// Add all jobs to queue
jobs.append(d->m_calculateBoundingVolumeJob);