How do I tune my GPU for maximum performance in Zwift? (Windows)

Zwift can be very graphically intensive, especially when there are a lot of simultaneous riders on the screen at the same time. This is most apparent during a "ZTR" style racing event, or one of the public events such as the "World Bicycle Relief" event in early December 2015.

There are a large number of graphics cards, configurations and settings you can tune and tweak to maximize your FPS, or "frames per second" while playing, er "riding" Zwfit.

This HOWTO will help dispel some of the myths and provide some solutions that can help you get the most out of your GPU.

TODO: (this is a living document and will evolve over time)

I only have Intel and NVIDIA gear at my disposal to play with, so I can't (yet) provide screenshots and solutions for AMD/Radeon users, but I will add those when I find someone with a Radeon card who can help me with the "Catalyst" or "Crimson" Radeon GPU suite of utilities.

Checking your current FPS

There are three primary graphics manufacturers supported by Zwift: Intel, AMD/Radeon and NVIDIA. If you have one of these cards in your Zwift PC or laptop, make sure you're on Zwift's supported list of platforms before you begin. Some cards are just too old or under-powered to display Zwift in any usable way.

If you have one of these older, unsupported graphics cards, you're going to need to upgrade the card itself (in the case of a PC that has a replaceable graphics card), or replace the entire machine (in the case of a laptop where the video card is integrated into the motherboard).

Before we do anything, let's check your baseline FPS. Grab any of your recent Zwift logs (found in your Zwift log directory) and drop it onto the top of the "Zwift Log Parser" web application. This should give you a very nice, graphical overview of your most-recent FPS values in-game.

There's another KB article dedicated to FPS in Zwift, which you can find here:

Zwift Log Parser

The "Zwift Log Parser" will analyze your log, extracting a number of key pieces of data and produce output that tells you what your min, max and average FPS were for that session. It is a very valuable debugging tool if you're not sure what kind of performance you're getting.

Configuring your Zwift Settings

There are some additional in-game settings you can modify that will help give you some performance gains.

Each Zwift client has a configuration profile that is used when you change your "Game Resolution" in the Settings. If you use "Low", you're using low.txt to customize your experience. If you use "Ultra", you're using ultra.txt and so on. If you're not sure where to find your Zwift data directories, the following KB article should help:

Edit the respective file that matches your game resolution, and add the following line to the end of the file, and save the file in the same location:

   set gShowFPS=1

This setting will then allow Zwift to represent your current FPS in-game, at the top-left of the screen, where you normally see your own ride data (watts, cadence, heart rate). You'll see something like this:

Setting real-time FPS display in Zwift

Launch Zwift and go into "Settings", so we can check your performance at this point. While you do that, you should see the new FPS showing up in the upper- left corner, as other riders ride by you while you have the Settings window open.

You may notice the latest Zwift has some "Battery Saver" settings you can use to reduce the FPS, thus saving battery for a longer ride if you're on a laptop, if you're not directly plugged into the mains (AC) power using your wall adapter.

If you are plugged into the wall, you can and should disable the Battery Saver option. If you're on a dedicated, wired PC, these settings will not help you and could negatively hurt your Zwift performance.

On my 11" 2015 MacBook Air, setting the Battery Saver option to Maximum gives me ~15FPS. Moving to Medium gives me ~20FPS, up to Minimum, I get ~25FPS and disabling it entirely gives me ~30FPS using the "Low" profile in Zwift. You'll see these changes reflected almost immediately when you change the options in the Battery Saver dropdown.

Zwift Battery Saver Settings

Play around with these settings first, before making any adjustments to your graphics card, so you know what your baseline FPS is to start with. Knowing what your baseline FPS is, will help you determine if any of the changes we make later are helping or hurting your performance.

Close down and exit Zwift, we won't need to keep it running while we make these next changes...

Configuring your GPU Settings

Let's go into the video card settings itself and make sure it's being set in the most optimal way for Zwift and any other games you might play on the same machine.

NVIDIA Graphics Cards

If you have the correct and latest NVIDIA drivers installed directly from NVIDIA (this is important), you should have an icon in your Windows system tray that you can use to open those settings. Right-clicking on this icon should give you a couple of options:

NVIDIA Settings System Tray applet

Select "Open NVIDIA Control Panel" from the options and you'll see a familiar looking control panel to configure the NVIDIA card. There's two primary settings we want to inspect and modify here, leaving all others untouched for the moment.

First, we want to make sure that the GPU itself, is being told to handle all of the PhysX calls that games request of your machine. PhysX is the real-time physics engine that NVIDIA uses to create effects like air, dirt, smoke, water and other elements in-game.

By default, this setting is going to be set to "Auto-select (recommended)" but this is not what you want if you want maximum performance from your card.

Change the setting in this section to force it to your primary (fastest) GPU, and dedicate it to this card. If your setting was set to "Auto-select" or "CPU", you're not going to get the best graphics performance out of your machine. Do not leave this set to "Auto-select", even though it says "recommended".

Forcing PhysX to use the GPU

Save and Apply the change you've made here.

If you now go into "3D Settings" on the left-side of your NVIDIA Control Panel. On the right-side, if you scroll down will be a setting for "Vertical Sync" under the "Global Options" tab. No matter what the settng is set to, disable this.

Disable NVIDIA 3D vertical sync

Save and Apply these changes.

AMD/Radeon Graphics Cards

(placeholder for now until we can get some community user data on tuning AMD cards using Catalyst/Crimson)

Intel HD Graphics Cards

(placeholder for now, until I'm able to write this up and get comlete screenshots)

Checking your Zwift Performance

Now go back into Zwift and see if your FPS up in the upper-left corner has made any improvements from earlier. You should see an almost doubling of the FPS, if these settings had a positive impact.

Tweaking your Zwift Environment Settings

There's still more to tweak, if you're still not seeing the kind of performance you want out of Zwift. If you look at your Zwift log, it will tell you which "Game Resolution" it is using, and it is that resolution's name that determines which configuration file to modify. If you open up your Zwift log in an editor, you'll see a line that looks like this, near the top:

   [22:06:01] Using high graphics profile

Using the above example, I'm using the 'high' profile. Open up "high.txt" from your Zwift configuration directory in an editor and insert the following settings, right below the gShowFPS line we added earlier:

   set gShowFPS=1
   # Below options deprecated by Zwift in 2016-02-24 release
   set gDoReflectionMap=0
   set gSimpleReflections=1
   set gSimpleShadows=1

These settings will tell Zwift to reduce the quality of the reflection on the water surfaces, as well as use a much simpler, less real-time algorithm for drawing shadows that appear from trees, buildings, rocks and the ambient occlusion of sun rays shining down.

Turning those to their opposite values will increase the complexity needed to display the environment (consuming more FPS), and could impact your performance. If you have a high-end GPU, by all means, set them all the way up! I have 3 high-end GPUs in my Zwift machine, so I can turn all the dials, knobs and switches. You may not have that flexibility.

Here are some more settings to play with. If you decide to turn these off, you can tune the environment way back, so it basically turns Watopia into Dubai

UPDATE: ALL of the configuration options below have been deprecated and removed from Zwift as of the 2016-02-24 release. They no longer work to tune your client experience.

   set gShowGrass=1
   set gShowGround=1
   set gShowBikes=1
   set gShowMountains=1
   set gShowRiders=1
   set gShowRoad=1
   set gShowRocks=1
   set gShowSky=1
   set gShowTrees=1
   set gShowWater=1
   set gShowBugs=1
   set gSunRays=1

There are dozens of other settings, but they're not really going to improve your graphics performance, so I won't go into each of them here,

I've worked with several people on the Zwift Riders Facebook group who have gone through these exact setting changes and have had significant gains in performance. They do work!

GPU tuning, Windows