diff options
author | Mike Krus <mike.krus@kdab.com> | 2015-12-10 15:58:05 +0000 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2016-01-25 14:13:13 +0000 |
commit | 28ec1ca1883e0fe9b8b0e0de4049564ae652bd90 (patch) | |
tree | 3722809fc54b75d08b08fb68bd5d9d56fbe24342 /src/render/frontend | |
parent | 4ad00b344bc79e34f2ba2f8355e65c7948791389 (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.cpp | 13 |
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); |