Wednesday, September 27, 2006

You Can't Have a Full Bottle of Wine and a Drunken Wife

I just finished answering a user's questions about whether to upgrade from a Pentium D to a Core 2 Duo and now I am back looking at a framerate problem on a 1.4 ghz G4 with a Radeon 9200.

Let's just consider that for a second!

One set of X-Plane users has the latest generation hardware and expects X-Plane to look as good as it can. Getting 270 fps on this hardware (yes, we have seen fps this high with the default settings) is not useful - these users want more graphics on their big machines. If we don't give them this, X-Plane is not a competitive product.

Another set of users still has previous generation hardware. If I may single out a particular group - Mac users with the G4 processor - that previous generation wasn't ever very impressive even when it was new. Basically Apple was stuck because the G5 was the best chip they had but couldn't be built with low enough power to put in the places they wanted to put it. Apple also wasn't putting terribly nice graphics cards in their machines at the time. (This was fixed when they stuck a 9700 mobility in the PowerBook.) So we have a whole group of PowerBook and Mac Mini users suffering from low framerate on older machines that were never that good as flight sim machines to begin with. (And G4 users I do understand your pain - until about a month ago my laptop was an 800 mhz G4 with a GeForce 4 MX.)

It is in this context that I say: if your framerate is low, be sure to turn the new stuff off! I did some extensive benchmarking of X-Plane 850 vs 840 and can tell you four things that very much affect framerate:
  • Cars on the roads! Cars really kill framerate. 840 has no cars, so it wasn't doing any of that work. Turn them off!
  • Birds! 840 had no birds, and they represent more drawing. Birds really divide machines into the haves and have-not's...big machines don't even notice the cost, but if you are having framerate issues, turn them off.
  • Textured lights with 3-d frames. This is one of the bigger hits. I will comment on this more below, but if you're fighting for framerate, turn this off.
  • Water reflections and shadows. This isn't the perfect setting, because it requires turning off cloud shadows as well as water reflections, so try it last; water reflections are actually not that expensive but you may get a few fps back.
In my benchmarking my dual 1.8 ghz G5 with Radeon 9600 XT (this machine is significantlty slower than a new DuoCore MacBook Pro by the way, so this machine represents a lower performance point than ANY new hardware that anyone should buy for X-Plane) I found that with these 4 settings off (and the equivalent textured lights and water reflections off in 840) X-Plane 8.50 was consistently faster than 8.40. Turning on water reflections and textured lights (but not the 3-d cars and birds) makes 8.50 slower than 8.40 but only slightly.

A final note on textured lights with 3-d frames: there are two catagories of graphics cards:
  • Graphics cards with pixel shaders. On these cards, if you turn off 3-d textured lights, we will still draw them with textures, because the card handles it, so you're not losing any framerate for the nicer looking lights.
  • Graphics cards without pixel shaders. On these cards, textured lights are done with the CPU, just like in 840. They're slow, so they are turned off.
My point is this: the checkbox gives you the best look when on, and the best look while prioritizing for speed when off. So if your framerate is low, turn off the 3-d textured lights; we will give you any quality that we can give you for free and nothing more.

In summary: you can't have a full bottle of wine and a drunken wife. If you want the new eye candy that was not present in the previous version of the sim (3-d birds, 3-d cars, water reflections and 3-d lights) you will have to pay for them with fps. We can give you the choice of fps or more eye candy, but not both.

A final thought: is it possible that 850 has a performance bug? Maybe! I am analyzing this now. I will post detailed instructions in my next blog entry on how to report these things. Filing a bug saying "the framerate sucks" doesn't provide useful information; posting to a forum saying "the framerate sucks" doesn't provide useful information either. But there are some tests you can do that will provide us with the info we need. Our biggest limitation is: we don't have one of each kind of graphics card. So the 850 beta testers who have gotten us detailed performance numbers have been very helpful!

No comments: