This post is the follow up to my series of settings and suggestions post. They are becoming increasingly popular and I’m glad it is helping others and I thank you all for your feedback!
Other posts in the series:
My 2070 SUPER 4K settings and suggestions - episode 2
My 2070 SUPER VR settings and suggestions (Index - SteamVR)
Please vote and help having VR wish list topics in next Q&A and Dev blogs:
Dev Q&A and Feedback Snapshot: please make a VR only category
My wish list topics (please vote!)
Cockpit Size and World Scale in VR
EFIS Screens Problems and Solutions for higher legibility
Ambient Night Lighting illuminating more than a full moon
Provide a Sharpen strength setting, and more post-processing effect controls in VR
Implement a metering system better suited for VR
Increase distance threshold to see other aircraft navigation and strobe lights
TAA is transforming road traffic into ghosts (self-cancelling moving pixels)
Render the Sun with a fading disk when bloom is disabled
Bake Ambient Occlusion in the cockpit when Ambient Occlusion is disabled
Night lighting issues still present - The community solutions
Can you please add a “Sun Glasses” mode ? (not a joke)
Add support for mouse wheel to change the UI settings sliders
FS2020 is breaking the VR golden rule: don’t move the camera, the user is
Let users adjusting the Render Scale setting by increments of 5 or 1 (instead of 10)
In general, the settings are carefully adjusted in comparing how individual and combinations of settings were affecting the overall fps, and with my understanding and practical knowledge of how the 3D rendering pipeline is working behind the scene.
I’m not pretending this is the best overall plug-and-play solution to the FS2020 performance issue some of you are having either, but you might find these are good and solid basis to build upon for your systems to get started with. This is also highly dependent on CPU, RAM and other things on your own systems so your mileage will vary.
These settings were adjusted for a system running:
- NVidia 2070S w/8GB (not oc.)
- 32GB RAM.
- FS2020 1.12.13
- Win10 20H2
- Nvidia 457.30
I hope these will help you enjoying FS2020 in VR!
NB: if you’ve already read “My 4K Settings” and “My VR Settings (Index)”, most of the NVidia and Win10 chapters are similar. I’ve updated some of the content and will propagate it back to the other discussions in the coming days. I’m tagging new content with the following label for a few days so that you can quickly find them out inside the similarly named chapters: (new paragraph). Otherwise new chapters are specific to WMR and OpenXR.
There are several items contributing to the overall performance of FS2020, some are intrinsic like its settings and others are solely system related. Overall the system has a bucket of resources per-frame and both the OS and the simulator rendering engine must be tuned to fit as much as possible into this bucket. In effect some of these settings can be detrimental to the performance because they could sometimes take too much room and fight with others trying to take their spot in the bucket.
I’ve also noticed the FS2020 rendering engine might be prioritizing some of the settings if there is contention and the visual outcome might sometimes be contrary to what you’d expect. It is like having less buildings drawn in the distance despite maximizing the draw distance. This makes sense because besides the time resource in a bucket (how many ms before next frame) and the speed at which the video card can process the pixels, there is also a finite resource of VRam and when a resource takes a chunk the video card might discard another one. If the demand is higher than the resource, the driver and the engine will have to constantly stream resources and this is causing a performance hit. This is exactly the same problem when the OS is paging memory on a HDD because too many programs are using the available RAM.
I’d recommend you use NVidia Driver 457.30 for VR (and 2D actually) with a 20XX and 30XX*.
The idea is to reduce the amount of time between the moment the engine finishes rendering the next frame and the time the video card is displaying it. This might contribute in also freeing some VRam resources because there is no need to buffer as much but I’m not entirely sure.
The combination of Low Latency Mode, Threaded Optimization, Vertical Sync settings and Virtual Reality pre-rendered frames, is the one which is giving me the smoothest stutter free experience. However unlike “My 4K Settings” I believe “Low Latency Mode” and “Virtual Reality pre-rendered frames” are the only important ones in VR because the Reverb G2 is running in NVidia Direct Mode and it is not considered as a regular monitor.
You could eventually change Texture Filtering Quality to ‘Quality’ but I’m not sure how much this is really making any change both visually and to the fps.
With the NVidia 457.30 driver and Win10 20H2, I’ve found it is now better setting Threaded Optimization ON. (with older versions of drivers and simulator, threaded optimization was having an impact on my system and was better off).
Tip: FS2020 executable is hidden inside the WindowsApps folder. In order to customize settings for this program, I believe selecting “Show only programs found on this computer” is sufficient. Otherwise, run and close FS2020, then open the NVidia CPL and click Add, it might be appearing at the top of the list when you select “Recently Used”.
You might want to also read:
What NVidia Drivers are recommended for VR
How to install Nvidia drivers properly when trying out different versions
*I’ve also tested 416.14, 452.06 and 460.89 but they were giving either more stutters or less fps in general. If you’re using a RTX 3060 you’re stuck with the known Nvidia drivers VR bugs (my suggestions are mitigating most of the problems but they are not entirely eliminated).
Hardware-Accelerated GPU scheduling (HAGS) and Game Mode must be turned OFF since FS2020 update 7, and/or NVidia 457.30, otherwise it is causing CPU/GPU sync problems in VR and it introduces lots of stuttering.
VRR is not having any influence in VR, however I have it ON because I’m reducing juddering when flying in 3D with my monitor (see “My 4K Settings”)*.
*NB: Win10 VRR is mandatory of UWP applications, Win32 apps only need the NVidia CPL settings.
This mostly concerns WMR Portal and WMR apps. If you’re not using any you might want to reduce any unnecessary overhead.
Level of details is changing the rendering complexity of the WMR Portal Home environment while “window resolution” controls the quality of the floating windows in the VR world you can display while in VR.
Display Resolution and Frame Rate are self-evident: there is no point using a G2 if not to its full capabilities, other headsets would be a better choice otherwise.
Input Switching is how WMR Portal is grabbing the mouse input (the blue bar displaying at the top of your 2D monitor) and for Flight Simulator there is no need, it can even be an encumbrance, therefore I find it best to keep manual control.
WMR Virtual Monitors
In order to support classic Win32 applications in Windows Mixed Reality (WMR), each time a new Win32 application is launched, a virtual monitor has to be created. Unfortunately, creating a virtual monitor is an intensive task that can cause the headset display to briefly freeze and by default WMR is pre-allocating 3 virtual monitors.
Unfortunately if you’re not using this feature, which is displaying a Win32 app into a floating window in the VR world, it might be taking some resources you might want to free instead. In effect, some are reporting they are eliminating all stutters they were experiencing in doing so and you might want to try.
To disable virtual monitor pre-allocation:
- Launch Registry Editor
- Navigate to
- If the
PreallocateVirtualMonitorsREG_DWORD is not present, create it by selecting Edit > New > DWORD (32-bit) Value and entering
PreallocateVirtualMonitorsas the name
- If the
PreallocateVirtualMonitorsREG_DWORD is present (or you just created it), double-click the entry and change “Value data” from 1 (its default value) to 0 (zero)
Virtual monitors will now allocate when you attempt to launch a Win32 application in Windows Mixed Reality instead of pre-allocating. To reset this and re-enable virtual monitor pre-allocation, return the DWORD “Value data” to 1.
You can read more about this here:
Monitor and input handling issues - Microsoft docs
NB: some users are reporting CTD when transitioning out of VR mode and deleting this registry key,
PreallocateVirtualMonitors, solved this issue on their systems.
WMR OpenXR Settings
Windows Mixed Reality (WMR) includes both its own proprietary API to communicate with the WMR headset (like the Reverb G2) and the WMR OpenXR Driver to communicate with the application.
FS2020 is using OpenXR (OXR), a VR Application Programing Interface (API). It is independent of Windows Mixed Reality (WMR) or SteamVR (OpenVR) and Its value proposition is to make any application instantly compatible with any headset as long as there is an OpenXR driver for it.
In order to get the most of the FS2020 VR experience, you must download and install the following:
OpenXR Developer Tools for Windows Mixed Reality from the Microsoft Store
You can use this tool to adjust key OpenXR settings for FS2020 and I’d recommend the following to get started:
Latest WMR OpenXR preview version (v105) is working better on my test system (less stutters and slightly better fps) and I suggest you use it now.
Motion Reprojection is not working properly with simulators in general and it is no different with FS2020 (wobbling behind the propellers, wings shape deforming and blending with the ground, image hiccups from time to time, etc…). In addition it is not only taking some valuable resources, but it is also having bugs like pincushion image distortions and lower resolution images, therefore, I leave it to disabled.
NB: some will argue they can’t use VR if it is not refreshing above 45fps or without Motion Reprojection which is virtually creating new inter-frames to compensate (it is more complex than this but think of the “Sport Mode” on your TV which renders 120Hz or 240Hz from a 60Hz signal). In practice if you can bear juddering, or if you give it time to get accustomed to, I’d suggest you read the following for more information:
Why do I prefer 30fps stable with juddering rather than 90fps with motion smoothing
Render Scale is probably the most important setting you’ll be “playing” with. In short, it is telling what is the maximum resolution FS2020 is rendering the views (each eye). You can get additional fps in making FS2020 rendering less pixels with a lower render scale, but at the same time, you’d get less sharp visuals.
It is important to note this setting can be tailored to your advantage beyond a simple resolution adjustment and I’m explaining all this below.
NB: the Reverb G2 panel resolution is 2160x2160 but because of its lenses design and optical properties, the nominal image resolution an application must render is 3172x3100, which corresponds to 100% OXR Render Scale.
SteamVR OpenXR and Reverb G2
It is possible to also use the Reverb G2 with the SteamVR OpenXR driver. I didn’t find any performance advantage for now but I’m reserving this entry here to add further comments over time.
Balancing Visuals and Performance
Although we all wish being able to render FS2020 in VR at 90Hz at full G2 resolution, we must admit it is only a desirable goal. In the meantime, we can develop strategies to get the most of our hardware and this is what this chapter is about.
To get started, FS2020 rendering depends on 3 factors:
a) Render Resolution (FS2020 Graphics Settings | Render Scaling)
This is the real number of pixels the simulator is drawing every frame. This is also the reference to which FS2020 is rendering EFIS screens: the higher the render resolution, the more pixels and better legibility. It has less impact on other graphics features such as knobs, buttons, levers or analogue gauges because these are usually larger than their equivalent representation in a virtual EFIS screen.
b) Post-Process Resolution (OpenXR Custom Render Scale)
This is the real number of pixels the simulator is presenting the views in the headset every frame. When the render resolution is lower, FS2020 is enlarging the pixels to fit. It is important to note the OpenXR driver will be processing images at the OpenXR render scale. The larger the scale, the heavier the motion reprojection computations for example.
c) Post-Process Filtering (hidden setting in the UserCfg.opt file)
This is the technique used to convert the lower res. render into the higher res. display. Please note FS2020 is using the CAS Shader. In most cases you shouldn’t disable it in VR on the contrary. In effect, “CAS” means Contrast Adaptive Shader and it is sophisticated and efficient shader code capable to almost “create” new pixel when enlarging the images from render resolution to post-process resolution and can be used to our advantage.
Balancing visuals and performance consists in pushing FS2020 to rendering up to the limits of the hardware, and then displaying it as if it was a higher resolution image. However, because FS2020 is using the render resolution as a reference for the EFIS resolution, there are different strategies to use depending on the type of aircraft gauges and the expected visuals.
In order to approach this, I’ve first adjusted FS2020 settings in order to get a solid basis capable of rendering near the G2 native resolution of 2160x2160 pixels at 30fps with a good tradeoff between important visuals for the pilot and agreeable rendering effects for the view. I’ve then tried nearly all combinations of resolutions with GA analog, GA EFIS and Airliners in order to find the ones capable of sustaining the rendering resolution while maximizing the perceived visuals in the headset.
From all the possible combinations, only a few are sufficiently remarkable for the hardware I’m running and I believe, given their inherent resolution ratio properties, they are most likely the only one you might want to consider whatever your hardware. These are also working really well including dense photogrammetry regions in most cases.
I’m recommending the following render scaling settings:
|TAA 70%||SS 70%||Well balanced gauges and external visuals with solid fps|
|TAA 80%||SS 60%||Best for Airliners where EFIS sharpness is more important than external view|
|TAA 60%||SS 100%||Best for analog gauges GA aircraft with super detailed outside view.|
Please note: these are selected to match the unique G2 resolution and might not always apply to other headsets. TAA ## means FS2020 Render Scaling, SS ## means OpenXR Render Scale.
NB: It appears the CAS Shader is giving the maximum pixel/perf ratio around 70% and this has been one of the driver for selecting these combinations.
Tip: The key to EFIS legibility is the TAA ## value. However this also depends on the distance you’re looking the EFIS at. For example, you’d need a minimum of 70/70 for the A320 and 80/60 is better, however, with the Citation you can get enough resolution with 60/100 because screens are larger and closer.
Tip: If you’re flying in less dense areas, or your hardware gives you enough room, I’d suggest you settle on one of these ratios for the aircraft you’re flying and raise only the lower of the values by 10%. For example, flying the A320 over Hawaii, you change from 80/60 to 80/70 instead. Conversely, flying a light GA you change 60/100 to 70/100 instead. Other combinations are not worth it both in terms of visuals and performance.
VR Graphics Settings
The general approach I’m choosing to configuring FS2020 is to identify the settings I consider essential from a pilot perspective (like windshield effect, gauge refresh rate, anisotropic etc…) and set them to a certain acceptable value performance wise. In addition and specifically for the G2 and its higher panel resolution, it is paramount I balance the settings so that I can push as much pixels as possible so that the picture quality is the highest. From then, I can adjust the others so that they fill the frame budget GPU and CPU wise without overflowing. These settings are comfortably able to push near 2Kx2K pixels at 30fps.
These settings are trying to maximize visible range, legibility and the information most important to the pilot, while not sacrificing fps but I’ve also chosen some of these in order to make it simpler adjusting further for your systems and on your flight conditions (see comments below). They are providing a solid base when using either GA Aircraft or Airliners, whether in rural and empty regions or a major Airport.
NB: most test flights were conducted mostly with the DA40 with Garmin EFIS over the Los Angeles region with photogrammetry and multiplayer. If you’re mainly flying in sparse areas or analogue GA aircraft you can certainly raise some of the graphics settings for better visuals, starting with Terrain LOD and Clouds, followed by Ambient Occlusion and Reflections.
The main driver for these settings is maximizing what is important from a simmer perspective visually. Some of the settings are really impacting the fps a lot and must be tuned down in order to give enough smoothness on this hardware but some others can be bumped up without too much differences. However there are a number of settings which I find paramount and I’d rather trade others.
For example, higher anisotropy is helping rendering better looking textures in the distance and therefore is helping the pilot spotting important features like VFR landmarks and/or distant runways. Similarly Windshield Effects is much better in HIGH when you’re flying under rain (breathtaking experience in VR!).
Glass Cockpit Refresh Rate HIGH is helpful for two reasons: first it gives enough EFIS update rate which is necessary for the pilot detecting “trending” changes when needles are moving for example. But it is also mandatory because otherwise, because FS2020 is refreshing EFIS every other frame(s), it is causing stutters (see my detailed post about this).
On the other hand, Bloom is really a matter of taste and is taking some fps but not much. Similarly you can use Shadow Maps 1024 or 1536 without much fps difference (the later gives much better aircraft ground shadows under the wings) but I’d rather leave some room and use a slightly lower value. I wish I could push Volumetric Clouds higher but MEDIUM is surprisingly giving a nice experience in VR (depending on the whether conditions of course).
Flying in VR with this hardware is finding a tradeoff between visuals and performances. Therefore more often than not you’ll be chasing the best fps and you’ll be adjusting the settings to reach this goal (you can’t beat that!). Although most settings are impacting the final fps to different degrees, there are also a few most important above all others: Clouds and Terrain LOD.
In addition, FS2020 VR seems to be affected by CPU bottlenecks more than in 3D. It is important to understand raising the Glass Cockpit Refresh Rate is demanding more CPU, but raising Terrain LOD or Buildings and Trees is also demanding more CPU (so it seems).
After having conducted a lot of comparative tests with different aircraft and sceneries, I’ve came to the conclusion the best approach to me would be to settle on a baseline upon which I could adjust with limited efforts the overall fps while flying. This requires having a baseline which at least is nearly stutter free and my experience in the simulator is showing the settings shown above are delivering.
In order to stay under the hardware limits and experience stutter free flying while having some room for adjusting graphics depending on the conditions, it is easier to use a good enough baseline working in most cases and just have to bother with a couple settings only. For example when using these settings with a GA aircraft over a rural area I could raise Clouds to HIGH. Conversely flying an Airliner in a busy international airport, I would reduce Terrain LOD to 50% and eventually lower Clouds to LOW. In both cases I’d get solid fps overall and solid visuals because the other settings are visually enough while sparing some resources I can use for Terrain LOD or Clouds.
Graphics Settings PC/VR
There are two separate categories of graphics settings: PC and VR.
You can switch between the two categories and change settings from any mode:
Tip: Don’t forget to also set
FS2020 Graphics Settings (PC) | V-Sync : OFF. It seems if any VSync is enabled in NVidia, 2D or VR settings, your HMD rendering will be limited to your monitor refresh rate (thanks @CodeLoran69 for this).
Graphics Settings Backup / Restore
Should you want to experiment with my settings but you’d like to keep a backup copy of your own settings, the Graphics Settings are saved in a json file here:
Microsoft Store Version
C:\Users\your_login_name\AppData\Roaming\Microsoft Flight Simulator\UserCfg.opt
Make a copy of the UserCfg.opt file for backup, you can copy it back to revert the graphics settings.
NB: this file is versioned and a copy for a previous version might not work as-is in a future version. However should you want to restore past settings, the file structure shouldn’t change much and you can always try to manually match the entries from the saved backup with the entries in the current file.
VR Traffic Settings
These are often forgotten but they can have an impact to the overall fps. I prefer more road traffic because it is more immersive and ubiquitous in any city flying, and keep the other to sane minimums in VR for performance reasons (compared to "My 4K Settings). In effect I find these are taking too much CPU in VR and I prefer lowering them a little bit (mostly Aircraft Ground Density for now).
This one is important in VR, at least with both the Valve Index and the Reverb G2: I’d suggest you disable Spatial Sound otherwise it doesn’t sound properly when turning your head.
In addition you might want to read this:
PSA: Get better engine sounds with the Reverb G2 (and probably other Headsets)
One last item which might prove giving you some boost is using a hidden Win10 power profile:
Open a cmd prompt / powershell window and type the following:
powercfg /DUPLICATESCHEME e9a42b02-d5df-448d-aa00-03f14749eb61
Open you Win10 power profile and use the newly created “Ultimate Performance” profile.
PS: use at your own risk, I don’t know whether this is also affecting thermal throttling.
Through the lens view in the A320 with the Reverb G2
This is really close to what you can feel in the HMD and this shows how 30fps in a simulator can be smooth as long as there is no stutters and the simulator is delivering a constant stream of images at 30hz.
NB: this though the lens video is not about resolution or image quality, just smoothness.
This sunset behind clouds was like 10x more intense in the headset:
An amazing feeling looking at the aircraft from the outside:
Would you be able to explain more why you selected Low Latency to “on”
Comparing Reverb G2 and Valve Index resolution and what does it mean with SteamVR and OpenXR
How does Gauge Refresh Rate is causing more stutters if not set to HIGH
EFIS resolution depends on render resolution, not post-processing resolution.
Why do I prefer 30fps stable with juddering rather than 90fps with motion smoothing
Why I don’t recommend using Process Lasso
How to change Full Screen Optimization for the FS2020 MS Store version properly
What NVidia Drivers are recommended for VR
Table of NVidia Drivers release notes highlights from 446.14 to 461.09
How to install Nvidia drivers properly when trying out different versions
Known issue: NVidia drivers causing stutters in VR
Windows Mixed Reality:
PSA: WMR advanced registry setting might help getting better performance
WMR Scaling and Dev Tools - Some Explanations
WMR Reprojection, additional thoughts and ramblings
You can use the SteamVR OpenXR driver with any WMR headset
Turn off your CPU SMT/HT in the Bios and unleash your VR fps
VR Technology Explained
This is great in-depth material which is not just talking about technology:
Advanced VR Rendering with Valve’s Alex Vlachos (slides)
Advanced VR Rendering with Valve’s Alex Vlachos (video)
Advanced VR Rendering Performance (video)