28fps with 72 robots?


03-10-2011 17:16:56

I am doing some testing at the moment and it seems to me that I am getting poor performance or at least I think its poor performance. I have been developing a custom game engine for a game project while working on the Scene and Level loading class I decided to place 72 animated robots on the scene "Creating a little robot army of my own :)" I was surprised that I only got 28fps while the robots are on screen. if I move to not render the animated robots I start getting 600fps again. If the robots are not animated it stays at about 130fps while looking at them. the triangle count while looking at them is about 28000.

I should not that these are the robots that come in the /media folder. I don't know if it is an optimization issue on the model and the texture or what it might be.

Does this seem unusual? and are there any tips to improve this or to start looking for optimization?

The settings I have for the scene are really basic and default.
Mogre 1.7.1
SceneType = GENERIC
800 X 600 - Windowed
Direct 3D9

20:11:10: * CPU ID: GenuineIntel: Intel(R) Core(TM) i7 CPU Q 740 @ 1.73GHz
20:11:10: * SSE: yes
20:11:10: * SSE2: yes
20:11:10: * SSE3: yes
20:11:10: * MMX: yes
20:11:10: * MMXEXT: yes
20:11:10: * 3DNOW: no
20:11:10: * 3DNOWEXT: no
20:11:10: * CMOV: yes
20:11:10: * TSC: yes
20:11:10: * FPU: yes
20:11:10: * PRO: yes
20:11:10: * HT: no

20:11:10: RenderSystem Name: Direct3D9 Rendering Subsystem
20:11:10: GPU Vendor: nvidia
20:11:10: Device Name: Monitor-1-NVIDIA NVS 3100M
20:11:10: Driver Version:
20:11:10: * Fixed function pipeline: yes
20:11:10: * Hardware generation of mipmaps: yes
20:11:10: * Texture blending: yes
20:11:10: * Anisotropic texture filtering: yes
20:11:10: * Dot product texture operation: yes
20:11:10: * Cube mapping: yes
20:11:10: * Hardware stencil buffer: yes
20:11:10: - Stencil depth: 8
20:11:11: - Two sided stencil support: yes
20:11:11: - Wrap stencil values: yes
20:11:11: * Hardware vertex / index buffers: yes
20:11:11: * Vertex programs: yes
20:11:11: * Number of floating-point constants for vertex programs: 256
20:11:11: * Number of integer constants for vertex programs: 16
20:11:11: * Number of boolean constants for vertex programs: 16
20:11:11: * Fragment programs: yes
20:11:11: * Number of floating-point constants for fragment programs: 224
20:11:11: * Number of integer constants for fragment programs: 16
20:11:11: * Number of boolean constants for fragment programs: 16
20:11:11: * Geometry programs: no
20:11:11: * Number of floating-point constants for geometry programs: 0
20:11:11: * Number of integer constants for geometry programs: 0
20:11:11: * Number of boolean constants for geometry programs: 0
20:11:11: * Supported Shader Profiles: hlsl ps_1_1 ps_1_2 ps_1_3 ps_1_4 ps_2_0 ps_2_a ps_2_b ps_2_x ps_3_0 vs_1_1 vs_2_0 vs_2_a vs_2_x vs_3_0
20:11:11: * Texture Compression: yes
20:11:11: - DXT: yes
20:11:11: - VTC: no
20:11:11: - PVRTC: no
20:11:11: * Scissor Rectangle: yes
20:11:11: * Hardware Occlusion Query: yes
20:11:11: * User clip planes: yes
20:11:11: * VET_UBYTE4 vertex element type: yes
20:11:11: * Infinite far plane projection: yes
20:11:11: * Hardware render-to-texture: yes
20:11:11: * Floating point textures: yes
20:11:11: * Non-power-of-two textures: yes
20:11:11: * Volume textures: yes
20:11:11: * Multiple Render Targets: 4
20:11:11: - With different bit depths: yes
20:11:11: * Point Sprites: yes
20:11:11: * Extended point parameters: yes
20:11:11: * Max Point Size: 10
20:11:11: * Vertex texture fetch: yes
20:11:11: * Number of world matrices: 0
20:11:11: * Number of texture units: 8
20:11:11: * Stencil buffer depth: 8
20:11:11: * Number of vertex blend matrices: 0
20:11:11: - Max vertex textures: 4
20:11:11: - Vertex textures shared: no
20:11:11: * Render to Vertex Buffer : no
20:11:11: * DirectX per stage constants: yes


03-10-2011 19:34:03

Does this seem unusual?
No, your video card sucks is optimized for business applications.


03-10-2011 21:15:41

LOL, that is true. However what concerns me is that I did this same test on my gaming machine
AMD Phenom II X6
8GB 1666MHz RAM
and ATI Radeon HD 6750 (1GB GDDR5)

And I only got about 10fps increase. It concerns me that maybe I am doing something wrong in the code. Especially after playing games like assassins creed where there are tons of characters on screen that are high definition. (Please don't bash me for comparing my game and ability to A/C, I am just using it as a reference for some concerns)

I will run the test again tonight on my Gaming PC and get the Ogre.log and post those stats if someone wouldn't mind giving me some feedback on it. And I don't mind someone saying that it is the hardware that is lacking.

One thing I should mention is that I can turn my script engine on that has an Update() function that each game entity can hook. When I add a Script for each entity in the scene (all 72 robots) and hook the frame (update) function it still only drops the frame rate by a couple fps. So it makes me believe that the bottleneck doesn't have anything to do with my framework. Unless there is something that I am not setting up correctly or at all. Thanks for the help. :)


12-10-2011 15:16:16

I would like to reply and let everyone know. I switched from using the debug dlls and set the compiler to release mode, this alone boosted the FPS to over 700 with all of the animated meshes on screen. And this was on my laptop with the horrible graphics card in it. After seeing that I didn't think I needed to test the changes on my desktop.

So just to note, Debug mode is very slow.