As you know, Lee has gone paranoid on performance, and looking at the engine as one big speed making machine. To that end, I have been working through the ideas I have to speed everything up. You can think of it akin to a statement from the previous blog comments which I quite liked:
Project Manager: "Amazing, how did you get a 1000% speed increase?!"
Coder: "Simple, I just switched everything off!"
To that end, I have added a new slider panel called "Graphic Options" which allows me to selectively switch of hungry sub-processes, and eventually allow different 'modes' of operation yielding various speed vs benefits to choose from. Right now they just switch stuff off gracefully in real-time.
I have also extended the performance monitor a little more with polygon and draw call readouts, as this will also be vital in understanding whether objects are being rendered needlessly.
I also got a tip that the IDE was draining performance in the background, and on investigation it turns out a rogue mouse update function call was (and this you won't believe), reading a file for two strings and producing a formatted string from them. The code then proceeded to do nothing with that string! Amazing. Anyhoo, removed that code and the IDE went from 25% usage down to 0% usage when in test game mode :)
My latest screen shot shows 144fps, which is what I get with an empty terrain and grass level with no reflections, shadows or light rays. Turns out the test game was also being capped at 80fps which I have now fixed, allowing the engine to run as fast as it can. Next is top investigate each of the 575,000 polygons and 191 draw calls to see what they are contributing. Once I have stripped everything back to the bare walls, and introduced Graphic Option controls for them, I can start putting everything back in an optimized way.
Not been brave enough to touch the NSIGHT tool yet. I also have the Intel GPA tool on standby too, so plenty of back-up if things get sticky. I figured before turning to these assistants that I should proceed to implement my own tried and tested techniques for speed gain (that is, to remove all the stupid code) ;) I have also managed to obtain a low-end dedicated NVIDIA card over the weekend (under 1000 score) so will be able to conduct some remote testing with NSIGHT a little sooner than anticipated!