Index: Horde3D/Bindings/C#/Source/Horde3D .NET/Horde3D.cs =================================================================== --- Horde3D/Bindings/C#/Source/Horde3D .NET/Horde3D.cs (revision 572) +++ Horde3D/Bindings/C#/Source/Horde3D .NET/Horde3D.cs (working copy) @@ -81,6 +81,7 @@ /// AnimationTime - CPU time in ms spent for animation /// GeoUpdateTime - CPU time in ms spent for software skinning and morphing /// ParticleSimTime - CPU time in ms spent for particle simulation and updates + /// FwdLightsGPUTime - GPU time in ms spent for drawing forward lit geometry /// DefLightsGPUTime - GPU time in ms spent for drawing deferred light volumes /// ParticleGPUTime - GPU time in ms spent for drawing particles /// TextureVMem - Estimated amount of video memory used by textures (in Mb) @@ -95,6 +96,7 @@ AnimationTime, GeoUpdateTime, ParticleSimTime, + FwdLightsGPUTime, DefLightsGPUTime, ParticleGPUTime, TextureVMem, Index: Horde3D/Bindings/C++/Horde3D.h =================================================================== --- Horde3D/Bindings/C++/Horde3D.h (revision 572) +++ Horde3D/Bindings/C++/Horde3D.h (working copy) @@ -117,6 +117,7 @@ AnimationTime - CPU time in ms spent for animation GeoUpdateTime - CPU time in ms spent for software skinning and morphing ParticleSimTime - CPU time in ms spent for particle simulation and updates + FwdLightsGPUTime - GPU time in ms spent for drawing forward lit geometry DefLightsGPUTime - GPU time in ms spent for drawing deferred light volumes ParticleGPUTime - GPU time in ms spent for drawing particles TextureVMem - Estimated amount of video memory used by textures (in Mb) @@ -131,6 +132,7 @@ AnimationTime, GeoUpdateTime, ParticleSimTime, + FwdLightsGPUTime, DefLightsGPUTime, ParticleGPUTime, TextureVMem, Index: Horde3D/Source/Horde3DEngine/egCom.cpp =================================================================== --- Horde3D/Source/Horde3DEngine/egCom.cpp (revision 572) +++ Horde3D/Source/Horde3DEngine/egCom.cpp (working copy) @@ -269,6 +269,7 @@ _frameTime = 0; + _fwdLightsGPUTimer = new GPUTimer(); _defLightsGPUTimer = new GPUTimer(); _particleGPUTimer = new GPUTimer(); } @@ -315,6 +316,10 @@ value = _particleSimTimer.getElapsedTimeMS(); if( reset ) _particleSimTimer.reset(); return value; + case EngineStats::FwdLightsGPUTime: + value = _fwdLightsGPUTimer->getTimeMS(); + if( reset ) _fwdLightsGPUTimer->reset(); + return value; case EngineStats::DefLightsGPUTime: value = _defLightsGPUTimer->getTimeMS(); if( reset ) _defLightsGPUTimer->reset(); @@ -376,6 +381,8 @@ { switch( param ) { + case EngineStats::FwdLightsGPUTime: + return _fwdLightsGPUTimer; case EngineStats::DefLightsGPUTime: return _defLightsGPUTimer; case EngineStats::ParticleGPUTime: Index: Horde3D/Source/Horde3DEngine/egCom.h =================================================================== --- Horde3D/Source/Horde3DEngine/egCom.h (revision 572) +++ Horde3D/Source/Horde3DEngine/egCom.h (working copy) @@ -142,6 +142,7 @@ AnimationTime, GeoUpdateTime, ParticleSimTime, + FwdLightsGPUTime, DefLightsGPUTime, ParticleGPUTime, TextureVMem, @@ -165,6 +166,7 @@ Timer _particleSimTimer; float _frameTime; + GPUTimer *_fwdLightsGPUTimer; GPUTimer *_defLightsGPUTimer; GPUTimer *_particleGPUTimer; Index: Horde3D/Source/Horde3DEngine/egRenderer.cpp =================================================================== --- Horde3D/Source/Horde3DEngine/egRenderer.cpp (revision 572) +++ Horde3D/Source/Horde3DEngine/egRenderer.cpp (working copy) @@ -1310,6 +1310,9 @@ Modules::sceneMan().updateQueues( _curCamera->getFrustum(), 0x0, RenderingOrder::None, true, false ); + GPUTimer *timer = Modules::stats().getGPUTimer( EngineStats::FwdLightsGPUTime ); + if( Modules::config().gatherTimeStats ) timer->beginQuery( _frameID ); + for( size_t i = 0, s = Modules::sceneMan().getLightQueue().size(); i < s; ++i ) { _curLight = (LightNode *)Modules::sceneMan().getLightQueue()[i]; @@ -1388,6 +1391,8 @@ _curLight = 0x0; + timer->endQuery(); + // Draw occlusion proxies if( occSet >= 0 ) { Index: Horde3D/Source/Horde3DUtils/main.cpp =================================================================== --- Horde3D/Source/Horde3DUtils/main.cpp (revision 572) +++ Horde3D/Source/Horde3DUtils/main.cpp (working copy) @@ -461,6 +461,7 @@ static float animTime = 0; static float geoUpdateTime = 0; static float particleSimTime = 0; + static float fwdLightsGPUTime = 0; static float defLightsGPUTime = 0; static float particleGPUTime = 0; @@ -476,6 +477,7 @@ animTime = h3dGetStat( H3DStats::AnimationTime, true ); geoUpdateTime = h3dGetStat( H3DStats::GeoUpdateTime, true ); particleSimTime = h3dGetStat( H3DStats::ParticleSimTime, true ); + fwdLightsGPUTime = h3dGetStat( H3DStats::FwdLightsGPUTime, true ); defLightsGPUTime = h3dGetStat( H3DStats::DefLightsGPUTime, true ); particleGPUTime = h3dGetStat( H3DStats::ParticleGPUTime, true ); timer = 0; @@ -553,8 +555,13 @@ addInfoBoxRow( "Particles", text.str().c_str() ); // GPU time - beginInfoBox( 0.03f, 0.65f, 0.32f, 2, "GPU Time", fontMaterialRes, boxMaterialRes ); + beginInfoBox( 0.03f, 0.65f, 0.32f, 3, "GPU Time", fontMaterialRes, boxMaterialRes ); + // Forward lights + text.str( "" ); + text << fwdLightsGPUTime << "ms"; + addInfoBoxRow( "Fwd Lights", text.str().c_str() ); + // Deferred lights text.str( "" ); text << defLightsGPUTime << "ms";