aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-10-17 17:06:28 +0300
committerPerttu Ahola <celeron55@gmail.com>2011-10-17 17:06:28 +0300
commit5037efdea9bd3fc86c1df5200e71741c98627b00 (patch)
tree3bba65ee424ac6868a44dbfe30a5d9143a1fa5cf
parente9888c8e2525e9f3d476a96d42662f521f780c27 (diff)
downloadminetest-5037efdea9bd3fc86c1df5200e71741c98627b00.tar.gz
minetest-5037efdea9bd3fc86c1df5200e71741c98627b00.tar.bz2
minetest-5037efdea9bd3fc86c1df5200e71741c98627b00.zip
Add some rendering statistics to profiler
-rw-r--r--src/game.cpp1
-rw-r--r--src/map.cpp14
2 files changed, 15 insertions, 0 deletions
diff --git a/src/game.cpp b/src/game.cpp
index e666e084d..78962c18c 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -1071,6 +1071,7 @@ void the_game(
object_hit_delay_timer -= dtime;
g_profiler->add("Elapsed time", dtime);
+ g_profiler->avg("FPS", 1./dtime);
/*
Log frametime for visualization
diff --git a/src/map.cpp b/src/map.cpp
index 63c6ad57c..943d9772a 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -34,6 +34,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#endif
#include "settings.h"
#include "log.h"
+#include "profiler.h"
#define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")"
@@ -3760,6 +3761,7 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
p_nodes_max.Z / MAP_BLOCKSIZE + 1);
u32 vertex_count = 0;
+ u32 meshbuffer_count = 0;
// For limiting number of mesh updates per frame
u32 mesh_update_count = 0;
@@ -3909,6 +3911,7 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
sector_blocks_drawn++;
u32 c = mesh->getMeshBufferCount();
+ meshbuffer_count += c;
for(u32 i=0; i<c; i++)
{
@@ -3939,6 +3942,17 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
}
}
+ if(pass == scene::ESNRP_SOLID){
+ g_profiler->avg("CM: blocks drawn on solid pass", blocks_drawn);
+ g_profiler->avg("CM: vertices drawn on solid pass", vertex_count);
+ if(blocks_drawn != 0)
+ g_profiler->avg("CM: solid meshbuffers per block",
+ (float)meshbuffer_count / (float)blocks_drawn);
+ } else {
+ g_profiler->avg("CM: blocks drawn on transparent pass", blocks_drawn);
+ g_profiler->avg("CM: vertices drawn on transparent pass", vertex_count);
+ }
+
m_control.blocks_drawn = blocks_drawn;
m_control.blocks_would_have_drawn = blocks_would_have_drawn;