A really great look at performance in FSX...
Lotus has a really great post about aircraft performance in FSX. I highly reccomend reading the whole post. It's a bit technical, but does put into practical terms a lot of the ideas about how to create performant aircraft (especially for multiplayer). Draw calls are not always the single performance killer and reducing draw calls is not a silver bullet for creating objects that perform well in the engine. I talk a little about this in my "When is a draw call not a draw call" post. Lotus does a really great job of showing practical numbers from existing addon aircraft.
The reason for some of his findings has to do with what is being updated and sent to the GPU from the CPU. If each of the draw calls in an aircraft is close to 65,000 vertices, then each draw call is sending almost an entirely full vertex buffer update to the card every frame. While it is still only a single draw call, it is a huge amount of data being sent across the pipe. So 35 draw calls with 1000 vertices each does not equal 35 draw calls with 60,000 vertices each. And if you are using poor UV and smoothing techniques, then it is very easy to get a 25,000 polygon model close to that limit for each draw call.
Another comparison I'd love to see is the animation hierarchy in the aircraft. An aircraft can be skinned and have 15 draw calls, but have 10 parallel animation hierarchies that are each 20 levels deep. The amount of data needing to be updated during each frame becomes gigantic (something on the order of 2100 matrix transforms per frame). If that same aircraft were animated with a flat hierarchy (not always easy or even possible to do) it would have about 200 transform matrix updates each frame.
All in all, it's a great post and a very informative read. Excellent work, Lotus!
Comments
Anonymous
January 01, 2003
Great post, explained really well and I could really understand. Thank you.Anonymous
January 01, 2003
The comment has been removedAnonymous
January 01, 2003
The comment has been removedAnonymous
November 20, 2008
Hey Torgo, I'm glad you liked the post. I wasn't sure if you'd seen it or would approve, but no one had done that kind of testing before and your performance posts made me really curious about it, so I had to take a look. :) There's probably a bit of associated karma involved but the draw calls are starting to catch up with me in my L-39's VC, in obscene fashion haha. A dual seat plane with two completely 3D gauge cockpits (50+ gauges), and just about every control animated, can really chew through the draws fast. Your comment about the hierarchy is enlightening too. I need to take a look at that. Cheers mate! -mikeAnonymous
November 20, 2008
The comment has been removedAnonymous
November 21, 2008
The comment has been removed