mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 13:49:23 +02:00
Introduce outsideEngineDetails
This commit is contained in:
parent
bbf1837796
commit
9df1b05184
8 changed files with 20 additions and 24 deletions
|
@ -74,7 +74,6 @@ namespace render {
|
||||||
|
|
||||||
if (avatarPtr->isInitialized() && args) {
|
if (avatarPtr->isInitialized() && args) {
|
||||||
avatarPtr->render(args, Application::getInstance()->getCamera()->getPosition());
|
avatarPtr->render(args, Application::getInstance()->getCamera()->getPosition());
|
||||||
args->_details._elementsTouched++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,8 +55,6 @@ namespace render {
|
||||||
}
|
}
|
||||||
template <> void payloadRender(const Overlay::Pointer& overlay, RenderArgs* args) {
|
template <> void payloadRender(const Overlay::Pointer& overlay, RenderArgs* args) {
|
||||||
if (args) {
|
if (args) {
|
||||||
args->_details._elementsTouched++;
|
|
||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
if (overlay->getAnchor() == Overlay::MY_AVATAR) {
|
if (overlay->getAnchor() == Overlay::MY_AVATAR) {
|
||||||
MyAvatar* avatar = DependencyManager::get<AvatarManager>()->getMyAvatar();
|
MyAvatar* avatar = DependencyManager::get<AvatarManager>()->getMyAvatar();
|
||||||
|
|
|
@ -654,7 +654,7 @@ void EntityTreeRenderer::renderProxies(EntityItemPointer entity, RenderArgs* arg
|
||||||
}
|
}
|
||||||
|
|
||||||
void EntityTreeRenderer::renderElement(OctreeElement* element, RenderArgs* args) {
|
void EntityTreeRenderer::renderElement(OctreeElement* element, RenderArgs* args) {
|
||||||
args->_details._elementsTouched++;
|
args->_outsideEngineDetails._elementsTouched++;
|
||||||
// actually render it here...
|
// actually render it here...
|
||||||
// we need to iterate the actual entityItems of the element
|
// we need to iterate the actual entityItems of the element
|
||||||
EntityTreeElement* entityTreeElement = static_cast<EntityTreeElement*>(element);
|
EntityTreeElement* entityTreeElement = static_cast<EntityTreeElement*>(element);
|
||||||
|
@ -719,15 +719,15 @@ void EntityTreeRenderer::renderElement(OctreeElement* element, RenderArgs* args)
|
||||||
glower = new Glower(args, entityItem->getGlowLevel());
|
glower = new Glower(args, entityItem->getGlowLevel());
|
||||||
}
|
}
|
||||||
entityItem->render(args);
|
entityItem->render(args);
|
||||||
args->_details._itemsRendered++;
|
args->_outsideEngineDetails._itemsRendered++;
|
||||||
if (glower) {
|
if (glower) {
|
||||||
delete glower;
|
delete glower;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
args->_details._itemsTooSmall++;
|
args->_outsideEngineDetails._itemsTooSmall++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
args->_details._itemsOutOfView++;
|
args->_outsideEngineDetails._itemsOutOfView++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,6 @@ namespace render {
|
||||||
}
|
}
|
||||||
template <> void payloadRender(const RenderableEntityItemProxy::Pointer& payload, RenderArgs* args) {
|
template <> void payloadRender(const RenderableEntityItemProxy::Pointer& payload, RenderArgs* args) {
|
||||||
if (args) {
|
if (args) {
|
||||||
args->_details._elementsTouched++;
|
|
||||||
if (payload && payload->entity) {
|
if (payload && payload->entity) {
|
||||||
if (payload->entity->getType() != EntityTypes::Model) {
|
if (payload->entity->getType() != EntityTypes::Model) {
|
||||||
payload->entity->render(args);
|
payload->entity->render(args);
|
||||||
|
|
|
@ -159,7 +159,6 @@ namespace render {
|
||||||
}
|
}
|
||||||
template <> void payloadRender(const RenderableModelEntityItemMeta::Pointer& payload, RenderArgs* args) {
|
template <> void payloadRender(const RenderableModelEntityItemMeta::Pointer& payload, RenderArgs* args) {
|
||||||
if (args) {
|
if (args) {
|
||||||
args->_details._elementsTouched++;
|
|
||||||
if (payload && payload->entity) {
|
if (payload && payload->entity) {
|
||||||
payload->entity->render(args);
|
payload->entity->render(args);
|
||||||
}
|
}
|
||||||
|
|
|
@ -834,7 +834,6 @@ namespace render {
|
||||||
}
|
}
|
||||||
template <> void payloadRender(const TransparentMeshPart::Pointer& payload, RenderArgs* args) {
|
template <> void payloadRender(const TransparentMeshPart::Pointer& payload, RenderArgs* args) {
|
||||||
if (args) {
|
if (args) {
|
||||||
args->_details._elementsTouched++;
|
|
||||||
return payload->model->renderPart(args, payload->meshIndex, payload->partIndex, true);
|
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) {
|
template <> void payloadRender(const OpaqueMeshPart::Pointer& payload, RenderArgs* args) {
|
||||||
if (args) {
|
if (args) {
|
||||||
args->_details._elementsTouched++;
|
|
||||||
return payload->model->renderPart(args, payload->meshIndex, payload->partIndex, false);
|
return payload->model->renderPart(args, payload->meshIndex, payload->partIndex, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1121,8 +1119,8 @@ bool Model::renderCore(RenderArgs* args, float alpha) {
|
||||||
_viewState->setupWorldLight();
|
_viewState->setupWorldLight();
|
||||||
|
|
||||||
if (args) {
|
if (args) {
|
||||||
args->_details._translucentMeshPartsRendered = translucentMeshPartsRendered;
|
args->_outsideEngineDetails._translucentMeshPartsRendered = translucentMeshPartsRendered;
|
||||||
args->_details._opaqueMeshPartsRendered = opaqueMeshPartsRendered;
|
args->_outsideEngineDetails._opaqueMeshPartsRendered = opaqueMeshPartsRendered;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WANT_DEBUG_MESHBOXES
|
#ifdef WANT_DEBUG_MESHBOXES
|
||||||
|
@ -2192,8 +2190,8 @@ void Model::endScene(RenderArgs* args) {
|
||||||
GLBATCH(glUseProgram)(0);
|
GLBATCH(glUseProgram)(0);
|
||||||
|
|
||||||
if (args) {
|
if (args) {
|
||||||
args->_details._translucentMeshPartsRendered = translucentParts;
|
args->_outsideEngineDetails._translucentMeshPartsRendered = translucentParts;
|
||||||
args->_details._opaqueMeshPartsRendered = opaqueMeshPartsRendered;
|
args->_outsideEngineDetails._opaqueMeshPartsRendered = opaqueMeshPartsRendered;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2683,7 +2681,7 @@ int Model::renderMeshesFromList(QVector<int>& list, gpu::Batch& batch, RenderMod
|
||||||
// if we got here, then check to see if this mesh is in view
|
// if we got here, then check to see if this mesh is in view
|
||||||
if (args) {
|
if (args) {
|
||||||
bool shouldRender = true;
|
bool shouldRender = true;
|
||||||
args->_details._meshesConsidered++;
|
args->_outsideEngineDetails._meshesConsidered++;
|
||||||
|
|
||||||
if (args->_viewFrustum) {
|
if (args->_viewFrustum) {
|
||||||
|
|
||||||
|
@ -2695,15 +2693,15 @@ int Model::renderMeshesFromList(QVector<int>& list, gpu::Batch& batch, RenderMod
|
||||||
shouldRender = !_viewState ? false : _viewState->shouldRenderMesh(_calculatedMeshBoxes.at(i).getLargestDimension(),
|
shouldRender = !_viewState ? false : _viewState->shouldRenderMesh(_calculatedMeshBoxes.at(i).getLargestDimension(),
|
||||||
distance);
|
distance);
|
||||||
if (!shouldRender) {
|
if (!shouldRender) {
|
||||||
args->_details._meshesTooSmall++;
|
args->_outsideEngineDetails._meshesTooSmall++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
args->_details._meshesOutOfView++;
|
args->_outsideEngineDetails._meshesOutOfView++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (shouldRender) {
|
if (shouldRender) {
|
||||||
args->_details._meshesRendered++;
|
args->_outsideEngineDetails._meshesRendered++;
|
||||||
} else {
|
} else {
|
||||||
continue; // skip this mesh
|
continue; // skip this mesh
|
||||||
}
|
}
|
||||||
|
@ -2797,7 +2795,7 @@ int Model::renderMeshesFromList(QVector<int>& list, gpu::Batch& batch, RenderMod
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args) {
|
if (args) {
|
||||||
args->_details._materialSwitches++;
|
args->_outsideEngineDetails._materialSwitches++;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2833,8 +2831,8 @@ int Model::renderMeshesFromList(QVector<int>& list, gpu::Batch& batch, RenderMod
|
||||||
if (args) {
|
if (args) {
|
||||||
const int INDICES_PER_TRIANGLE = 3;
|
const int INDICES_PER_TRIANGLE = 3;
|
||||||
const int INDICES_PER_QUAD = 4;
|
const int INDICES_PER_QUAD = 4;
|
||||||
args->_details._trianglesRendered += part.triangleIndices.size() / INDICES_PER_TRIANGLE;
|
args->_outsideEngineDetails._trianglesRendered += part.triangleIndices.size() / INDICES_PER_TRIANGLE;
|
||||||
args->_details._quadsRendered += part.quadIndices.size() / INDICES_PER_QUAD;
|
args->_outsideEngineDetails._quadsRendered += part.quadIndices.size() / INDICES_PER_QUAD;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,6 +63,8 @@ void render::cullItems(const SceneContextPointer& sceneContext, const RenderCont
|
||||||
|
|
||||||
auto& scene = sceneContext->_scene;
|
auto& scene = sceneContext->_scene;
|
||||||
RenderArgs* args = renderContext->args;
|
RenderArgs* args = renderContext->args;
|
||||||
|
|
||||||
|
int startingSize = outItems.size();
|
||||||
|
|
||||||
// Culling / LOD
|
// Culling / LOD
|
||||||
for (auto id : inItems) {
|
for (auto id : inItems) {
|
||||||
|
@ -71,7 +73,6 @@ void render::cullItems(const SceneContextPointer& sceneContext, const RenderCont
|
||||||
|
|
||||||
if (bound.isNull()) {
|
if (bound.isNull()) {
|
||||||
outItems.push_back(id); // One more Item to render
|
outItems.push_back(id); // One more Item to render
|
||||||
args->_details._itemsRendered++;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,7 +84,6 @@ void render::cullItems(const SceneContextPointer& sceneContext, const RenderCont
|
||||||
|
|
||||||
if (bigEnoughToRender) {
|
if (bigEnoughToRender) {
|
||||||
outItems.push_back(id); // One more Item to render
|
outItems.push_back(id); // One more Item to render
|
||||||
args->_details._itemsRendered++;
|
|
||||||
} else {
|
} else {
|
||||||
args->_details._itemsTooSmall++;
|
args->_details._itemsTooSmall++;
|
||||||
}
|
}
|
||||||
|
@ -91,6 +91,8 @@ void render::cullItems(const SceneContextPointer& sceneContext, const RenderCont
|
||||||
args->_details._itemsOutOfView++;
|
args->_details._itemsOutOfView++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
args->_details._itemsRendered += (outItems.size() - startingSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ItemBound {
|
struct ItemBound {
|
||||||
|
|
|
@ -89,6 +89,7 @@ public:
|
||||||
ShoudRenderFunctor _shouldRender;
|
ShoudRenderFunctor _shouldRender;
|
||||||
|
|
||||||
RenderDetails _details;
|
RenderDetails _details;
|
||||||
|
RenderDetails _outsideEngineDetails;
|
||||||
|
|
||||||
float _alphaThreshold = 0.5f;
|
float _alphaThreshold = 0.5f;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue