Monday, July 24, 2006

X-Plane 850 framerate and efficiency

Austin and Randy and the gang are out at Oshkosh right now - with Austin out of town there won't be a new beta for at least five days. In the meantime I've had some time to look at X-Plane 850's performance and tune the code a bit. (The next beta should be faster than beta 4.) I'll cover performance in a few blog posts because there are a lot of issues.

For today I'll stick to my usual rant: the difference between frame rate and sim efficiency. Simply put:
frame rate = (sim effiency * hardware power) / (visibility * scenery complexity)
Basically the sim gets faster with a bigger computer or more efficient code, and it gets slower as visibility goes up or you load more art into it. (By art I mean more complex 3-d models, bigger textures, more complex DSF meshes, more roads, or any other content that looks better but makes the sim do more work.)

Sim efficiency is only one of several factors in the equation, but, as a programmer, it is the one I care about most. For every release of X-Plane, I try to measure and confirm that the sim can process scenery at least as efficiently as it used to. If our efficiency goes down, your framerate goes down with nothing in return.

So in looking at the puzzle of low framerate in X-Plane 850, there are two questions we have to answer:
  • Is the sim less efficient than 840? (The answer, BTW, is yes, 850 beta 4 is less efficient, and I am working to fix that now!)
  • Does the set of artwork we've included in X-Plane 850 weigh down the sim more than the artwork in 840 when the same rendering settings are used? (The answer is: apparently not or at least not by any significant amount, but more research is needed.)
The point I'd like to make here is: nothing is free. We want to be as efficient or better than 840 (and when we're not, we work to fix it!) We want to make sure that if you don't use the new features, the old features don't cost any more than they used to. But we do not
try to keep the framerate the same if you turn on new things that you didn't have before!

We cannot give you something from nothing. If the sim ran at 30 fps with no cars before, it's probably not going to run at 30 fps with cars - cars take time to draw. Some examples of what's new in 850:
  • 3-d structures on all of the runway lights (this can be shut off by disabling textured lights).
  • Cars on the roads (controlled in rendering settings).
  • Birds flying around (controlled in rendering settings).
We've also redone the models for the ships and hot-air balloons. The new ones are more complex than the old ones and probably slow the sim down a little. Why didn't we provide a fallback to use the old fast artwork? Well, at some point if we try to provide everyone with every rendering setting we're asked for, the rendering settings dialog box will look like the cockpit of a 747-100. So in some cases we try to set something up that is reasonably fast and useful but not too complex, so ordinary users can understand the settings. In a later post I'll cover some of the tuning tricks you can use to maximize performance.

Coming up next: the relationship between VRAM usage and framerate.

No comments: