gamnit: time the performance of the core services
authorAlexis Laferrière <alexis.laf@xymus.net>
Mon, 6 Mar 2017 19:41:54 +0000 (14:41 -0500)
committerAlexis Laferrière <alexis.laf@xymus.net>
Thu, 23 Mar 2017 21:17:55 +0000 (17:17 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

lib/gamnit/depth/depth.nit
lib/gamnit/flat.nit

index 9fc0ba7..a9a446a 100644 (file)
@@ -52,19 +52,26 @@ redef class App
                normals_program.use
                normals_program.mvp.uniform app.world_camera.mvp_matrix
 
+               frame_core_depth_clock.lapse
                for actor in actors do
                        for leaf in actor.model.leaves do
                                leaf.material.draw(actor, leaf)
                        end
                end
+               perfs["gamnit depth actors"].add frame_core_depth_clock.lapse
 
                frame_core_world_sprites display
+               perfs["gamnit depth sprites"].add frame_core_depth_clock.lapse
 
                # Toggle writing to the depth buffer for particles effects
                glDepthMask false
                for system in particle_systems do system.draw
                glDepthMask true
+               perfs["gamnit depth particles"].add frame_core_depth_clock.lapse
 
                frame_core_ui_sprites display
+               perfs["gamnit depth ui_sprites"].add frame_core_depth_clock.lapse
        end
+
+       private var frame_core_depth_clock = new Clock
 end
index 6487ed2..c4c816d 100644 (file)
@@ -38,6 +38,7 @@ import geometry::points_and_lines
 import matrix::projection
 import more_collections
 import realtime
+import performance_analysis
 
 import gamnit
 import gamnit::cameras
@@ -130,8 +131,11 @@ redef class App
        # UI sprites to draw in reference to `ui_camera`, over world `sprites`
        var ui_sprites: Sequence[Sprite] = new List[Sprite]
 
+       # Main clock used to count each frame `dt`, lapsed for `update` only
        private var clock = new Clock is lazy
 
+       # Performance clock to for `frame_core_draw` operations
+       private var perf_clock_main = new Clock
        redef fun on_create
        do
                super
@@ -186,8 +190,10 @@ redef class App
                assert gl_error == gl_NO_ERROR else print gl_error
 
                # Update game logic and set sprites
+               perf_clock_main.lapse
                var dt = clock.lapse.to_f
                update dt
+               sys.perfs["gamnit flat update client"].add perf_clock_main.lapse
 
                # Draw and flip screen
                frame_core_draw display
@@ -201,10 +207,16 @@ redef class App
        # Draw the whole screen, all `glDraw...` calls should be executed here
        protected fun frame_core_draw(display: GamnitDisplay)
        do
+               perf_clock_main.lapse
+
                frame_core_world_sprites display
+               perfs["gamnit flat world_sprites"].add perf_clock_main.lapse
+
                frame_core_ui_sprites display
+               perfs["gamnit flat ui_sprites"].add perf_clock_main.lapse
        end
 
+
        # Draw world sprites from `sprites`
        protected fun frame_core_world_sprites(display: GamnitDisplay)
        do