diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index cd559eebda..a88e757d28 100644 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -74,7 +74,6 @@ namespace render { if (avatarPtr->isInitialized() && args) { avatarPtr->render(args, Application::getInstance()->getCamera()->getPosition()); - args->_details._elementsTouched++; } } } diff --git a/interface/src/ui/overlays/Overlays.cpp b/interface/src/ui/overlays/Overlays.cpp index ad9817fce0..311b0be867 100644 --- a/interface/src/ui/overlays/Overlays.cpp +++ b/interface/src/ui/overlays/Overlays.cpp @@ -55,8 +55,6 @@ namespace render { } template <> void payloadRender(const Overlay::Pointer& overlay, RenderArgs* args) { if (args) { - args->_details._elementsTouched++; - glPushMatrix(); if (overlay->getAnchor() == Overlay::MY_AVATAR) { MyAvatar* avatar = DependencyManager::get()->getMyAvatar(); diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index ad0df484cc..02a3747cec 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -654,7 +654,7 @@ void EntityTreeRenderer::renderProxies(EntityItemPointer entity, RenderArgs* arg } void EntityTreeRenderer::renderElement(OctreeElement* element, RenderArgs* args) { - args->_details._elementsTouched++; + args->_outsideEngineDetails._elementsTouched++; // actually render it here... // we need to iterate the actual entityItems of the element EntityTreeElement* entityTreeElement = static_cast(element); @@ -719,15 +719,15 @@ void EntityTreeRenderer::renderElement(OctreeElement* element, RenderArgs* args) glower = new Glower(args, entityItem->getGlowLevel()); } entityItem->render(args); - args->_details._itemsRendered++; + args->_outsideEngineDetails._itemsRendered++; if (glower) { delete glower; } } else { - args->_details._itemsTooSmall++; + args->_outsideEngineDetails._itemsTooSmall++; } } else { - args->_details._itemsOutOfView++; + args->_outsideEngineDetails._itemsOutOfView++; } } } diff --git a/libraries/entities-renderer/src/RenderableEntityItem.cpp b/libraries/entities-renderer/src/RenderableEntityItem.cpp index 2d04628e5c..144740f95d 100644 --- a/libraries/entities-renderer/src/RenderableEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableEntityItem.cpp @@ -30,7 +30,6 @@ namespace render { } template <> void payloadRender(const RenderableEntityItemProxy::Pointer& payload, RenderArgs* args) { if (args) { - args->_details._elementsTouched++; if (payload && payload->entity) { if (payload->entity->getType() != EntityTypes::Model) { payload->entity->render(args); diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index e22bc4a137..98a9fd0bd6 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -159,7 +159,6 @@ namespace render { } template <> void payloadRender(const RenderableModelEntityItemMeta::Pointer& payload, RenderArgs* args) { if (args) { - args->_details._elementsTouched++; if (payload && payload->entity) { payload->entity->render(args); } diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index ab2a6568cf..6f4b9bca9e 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -834,7 +834,6 @@ namespace render { } template <> void payloadRender(const TransparentMeshPart::Pointer& payload, RenderArgs* args) { if (args) { - args->_details._elementsTouched++; return payload->model->renderPart(args, payload->meshIndex, payload->partIndex, true); } } @@ -866,7 +865,6 @@ namespace render { } template <> void payloadRender(const OpaqueMeshPart::Pointer& payload, RenderArgs* args) { if (args) { - args->_details._elementsTouched++; return payload->model->renderPart(args, payload->meshIndex, payload->partIndex, false); } } @@ -1121,8 +1119,8 @@ bool Model::renderCore(RenderArgs* args, float alpha) { _viewState->setupWorldLight(); if (args) { - args->_details._translucentMeshPartsRendered = translucentMeshPartsRendered; - args->_details._opaqueMeshPartsRendered = opaqueMeshPartsRendered; + args->_outsideEngineDetails._translucentMeshPartsRendered = translucentMeshPartsRendered; + args->_outsideEngineDetails._opaqueMeshPartsRendered = opaqueMeshPartsRendered; } #ifdef WANT_DEBUG_MESHBOXES @@ -2192,8 +2190,8 @@ void Model::endScene(RenderArgs* args) { GLBATCH(glUseProgram)(0); if (args) { - args->_details._translucentMeshPartsRendered = translucentParts; - args->_details._opaqueMeshPartsRendered = opaqueMeshPartsRendered; + args->_outsideEngineDetails._translucentMeshPartsRendered = translucentParts; + args->_outsideEngineDetails._opaqueMeshPartsRendered = opaqueMeshPartsRendered; } } @@ -2683,7 +2681,7 @@ int Model::renderMeshesFromList(QVector& list, gpu::Batch& batch, RenderMod // if we got here, then check to see if this mesh is in view if (args) { bool shouldRender = true; - args->_details._meshesConsidered++; + args->_outsideEngineDetails._meshesConsidered++; if (args->_viewFrustum) { @@ -2695,15 +2693,15 @@ int Model::renderMeshesFromList(QVector& list, gpu::Batch& batch, RenderMod shouldRender = !_viewState ? false : _viewState->shouldRenderMesh(_calculatedMeshBoxes.at(i).getLargestDimension(), distance); if (!shouldRender) { - args->_details._meshesTooSmall++; + args->_outsideEngineDetails._meshesTooSmall++; } } else { - args->_details._meshesOutOfView++; + args->_outsideEngineDetails._meshesOutOfView++; } } if (shouldRender) { - args->_details._meshesRendered++; + args->_outsideEngineDetails._meshesRendered++; } else { continue; // skip this mesh } @@ -2797,7 +2795,7 @@ int Model::renderMeshesFromList(QVector& list, gpu::Batch& batch, RenderMod } if (args) { - args->_details._materialSwitches++; + args->_outsideEngineDetails._materialSwitches++; } } @@ -2833,8 +2831,8 @@ int Model::renderMeshesFromList(QVector& list, gpu::Batch& batch, RenderMod if (args) { const int INDICES_PER_TRIANGLE = 3; const int INDICES_PER_QUAD = 4; - args->_details._trianglesRendered += part.triangleIndices.size() / INDICES_PER_TRIANGLE; - args->_details._quadsRendered += part.quadIndices.size() / INDICES_PER_QUAD; + args->_outsideEngineDetails._trianglesRendered += part.triangleIndices.size() / INDICES_PER_TRIANGLE; + args->_outsideEngineDetails._quadsRendered += part.quadIndices.size() / INDICES_PER_QUAD; } } } diff --git a/libraries/render/src/render/DrawTask.cpp b/libraries/render/src/render/DrawTask.cpp index 9115fc73ef..ec8c8d055f 100755 --- a/libraries/render/src/render/DrawTask.cpp +++ b/libraries/render/src/render/DrawTask.cpp @@ -63,6 +63,8 @@ void render::cullItems(const SceneContextPointer& sceneContext, const RenderCont auto& scene = sceneContext->_scene; RenderArgs* args = renderContext->args; + + int startingSize = outItems.size(); // Culling / LOD for (auto id : inItems) { @@ -71,7 +73,6 @@ void render::cullItems(const SceneContextPointer& sceneContext, const RenderCont if (bound.isNull()) { outItems.push_back(id); // One more Item to render - args->_details._itemsRendered++; continue; } @@ -83,7 +84,6 @@ void render::cullItems(const SceneContextPointer& sceneContext, const RenderCont if (bigEnoughToRender) { outItems.push_back(id); // One more Item to render - args->_details._itemsRendered++; } else { args->_details._itemsTooSmall++; } @@ -91,6 +91,8 @@ void render::cullItems(const SceneContextPointer& sceneContext, const RenderCont args->_details._itemsOutOfView++; } } + + args->_details._itemsRendered += (outItems.size() - startingSize); } struct ItemBound { diff --git a/libraries/shared/src/RenderArgs.h b/libraries/shared/src/RenderArgs.h index 0cf8aa5799..1bce99907c 100644 --- a/libraries/shared/src/RenderArgs.h +++ b/libraries/shared/src/RenderArgs.h @@ -89,6 +89,7 @@ public: ShoudRenderFunctor _shouldRender; RenderDetails _details; + RenderDetails _outsideEngineDetails; float _alphaThreshold = 0.5f; };