From a06437ae2d9096b85377a6fb9076d05c18db157f Mon Sep 17 00:00:00 2001 From: Paul Lemire Date: Tue, 17 Nov 2015 10:09:13 +0100 Subject: QRenderAspect: use CalcGeometryTriangleVolumes Change-Id: Ifedd202820c9420d166b3f5a75f5c5358207a8bc Reviewed-by: Andy Nichols --- src/render/frontend/qrenderaspect.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src/render/frontend') diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp index de826107c..bcfdddde5 100644 --- a/src/render/frontend/qrenderaspect.cpp +++ b/src/render/frontend/qrenderaspect.cpp @@ -102,6 +102,7 @@ #include #include #include +#include #include #include @@ -291,8 +292,9 @@ QVector QRenderAspect::jobsToExecute(qint64 time) // 2 CalculateBoundingVolumeJob (depends on LoadBuffer) // 3 WorldTransformJob // 4 UpdateBoundingVolume, FramePreparationJob (depend on WorlTransformJob) - // 5 PickBoundingVolume Job, RenderViewJobs - // 6 Cleanup Job (depends on RV) + // 5 CalcGeometryTriangleVolumes (frame preparation job), RenderViewJobs + // 6 PickBoundingVolumeJob + // 7 Cleanup Job (depends on RV) // Create jobs to load in any meshes that are pending if (d->m_renderer != Q_NULLPTR && d->m_renderer->isRunning()) { @@ -331,6 +333,17 @@ QVector QRenderAspect::jobsToExecute(qint64 time) const QVector geometryJobs = d->m_renderer->createGeometryRendererJobs(); jobs.append(geometryJobs); + // Clear any previous dependency not valid anymore + d->m_pickBoundingVolumeJob->clearNullDependencies(); + + const QVector geometryRendererTriangleUpdates = manager->geometryRendererManager()->geometryRenderersRequiringTriangleDataRefresh(); + Q_FOREACH (const QNodeId geomRendererId, geometryRendererTriangleUpdates) { + Render::CalcGeometryTriangleVolumesPtr triangleComputeJob(new Render::CalcGeometryTriangleVolumes(geomRendererId, manager)); + triangleComputeJob->addDependency(d->m_framePreparationJob); + d->m_pickBoundingVolumeJob->addDependency(triangleComputeJob); + jobs.append(triangleComputeJob); + } + // Add all jobs to queue jobs.append(d->m_calculateBoundingVolumeJob); jobs.append(d->m_worldTransformJob); -- cgit v1.2.3