mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-07-23 13:44:36 +02:00
Remove deprecated render stats
This commit is contained in:
parent
41be3fee87
commit
a4340b17e9
5 changed files with 12 additions and 81 deletions
|
@ -467,28 +467,13 @@ void Stats::display(
|
||||||
horizontalOffset += 5;
|
horizontalOffset += 5;
|
||||||
|
|
||||||
// Model/Entity render details
|
// Model/Entity render details
|
||||||
EntityTreeRenderer* entities = Application::getInstance()->getEntities();
|
|
||||||
octreeStats.str("");
|
octreeStats.str("");
|
||||||
octreeStats << "Entity Items rendered: " << _renderDetails._itemsRendered
|
octreeStats << "Triangles: " << _renderDetails._trianglesRendered
|
||||||
<< " / Out of view:" << _renderDetails._itemsOutOfView
|
<< " / Quads:" << _renderDetails._quadsRendered
|
||||||
<< " / Too small:" << _renderDetails._itemsTooSmall;
|
<< " / Material Switches:" << _renderDetails._materialSwitches;
|
||||||
drawText(horizontalOffset, verticalOffset, scale, rotation, font, (char*)octreeStats.str().c_str(), color);
|
drawText(horizontalOffset, verticalOffset, scale, rotation, font, (char*)octreeStats.str().c_str(), color);
|
||||||
|
|
||||||
if (_expanded) {
|
if (_expanded) {
|
||||||
octreeStats.str("");
|
|
||||||
octreeStats << " Meshes rendered: " << _renderDetails._meshesRendered
|
|
||||||
<< " / Out of view:" << _renderDetails._meshesOutOfView
|
|
||||||
<< " / Too small:" << _renderDetails._meshesTooSmall;
|
|
||||||
verticalOffset += STATS_PELS_PER_LINE;
|
|
||||||
drawText(horizontalOffset, verticalOffset, scale, rotation, font, (char*)octreeStats.str().c_str(), color);
|
|
||||||
|
|
||||||
octreeStats.str("");
|
|
||||||
octreeStats << " Triangles: " << _renderDetails._trianglesRendered
|
|
||||||
<< " / Quads:" << _renderDetails._quadsRendered
|
|
||||||
<< " / Material Switches:" << _renderDetails._materialSwitches;
|
|
||||||
verticalOffset += STATS_PELS_PER_LINE;
|
|
||||||
drawText(horizontalOffset, verticalOffset, scale, rotation, font, (char*)octreeStats.str().c_str(), color);
|
|
||||||
|
|
||||||
octreeStats.str("");
|
octreeStats.str("");
|
||||||
octreeStats << " Mesh Parts Rendered Opaque: " << _renderDetails._opaqueMeshPartsRendered
|
octreeStats << " Mesh Parts Rendered Opaque: " << _renderDetails._opaqueMeshPartsRendered
|
||||||
<< " / Translucent:" << _renderDetails._translucentMeshPartsRendered;
|
<< " / Translucent:" << _renderDetails._translucentMeshPartsRendered;
|
||||||
|
|
|
@ -654,7 +654,6 @@ void EntityTreeRenderer::renderProxies(EntityItemPointer entity, RenderArgs* arg
|
||||||
}
|
}
|
||||||
|
|
||||||
void EntityTreeRenderer::renderElement(OctreeElement* element, RenderArgs* args) {
|
void EntityTreeRenderer::renderElement(OctreeElement* element, RenderArgs* args) {
|
||||||
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 +718,10 @@ 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->_outsideEngineDetails._itemsRendered++;
|
|
||||||
if (glower) {
|
if (glower) {
|
||||||
delete glower;
|
delete glower;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
args->_outsideEngineDetails._itemsTooSmall++;
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
args->_outsideEngineDetails._itemsOutOfView++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1118,11 +1118,6 @@ bool Model::renderCore(RenderArgs* args, float alpha) {
|
||||||
// restore all the default material settings
|
// restore all the default material settings
|
||||||
_viewState->setupWorldLight();
|
_viewState->setupWorldLight();
|
||||||
|
|
||||||
if (args) {
|
|
||||||
args->_outsideEngineDetails._translucentMeshPartsRendered = translucentMeshPartsRendered;
|
|
||||||
args->_outsideEngineDetails._opaqueMeshPartsRendered = opaqueMeshPartsRendered;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef WANT_DEBUG_MESHBOXES
|
#ifdef WANT_DEBUG_MESHBOXES
|
||||||
renderDebugMeshBoxes();
|
renderDebugMeshBoxes();
|
||||||
#endif
|
#endif
|
||||||
|
@ -2189,11 +2184,6 @@ void Model::endScene(RenderArgs* args) {
|
||||||
// Back to no program
|
// Back to no program
|
||||||
GLBATCH(glUseProgram)(0);
|
GLBATCH(glUseProgram)(0);
|
||||||
|
|
||||||
if (args) {
|
|
||||||
args->_outsideEngineDetails._translucentMeshPartsRendered = translucentParts;
|
|
||||||
args->_outsideEngineDetails._opaqueMeshPartsRendered = opaqueMeshPartsRendered;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Render!
|
// Render!
|
||||||
|
@ -2307,8 +2297,6 @@ void Model::renderPart(RenderArgs* args, int meshIndex, int partIndex, bool tran
|
||||||
pickPrograms(batch, mode, translucent, alphaThreshold, hasLightmap, hasTangents, hasSpecular, isSkinned, wireframe,
|
pickPrograms(batch, mode, translucent, alphaThreshold, hasLightmap, hasTangents, hasSpecular, isSkinned, wireframe,
|
||||||
args, locations);
|
args, locations);
|
||||||
|
|
||||||
|
|
||||||
int meshPartsRendered = 0;
|
|
||||||
updateVisibleJointStates();
|
updateVisibleJointStates();
|
||||||
|
|
||||||
// if our index is ever out of range for either meshes or networkMeshes, then skip it, and set our _meshGroupsKnown
|
// if our index is ever out of range for either meshes or networkMeshes, then skip it, and set our _meshGroupsKnown
|
||||||
|
@ -2438,16 +2426,14 @@ void Model::renderPart(RenderArgs* args, int meshIndex, int partIndex, bool tran
|
||||||
float emissiveOffset = part.emissiveParams.x;
|
float emissiveOffset = part.emissiveParams.x;
|
||||||
float emissiveScale = part.emissiveParams.y;
|
float emissiveScale = part.emissiveParams.y;
|
||||||
GLBATCH(glUniform2f)(locations->emissiveParams, emissiveOffset, emissiveScale);
|
GLBATCH(glUniform2f)(locations->emissiveParams, emissiveOffset, emissiveScale);
|
||||||
|
|
||||||
Texture* emissiveMap = networkPart.emissiveTexture.data();
|
Texture* emissiveMap = networkPart.emissiveTexture.data();
|
||||||
batch.setUniformTexture(locations->emissiveTextureUnit, !emissiveMap ?
|
batch.setUniformTexture(locations->emissiveTextureUnit, !emissiveMap ?
|
||||||
textureCache->getWhiteTexture() : emissiveMap->getGPUTexture());
|
textureCache->getWhiteTexture() : emissiveMap->getGPUTexture());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
meshPartsRendered++;
|
|
||||||
|
|
||||||
if (part.quadIndices.size() > 0) {
|
if (part.quadIndices.size() > 0) {
|
||||||
batch.drawIndexed(gpu::QUADS, part.quadIndices.size(), offset);
|
batch.drawIndexed(gpu::QUADS, part.quadIndices.size(), offset);
|
||||||
offset += part.quadIndices.size() * sizeof(int);
|
offset += part.quadIndices.size() * sizeof(int);
|
||||||
|
@ -2463,6 +2449,12 @@ void Model::renderPart(RenderArgs* args, int meshIndex, int partIndex, bool tran
|
||||||
const int INDICES_PER_QUAD = 4;
|
const int INDICES_PER_QUAD = 4;
|
||||||
args->_details._trianglesRendered += part.triangleIndices.size() / INDICES_PER_TRIANGLE;
|
args->_details._trianglesRendered += part.triangleIndices.size() / INDICES_PER_TRIANGLE;
|
||||||
args->_details._quadsRendered += part.quadIndices.size() / INDICES_PER_QUAD;
|
args->_details._quadsRendered += part.quadIndices.size() / INDICES_PER_QUAD;
|
||||||
|
|
||||||
|
if (translucent) {
|
||||||
|
args->_details._translucentMeshPartsRendered++;
|
||||||
|
} else {
|
||||||
|
args->_details._opaqueMeshPartsRendered++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2681,8 +2673,6 @@ 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->_outsideEngineDetails._meshesConsidered++;
|
|
||||||
|
|
||||||
if (args->_viewFrustum) {
|
if (args->_viewFrustum) {
|
||||||
|
|
||||||
shouldRender = forceRenderMeshes ||
|
shouldRender = forceRenderMeshes ||
|
||||||
|
@ -2692,17 +2682,10 @@ int Model::renderMeshesFromList(QVector<int>& list, gpu::Batch& batch, RenderMod
|
||||||
float distance = args->_viewFrustum->distanceToCamera(_calculatedMeshBoxes.at(i).calcCenter());
|
float distance = args->_viewFrustum->distanceToCamera(_calculatedMeshBoxes.at(i).calcCenter());
|
||||||
shouldRender = !_viewState ? false : _viewState->shouldRenderMesh(_calculatedMeshBoxes.at(i).getLargestDimension(),
|
shouldRender = !_viewState ? false : _viewState->shouldRenderMesh(_calculatedMeshBoxes.at(i).getLargestDimension(),
|
||||||
distance);
|
distance);
|
||||||
if (!shouldRender) {
|
|
||||||
args->_outsideEngineDetails._meshesTooSmall++;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
args->_outsideEngineDetails._meshesOutOfView++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (shouldRender) {
|
if (!shouldRender) {
|
||||||
args->_outsideEngineDetails._meshesRendered++;
|
|
||||||
} else {
|
|
||||||
continue; // skip this mesh
|
continue; // skip this mesh
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2793,11 +2776,6 @@ int Model::renderMeshesFromList(QVector<int>& list, gpu::Batch& batch, RenderMod
|
||||||
batch.setUniformTexture(locations->specularTextureUnit, !specularMap ?
|
batch.setUniformTexture(locations->specularTextureUnit, !specularMap ?
|
||||||
textureCache->getWhiteTexture() : specularMap->getGPUTexture());
|
textureCache->getWhiteTexture() : specularMap->getGPUTexture());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args) {
|
|
||||||
args->_outsideEngineDetails._materialSwitches++;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// HACK: For unkwon reason (yet!) this code that should be assigned only if the material changes need to be called for every
|
// HACK: For unkwon reason (yet!) this code that should be assigned only if the material changes need to be called for every
|
||||||
|
@ -2828,12 +2806,6 @@ int Model::renderMeshesFromList(QVector<int>& list, gpu::Batch& batch, RenderMod
|
||||||
offset += part.triangleIndices.size() * sizeof(int);
|
offset += part.triangleIndices.size() * sizeof(int);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args) {
|
|
||||||
const int INDICES_PER_TRIANGLE = 3;
|
|
||||||
const int INDICES_PER_QUAD = 4;
|
|
||||||
args->_outsideEngineDetails._trianglesRendered += part.triangleIndices.size() / INDICES_PER_TRIANGLE;
|
|
||||||
args->_outsideEngineDetails._quadsRendered += part.quadIndices.size() / INDICES_PER_QUAD;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -63,8 +63,6 @@ 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) {
|
||||||
|
@ -81,18 +79,11 @@ void render::cullItems(const SceneContextPointer& sceneContext, const RenderCont
|
||||||
bool outOfView = args->_viewFrustum->boxInFrustum(bound) == ViewFrustum::OUTSIDE;
|
bool outOfView = args->_viewFrustum->boxInFrustum(bound) == ViewFrustum::OUTSIDE;
|
||||||
if (!outOfView) {
|
if (!outOfView) {
|
||||||
bool bigEnoughToRender = (args->_shouldRender) ? args->_shouldRender(args, bound) : true;
|
bool bigEnoughToRender = (args->_shouldRender) ? args->_shouldRender(args, bound) : true;
|
||||||
|
|
||||||
if (bigEnoughToRender) {
|
if (bigEnoughToRender) {
|
||||||
outItems.push_back(id); // One more Item to render
|
outItems.push_back(id); // One more Item to render
|
||||||
} else {
|
|
||||||
args->_details._itemsTooSmall++;
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
args->_details._itemsOutOfView++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
args->_details._itemsRendered += (outItems.size() - startingSize);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ItemBound {
|
struct ItemBound {
|
||||||
|
|
|
@ -23,16 +23,6 @@ class Context;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct RenderDetails {
|
struct RenderDetails {
|
||||||
int _elementsTouched = 0;
|
|
||||||
int _itemsRendered = 0;
|
|
||||||
int _itemsOutOfView = 0;
|
|
||||||
int _itemsTooSmall = 0;
|
|
||||||
|
|
||||||
int _meshesConsidered = 0;
|
|
||||||
int _meshesRendered = 0;
|
|
||||||
int _meshesOutOfView = 0;
|
|
||||||
int _meshesTooSmall = 0;
|
|
||||||
|
|
||||||
int _materialSwitches = 0;
|
int _materialSwitches = 0;
|
||||||
int _trianglesRendered = 0;
|
int _trianglesRendered = 0;
|
||||||
int _quadsRendered = 0;
|
int _quadsRendered = 0;
|
||||||
|
@ -89,7 +79,6 @@ 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