Thursday, January 28, 2010

To Tune Framerate, You Have To Hit Rock Bottom

I have blogged about this before, but I keep seeing this issue come up in the forums, so I want to go over it again. If you want to effectively tune X-Plane to trade off maximum visual quality with desired framerate, you must first reduce your rendering settings all the way to the bottom, then work your way up. Let me explain with an analogy.

I have fallen off my motorcycle and hit my head, skinned my knee, and broken my arm; the bone is sticking right out of my skin! Ouch! So I go to the hospital and the Doctor examines me. Here is how the conversation goes:
Dr: How does your arm feel?
Me: My arm hurts so much! OUCH!
Dr: And how does your leg feel?
Me: My arm is burning and stinging! Please make it stop!
Dr: Do you feel dizzy or light headed?
Me: Please fix my arm!!!!!!!!
Clearly with a bone sticking through my skin, there is no point in doing a physical examination. My arm hurts so much that I can't tell the Doctor whether I have any other aches or pain. I feel one thing: the arm.

What does this have to do with framerate? Well, framerate is just like pain. The low framerate you see is caused by only the one worst problem with your setup. If your graphics card is a little bit overloaded, you are a hair short on VRAM, and your CPU is absolutely being killed, then the low framerate you see is totally because of the CPU. The weakest link decides your framerate. And like the Doctor, if we go trying to deal with the VRAM problem, we will see no change because it's the CPU that hurts the most.

This is what I see over and over: a user is running X-Plane, his framerate is bad, and he has turned some but not all of the settings down. At this point the user is usually pretty grumpy - his visuals now look bad and his framerate is poor.

The problem is that the user hasn't turned down the setting that really matters. This is why the first thing you need to do in order to tune framerate is to turn everything down, so that you are running with framerate at least as high as what you want for your target value. Then you can turn settings up one at a time and watch which one lowers framerate.

(Don't worry, you're not going to stay at the lowest settings. The key is just to always be turning settings up, not down.)

Here are some of the settings I see that need to be turned down but often are not.
  • Full screen anti-aliasing. (FSAA) Always turn FSAA down to none. FSAA will kill fps on any graphics card that is fill rate limited.
  • Pixel shader effects - every one of these should be turned off to start. And when you do start them, try them one at a time and have the water reflections off - work your way up in small steps. The gap from shaders without volumetric fog, shadows, reflections and per pixel lighting to shaders with all of these effects is huge!
  • Turn objects all the way down to default, or even off. If your CPU is the problem, objects could be a factor.
  • Leave texture compression on in your "rock bottom" settings. Texture compression improves fps and lowers visual quality, so having the check box be on is the minimal setting.
  • Don't run at a huge screen res or FOV. Run 1024x768 and 50 degrees FOV.
What happens if you turn everything down and you still see 19 fps? Now it's time to investigate your video drivers and control panel settings. If your setup is even remotely better than minimum hardware, it should scream when all of those settings are turned down. If you still see low fps, check drivers, check control panel settings. There are a lot of control panel settings, for example, that will completely kill framerate.


Alejandro Garcia said...

There are some other (minor) problems with some computers with low CPU usage and low VRAM and GPU usage but always very very few FPS even at medium graphic options. Some of us in tried to figure out with your technical support what was the problem with x-plane (rest of software works like great). Finally none could answered the problem.
I hope there are few of us out there, it's a pain for flying xD

Lozz said...

I fully understand your blog post and I have read the cpu vs gpu post and tweaked the settings time and time again. But there is one thing I find that kills the fps more than anything and that is clouds. I love how the clouds look but I have to turn them off or disable cumulus if I want to configure the other settings to look remotely pleasant while keeping a playable fps on my MacBook Pro (stock 15" early 2008). I don't know if 3D clouds will take the burden off the cpu -> gpu throughput or if they will look as nice but It would be nice maybe in X-Plane 10 or will it be X? that the clouds be further optimised. For the time being it would be nice to still get rain/hail/snow/lightning in real weather conditions even though cumulus is turned off. I know the cloud density and temperature determine what happens more so than the precipitation and storms sliders but maybe an exception can be made depending on the 'allow cumulus' checkbox?

Anonymous said...

"There are a lot of control panel settings, for example, that will completely kill framerate."

Have you posted which these are? I would be seriously interested in reading it, but I don't see it in the archive.

nico said...

I don't know if this has been raised or even possible but has anyone ever thought of coming up with a small plug in that would help/simply the process of optimizing Xplane on ones computer? I am a very small user of Xplane so i don't if it's possible.I am sure many of us casual user wonder if we are getting the best xplane possible.

Great article, much appreciated.