Graphics Settings and Performance

From FlyInside Wiki
Revision as of 22:03, 28 July 2016 by Dan (Talk | contribs) (Heavy Aircraft)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Flight simulators are demanding applications. They can be tuned down to run smoothly on old laptops, or loaded up to bring a modern desktop to its knees. Performance is even more critical with virtual reality. For an optimal experience you'll want to spend some time balancing graphical quality, smoothness, and crispness. FlyInside is a demanding program, you'll want to make sure that your computer meets the specifications listed under Hardware Setup. If not, you'll need to use especially conservative graphical settings for an enjoyable experience.

Understanding Performance

Virtual reality tricks the user into believing they are in a virtual world. To do so, it needs to update the image the pilot sees, nearly instantaneously, as they turn their head. Any lag breaks the illusion, and can even induce nausea. Modern HMDs run at a steady 90fps, and anything lower is unusable. At the same time, HMDs introduce additional overhead over conventional graphics, in terms of stereo overhead, and the need for reduced latency. If your flight simulator is running at 70fps normally, it may only hit 35-50fps with FlyInside. You'll need to adjust your graphics settings accordingly.

Flight simulators rarely achieve 90fps, certainly not with any consistency. FlyInside bridges the gap using asynchronous timewarp. Even if your flight simulator is only running at 30fps, FlyInside takes each image from the simulator and displays it multiple times, rotating it to account for head movement. This way head rotation still feels smooth, and VR still feels good, even at lower frame-rates.

Once you are loaded into an aircraft cockpit in FlyInside, press your interact key. You'll see the FlyInside Tag appear, which shows FPS in a format such as "FPS: 55/90". The first number is your simulator frame-rate, while the second number is the asynchronous timewarp frame-rate.

Asynchronous Timewarp FPS

FlyInside tries to keep asynchronous timewarp running at a steady 90 fps (or 75 fps for the Oculus DK2). If this number drops lower you'll experience judder, a very uncomfortable sensation. While asynchronous timewarp is generally robust, certain conditions can still result in judder.

  1. Let's say you feel judder, and see a frame-rate like "FPS: 25/60". This is a case of computer overload. Your simulator is overloaded and running slowly, and is also not leaving enough room for asynchronous timewarp to breath. You'll need to turn down simulator or graphics settings as described below.
  2. On the other hand, you may feel judder, but see a frame-rate like "FPS: 110/72". In this case, the simulator is running very efficiently, so efficiently that it is starving asynchronous timewarp. Turning up graphics settings may actually help asynchronous timewarp and make VR feel smoother. You can also set a frame-rate limit from your flight simulator's settings as described below.

Simulator FPS

While asynchronous timewarp is responsible for keeping VR smooth and nausea at bay, your flight simulator's FPS effects the flight itself. A simulator FPS of >50 will feel quite smooth, while <30 will feel annoyingly laggy. It's up to you to find the frame-rate vs graphics balance you're happiest with though.

A low simulator frame-rate means that your mouse, Vive controllers, and Leap Motion will also run at a lower frame-rate. Input will not feel as smooth in general. If input feels uncomfortable or slow, try increasing your frame-rate.

A low simulator frame-rate also effects the smoothness of flight. Rolls will feel jerky, and close to the ground, motion will not appear smooth either.

Finally, a low simulator frame-rate can effect the feeling of VR immersion. While asynchronous timewarp keeps head rotation feeling smooth, it can also introduce artifacts. Turning your head quickly will result in black appearing at the edges of your vision where FlyInside cannot fill in the gaps. Asynchronous timewarp also doesn't help with translational movement. Turning your head left and right will be smooth, but a low frame-rate makes moving your head from left to right feel jerky. If you notice an annoying amount of black at the edges of your vision, or positional head movement is uncomfortable, increasing your simulator frame-rate will help!

It's really important to note that everyone has a different preference with simulator frame-rate. Some find the smoothness of flight and head movement to be a top priority, and run their simulator at 70+ fps, at the expense of graphics. Others barely feel a low frame-rate, and run at 25fps with hundreds of buildings and detailed aircraft.

Improving Performance

To tune FlyInside a three-step process is recommended

  1. Turn down all graphics settings until you have performance you are really happy with
  2. Turn up resolution until you have crispness you are really happy with
  3. Turn up the graphical settings you care about most, until you have a good balance between smoothness, crispness, and visual fidelity

Tuning Down the Simulator

To achieve a comfortable simulator frame-rate, you'll probably need to lower graphical settings more than you would on-monitor. There are a few key settings to experiment with. You can access all of these from "Options -> Settings -> Display" in FSX and "Options -> Settings" in Prepar3D.

  • Graphics
    • Target frame rate - Enforcing a frame-rate limit can improve the reliability of asynchronous timewarp, and also make the simulator feel more consistent rather than jumpy. Experiment with this setting if you are running into low asynchronous timewarp frame-rates or an inconsistent feeling while flying.
    • MSAA (Prepar3D only) - MSAA can improve clarity, but is very GPU intensive. If you are experiencing judder, try turning this down.
    • Tessellation Enabled (Prepar3D only) - Turning on tessellation lightens the CPUs burden while placing more work on the GPU. I recommend that you leave this enabled.
  • Scenery - There are a wide range of scenery complexity options with a wide range of impacts.
    • Level of detail radius - Increases CPU usage, GPU usage, and RAM usage. Try starting with Small or Medium.
    • Tessellation Factor (Prepar3D only) - Increases landscape detail at cost of GPU. Try setting this to Low at first.
    • Mesh complexity (FSX only) - CPU intensive, try setting to 25%-50% to start.
    • Mesh resolution - Affects CPU/GPU, set to mid-range.
    • Texture resolution - Little FPS impact. Turn this up to make ground textures more detailed
    • Scenery complexity - Large CPU impact, try starting at Low or Medium
    • Autogen density - Large CPU impact, potential GPU impact, try starting at Low or Medium
    • Water effects/detail - Try starting medium-low. Can affect CPU and GPU
  • Traffic - Vehicle and air traffic can inflict a large performance penalty, even on modern overclocked computers. I recommend turning them off entirely until you are comfortable tweaking your VR performance. Traffic mainly effects CPU utilization rather than GPU utilization
  • Add-ons - Flight simulator add-ons and third party aircraft can cause their own performance woes. If you aren't happy with your simulator frame-rates, try disabling add-ons and flying stock aircraft. Once you have performance you are comfortable with, re-introduce them one-by-one to determine what level of add-ons is best for you.

Note that FSX tends to be very CPU limited. Prepar3D is still mainly CPU limited, but makes better use of the GPU. Keep turning these graphics levels down until VR flight feels smooth and fluid.

FlyInside Settings & Resolution

Resolution and anti-aliasing are hugely important factors in both fidelity and performance. High resolution and MSAA make the view significantly crisper, and make gauges more readable. On the other hand, low resolution and disabled MSAA can be the secret to a judder-free experience on an under-powered PC.

First, go to the Settings tab of the FlyInside Menu (see instructions under Running FlyInside). The very first option is resolution. Although your HMD's resolution is fixed, higher rendering resolutions still result in a significantly clearer image. For the technically inclined, this is due to a combination of down-sampling and the way the barrel distortion samples the image at the center of the view.

First, disable SMAA entirely. SMAA provides a minor boost in clarity, but can introduce judder at higher resolutions. Look at the button next to "SMAA", interact, and select the "Disabled" option.

While higher resolutions result in a much clearer view, they also tax the GPU significantly. Interact on the current resolution (to the right of "Resolution"), and choose the next highest resolution. Restart your simulator, and take a quick flight in the airplane of your choice. If your experience remains comfortable judder-free, try increasing to the next resolution, and repeat. Stick with the highest resolution which remains judder-free and provides comfortable FPS. Those with high-end graphics cards may go all the way to the 3840 resolution.

Next, adjust MSAA. MSAA is a high-quality form of anti-aliasing which does impose some performance impact. For FSX, you can adjust MSAA directly from the FlyInside Settings tab. For Prepar3D, adjust MSAA from the Graphics tab of Prepar3D's "Options -> Settings" dialog. Once again, choose the highest MSAA which still results in a comfortable experience.

For those seeking higher clarity, but unable to run higher resolutions, you may also decrease the FOV, by turning down the "FOV Overdraw" setting. This will increase clarity without affecting performance, but at the cost of making your headset feel more like binoculars.

Note: If everything still appears blurry at higher resolutions you may have a headset fit issue. Try adjusting IPD, increasing head-strap tightness, and moving the headset to try to place your eyes within the sweet-spot.

Turning Graphics Up

At this point you should have a very comfortable simulator. The image should appear reasonably crisp, head movement should feel smooth, and flight should be a lot of fun! Now it's time to make it look pretty. You probably won't be able to turn up every slider, so start out by increasing the ones you care about.

Recommended Sliders:

  • Scenery Complexity - Improves the detail of scenery at airports and major cities.
  • Mesh Resolution and Texture resolution - Makes the landscape less blocky, not much cost.
  • Autogen Density - Increases number of buildings and trees all over, makes the world feel less empty. This can have a big performance impact, but also make graphics nicer, so adjust sparingly.

Sliders to Avoid or Use Sparingly:

  • Traffic - Traffic really kills performance. Unless you absolutely love traffic or have an overpowered computer, it may be best to leave this off.
  • Lighting (Prepar3D) - Adjust lighting sparingly. Cockpit shadows can add a lot of immersion, but long distance shadows rapidly hurt frame-rates.

This is also your chance to start enabling add-ons and trying out heavy aircraft. Remember, it's all a balance, prioritize which graphical enhancements you are about the most, and see if they justify their frame-rate impact. You'll find that simpler graphics in VR can be more awe-inspiring than complex graphics on a flat old monitor.

Memory & OOMs

Both Microsoft Flight Simulator X and Prepar3D are 32-bit programs. This means that they can't use more than 4GB of RAM at once. If your simulator exceeds 4GB of memory usage (3GB depending upon OS configuration), it will crash and exit. The 32-bit limit is a hard limitation of the software. Even if you have 32GB of RAM, an 8GB graphics card, and a super-computer in your closet, your flight simulator will still error at the 4GB mark.

FlyInside and virtual reality also increase memory usage beyond that of standard flight simulation. Virtual reality means high resolution, which means increased memory usage. FlyInside needs multiple buffers to ensure smooth VR, which also increases memory usage. This means that if you have your flight simulator tuned to just within limits for on-monitor flight simulation, it will probably run out of memory with FlyInside. Adjust accordingly.

Various factors contribute to memory usage. Decreasing these settings will help you avoid OOMs:

  • Texture Resolution
  • Scenery Complexity
  • Auto-gen Density
  • FlyInside's Resolution
  • Add-ons

You'll need to balance your various settings and add-ons a little bit more carefully than on-monitor to avoid running into OOM errors.

Heavy Aircraft

Certain aircraft impose a huge FPS penalty. Complex 3rd party jet aircraft in particular. Many of these are CPU limited, so upgrading your graphics card won't make a difference in frame-rate. If you run extremely complex aircraft, you may need to settle for lower simulator frame-rates. See Aircraft Notes & Recommended Aircraft for recommendations on well-performing aircraft and what to expect.