From Roland Smeenk, "this submission adds a "Fast Drawable" line to the camera scene statistics.
It shows the total number of sorted and unsorted drawables that use the fastpath for rendering."
This commit is contained in:
parent
77c35eabde
commit
cbc43841e1
@ -102,6 +102,7 @@ class OSGUTIL_EXPORT Statistics : public osg::PrimitiveFunctor
|
||||
virtual void end();
|
||||
|
||||
void addDrawable() { numDrawables++;}
|
||||
void addFastDrawable() { numFastDrawables++;}
|
||||
void addMatrix() { nummat++;}
|
||||
void addLight(int np) { nlights+=np;}
|
||||
void addImpostor(int np) { nimpostor+= np; }
|
||||
@ -126,6 +127,7 @@ class OSGUTIL_EXPORT Statistics : public osg::PrimitiveFunctor
|
||||
PrimitiveCountMap::iterator GetPrimitivesEnd() { return _primitives_count.end(); }
|
||||
|
||||
int numDrawables, nummat, nbins, numStateGraphs;
|
||||
int numFastDrawables;
|
||||
int nlights;
|
||||
int depth; // depth into bins - eg 1.1,1.2,1.3 etc
|
||||
int _binNo;
|
||||
|
@ -535,6 +535,14 @@ bool RenderBin::getStats(Statistics& stats) const
|
||||
const RenderLeaf* rl = *dw_itr;
|
||||
const Drawable* dw= rl->getDrawable();
|
||||
stats.addDrawable(); // number of geosets
|
||||
|
||||
const Geometry* geom = dw->asGeometry();
|
||||
if (geom)
|
||||
{
|
||||
if (geom->areFastPathsUsed())
|
||||
stats.addFastDrawable();
|
||||
}
|
||||
|
||||
if (rl->_modelview.get())
|
||||
{
|
||||
stats.addMatrix(); // number of matrices
|
||||
@ -560,6 +568,14 @@ bool RenderBin::getStats(Statistics& stats) const
|
||||
const RenderLeaf* rl = dw_itr->get();
|
||||
const Drawable* dw= rl->getDrawable();
|
||||
stats.addDrawable(); // number of geosets
|
||||
|
||||
const Geometry* geom = dw->asGeometry();
|
||||
if (geom)
|
||||
{
|
||||
if (geom->areFastPathsUsed())
|
||||
stats.addFastDrawable();
|
||||
}
|
||||
|
||||
if (rl->_modelview.get()) stats.addMatrix(); // number of matrices
|
||||
if (dw)
|
||||
{
|
||||
|
@ -37,6 +37,7 @@ Statistics::Statistics()
|
||||
void Statistics::reset()
|
||||
{
|
||||
numDrawables=0;
|
||||
numFastDrawables=0;
|
||||
nummat=0;
|
||||
depth=0;
|
||||
stattype=STAT_NONE;
|
||||
@ -108,6 +109,7 @@ void Statistics::end()
|
||||
void Statistics::add(const Statistics& stats)
|
||||
{
|
||||
numDrawables += stats.numDrawables;
|
||||
numFastDrawables += stats.numFastDrawables;
|
||||
nummat += stats.nummat;
|
||||
depth += stats.depth;
|
||||
nlights += stats.nlights;
|
||||
|
@ -377,6 +377,7 @@ void Renderer::cull()
|
||||
|
||||
stats->setAttribute(frameNumber, "Visible vertex count", static_cast<double>(sceneStats._vertexCount));
|
||||
stats->setAttribute(frameNumber, "Visible number of drawables", static_cast<double>(sceneStats.numDrawables));
|
||||
stats->setAttribute(frameNumber, "Visible number of fast drawables", static_cast<double>(sceneStats.numFastDrawables));
|
||||
stats->setAttribute(frameNumber, "Visible number of lights", static_cast<double>(sceneStats.nlights));
|
||||
stats->setAttribute(frameNumber, "Visible number of render bins", static_cast<double>(sceneStats.nbins));
|
||||
stats->setAttribute(frameNumber, "Visible depth", static_cast<double>(sceneStats.depth));
|
||||
|
@ -416,6 +416,7 @@ struct CameraSceneStatsTextDrawCallback : public virtual osg::Drawable::DrawCall
|
||||
STATS_ATTRIBUTE("Visible number of impostors")
|
||||
STATS_ATTRIBUTE("Visible number of drawables")
|
||||
STATS_ATTRIBUTE("Number of ordered leaves")
|
||||
STATS_ATTRIBUTE("Visible number of fast drawables")
|
||||
STATS_ATTRIBUTE("Visible vertex count")
|
||||
|
||||
STATS_ATTRIBUTE("Visible number of GL_POINTS")
|
||||
@ -1409,7 +1410,7 @@ void StatsHandler::setUpScene(osgViewer::ViewerBase* viewer)
|
||||
group->addChild(geode);
|
||||
geode->addDrawable(createBackgroundRectangle(pos + osg::Vec3(-backgroundMargin, characterSize + backgroundMargin, 0),
|
||||
10 * characterSize + 2 * backgroundMargin,
|
||||
20 * characterSize + 2 * backgroundMargin,
|
||||
21 * characterSize + 2 * backgroundMargin,
|
||||
backgroundColor));
|
||||
|
||||
// Camera scene & primitive stats static text
|
||||
@ -1433,6 +1434,7 @@ void StatsHandler::setUpScene(osgViewer::ViewerBase* viewer)
|
||||
viewStr << "Imposters" << std::endl;
|
||||
viewStr << "Drawables" << std::endl;
|
||||
viewStr << "Sorted Drawables" << std::endl;
|
||||
viewStr << "Fast Drawables" << std::endl;
|
||||
viewStr << "Vertices" << std::endl;
|
||||
viewStr << "Points" << std::endl;
|
||||
viewStr << "Lines" << std::endl;
|
||||
@ -1456,7 +1458,7 @@ void StatsHandler::setUpScene(osgViewer::ViewerBase* viewer)
|
||||
{
|
||||
geode->addDrawable(createBackgroundRectangle(pos + osg::Vec3(-backgroundMargin, characterSize + backgroundMargin, 0),
|
||||
5 * characterSize + 2 * backgroundMargin,
|
||||
20 * characterSize + 2 * backgroundMargin,
|
||||
21 * characterSize + 2 * backgroundMargin,
|
||||
backgroundColor));
|
||||
|
||||
// Camera scene stats
|
||||
|
Loading…
Reference in New Issue
Block a user