Performance

Aug 20, 2011 at 1:46 AM

Hi Phillipe - i've been using your framework in my latest project and am finding it very helpful - i have found one issue that may be worth considering which is having an option to disable the depth sorting in the renderer. I've been having nasty framerate issues on relatively simple scenes which i finally tracked down to the depth sorting, disabling it literally doubled my frame rate (Since i don't have any transparent meshes i don't need it anyway).

Keep up the great work - if i add any features in the course of developing my game i'll definitely submit them to you. 

All the best

Steve

Coordinator
Aug 20, 2011 at 8:20 AM

Hi Steve

That performance gap you get with IGF surprises me a lot since normally, the sorting is solely done if the scene graph (ObjectManager) contains SceneEntity or SceneObject instances which implement IRenderEntity. Otherwise, it should act the same as the builtin SunBurn renderers.

I'll make a few tests to double check that and come back with my results.

However, as a simple solution to avoid using IGF DeferredRenderer or FowardRenderer, you can avoid calling the Application.CretaeRenderer() method in your overriden Application.InitializeSunBurn() method and instead create your renderer and shadowmap managers as you'd normally do with SunBurn.
The CreateRenderer() method is just an helper method to setup your SceneInterface with the right managers based on your SunBurn edition but isn't required as long as you create them yourself.

Finally, I'm planning to remove IGF custom rendering pattern since SunBurn SceneEntity and SceneObject classes come with a CustomRender virtual method that serves the same purposes.
I'm just waiting for SynapseGaming to release their next version supporting transparencies to do so ;)

Thanks

Philippe

Aug 20, 2011 at 10:42 AM
Edited Aug 20, 2011 at 11:01 AM

To be honest it surprised me a bit - i'll do some more testing today and see if i can get some more helpful details.

EDIT - Just did  a quick comparission and one thing to note is that the performance gain only occurs on XBOX - on Windows the performance is pretty much identical.

On XBOX however for a scene where I was getting 22 FPS, simply commenting out the whole of the code in DeferredRenderer.BeginFrameRendering except for the final line base.BeginFrameRendering(scenestate); results in the frame rate almost doubling to 40 FPS. This is in a scene where the stats say it was only rendering ~30 SceneObjects.