Difference between revisions of "Howto:Improve framerates"

From FlightGear wiki
Jump to: navigation, search
(3D Models)
m (Remind of widely accepted guidlines)
Line 18: Line 18:
 
* Reduce the number of different textures used on a model to a minimum. It's better to use a few (or one!) big textures than many little ones.
 
* Reduce the number of different textures used on a model to a minimum. It's better to use a few (or one!) big textures than many little ones.
 
* Avoid mixing textured and untextured geometry in the same model. Build the coloring into the texture map instead.
 
* Avoid mixing textured and untextured geometry in the same model. Build the coloring into the texture map instead.
* Within your modeling tool, try work with large meshes instead of groups of small meshes. I know that this can result in a very unpleasant workflow; we are working on optimizations in Flightgear that will combine mesh parts automatically.
+
* Within your modeling tool, try work with large meshes instead of groups of small meshes - but please don't mistake this as a request for grouping multiple, distinct buildings into a single AC3D file. I know that this can result in a very unpleasant workflow; we are working on optimizations in Flightgear that will combine mesh parts automatically.
 
* Textures containing alpha cause various problems. In order to be rendered correctly, translucent geometry must be sorted by distance on the CPU. Furthermore, geometry is sorted on a course level (basically by mesh), so you may see various artifacts. If you have some transparent parts of a model,
 
* Textures containing alpha cause various problems. In order to be rendered correctly, translucent geometry must be sorted by distance on the CPU. Furthermore, geometry is sorted on a course level (basically by mesh), so you may see various artifacts. If you have some transparent parts of a model,
 
you should violate the first rule above and assign those parts to their own texture.
 
you should violate the first rule above and assign those parts to their own texture.

Revision as of 09:17, 21 March 2010

Anything below about 15 frames per second (fps) is close to unusable, or at least, will not be enjoyable. Additionally, the more the framerate decreases, the more other features of the simulation will suffer. The current FlightGear software architecture is such that long rendering times (slow framerates) may prevent other parts of the flight simulator, such as the autopilot, from having sufficient CPU time to respond correctly in the context of the simulation.

FlightGear's framerate is influenced by various factors, including:

  • scenery complexity (terrain,clouds, trees, particles, random 3D objects, multiplayer/AI traffic)
  • cockpit complexity (2D vs. 3D)
  • environmental options (eg. visibility, precipitation)
  • FDM update interval
  • AI scenarios
  • aircraft speed (scenery paging)

You can disable most features that often adversely affect framerate. Here is a collection of settings that you may change to improve your framerate. Please note that some of these will only take effect if they're specified at startup and cannot be changed after the simulation has started.

3D Models

Contrary to what many people believe, the impact of high vertex-count models on framerate is fairly minimal. In addition, for graphics hardware built after 2004 and intended for games (example: Nvidia GeForce 6 series), textures are close to, or completely, free. Today (in 2010), the major graphics bottleneck is between the CPU and the GPU. The goal in optimizing models is to store as much as possible on the GPU and reduce the number of rendering commands sent to the GPU. For graphic artists, the key things to remember are:

  • Reduce the number of different textures used on a model to a minimum. It's better to use a few (or one!) big textures than many little ones.
  • Avoid mixing textured and untextured geometry in the same model. Build the coloring into the texture map instead.
  • Within your modeling tool, try work with large meshes instead of groups of small meshes - but please don't mistake this as a request for grouping multiple, distinct buildings into a single AC3D file. I know that this can result in a very unpleasant workflow; we are working on optimizations in Flightgear that will combine mesh parts automatically.
  • Textures containing alpha cause various problems. In order to be rendered correctly, translucent geometry must be sorted by distance on the CPU. Furthermore, geometry is sorted on a course level (basically by mesh), so you may see various artifacts. If you have some transparent parts of a model,

you should violate the first rule above and assign those parts to their own texture.

  • Don't assign an RGBA texture to a model that is completely opaque!

AI traffic

AI-traffic is computer controlled traffic, which includes traffic over the MP network. By turning off this function you're not able to see other aircraft. Most stuttering, or lag, in FlightGear is caused by AI traffic. Especially heavy models need quite some time to load, eg the F-14 or the B-1B. Every time a new aircraft enters your local area, your computer has to load the model for that particular aircraft. The time required to read the data from the drive creates a stutter, or lag, which can range from a minor annoyance to a crash. The busier the place you fly, the more lag you'll get; eg flying around KSFO will generate more lag than a flight near EGLL, since there is more traffic near KSFO.

Operating System Specific

Many newer Linux distributions, like openSUSE 11.2, come with KDE4 as a desktop environment. While it allows some fancy desktop effects, it is known to consume enough computing power from the CPU and the graphics card to slow FlightGear down by 10 frames per second or even more. Choosing another window manager from the login screen, like xfce results in higher FlightGear performance. Setting "Compositing" to "off" in KDE4 might also help.

External links

Optimizing file size, performance and streaming of 3D content