Performance adjustment - Kvitekvist/FUS GitHub Wiki

Back to Readme

Performance adjustment

FUS comes with a few options that can be changed in order to get the best performance for your system.

How to check performance

Several tools exist for this. If you have an Oculus (Meta) device, you can open the debug tool, then on the HUDs section "Visible HUD" dropdown choose "Performance". Then you will get an FPS and headroom counter while u play. If you use Virtual Desktop, you can enable the performance graph in the setting, where "game latency" is the most important value. You can also use fpsVR, or you can just use the native SteamVR Advanced Frametimer if you are on SteamVR:

Frametimer

All tools give you some sort of understanding how much your GPU is doing while you play.

What the numbers mean

You will see frame times for CPU and GPU there. This means the time it takes for your CPU (processor) or GPU (graphics card) to create the next image for your display. This needs to be bewlow 1/refresh rate, i.e. 1/90 Hz = 0.0111 seconds = 11.1 ms for the HTC Vive. Or you can choose to force reprojection always on and increase the refresh rate again, e.g. I am playing on a Valve Index set to 144 Hz but forced reprojection (leading to 72 Hz effective refresh rate), which in turn means my frametime must be below 1/72 = 0.0138 = 13.8 ms.

For Quest users - Oculus Debug Tool

image

Setting fixed (half frame rate) (1)

With ASW (Asynchronous SpaceWarp) you can do two things. You can cap the refresh rate, and you can cap the refresh rate plus adding reprojection. If you struggle to keep max fps during your play, you might want to try this. For me (Kvitekvist), it feels much better to have a fixed FPS all the time, compared to having variable frame rates. To do this, simple activate Asynchronous Spacewarp and set it to "Force 45 FPS, ASW Disabled". The number 45 is a little misleading. It actually means "Cap fps at half of your headsets refresh rate". So, if you have a Quest1 with 72 mhz refresh rate, then your capped frame rate will be 36. If you have 90 mhz, then you will have 45 FPS, and if you have 120 mhz then you will get 60 FPS. With the second option, "Force 45 FPS, ASW Enabled", you get the same effect as above, but you also get a sort of motion smoothing effect:

"Asynchronous SpaceWarp (ASW) is a frame-rate smoothing technique that almost halves the CPU/GPU time required to produce nearly the same output from the same content." You can read more about it here"

Some people really like this, others do not (as it also introduces some sort of ghosting effects).

Checking Performance on Quest (2)

Using the Debug tool (see screenshot) then you can enable the Performance overlay HUD. Then, when the headset is active, you can see your current App frame rate hz (3) and your current headroom (4)

Consider App Frame Rate your FPS number. If you see this dipping a lot, then your hardware / software settings are not able to keep up, and you might benifit from activating ASW.

The Performance Headroom is an indicator of how much load you are under. A high number is good, a low number is bad. Bad means you might experience stutter or skipped frames.

Important!

If your GPU is not at max load, but you still see reprojection, this is perfectly normal. This means your PC is not able to create new images every time the display refreshes, so it reprojects the old one. This gives your GPU more headroom (= less usage), but you will see a chopper image. This can be caused by both the CPU and the GPU not being fast enough. It looks like a GPU load of 70% means you are fine, but you cannot rely on this. The only measure that is valid is the frametime!

How to adjust performance

In FUS there are several options to improve performance:

  • Use the new opencomposite + Virtual Desktop combo: Performance Impact - High. We include a version of open composite that works for all users, not only meta user, and this version is compatible with Virtual Desktop as well. We have seen several users gain up to 30% more performance. You will need to set SteamVR as OpenXR runtime for this to work, or you can use VDXR from Virtual Desktop (see our wiki guide for details). NOTE: Using OC disables SteamVR overlays.

  • Lower the refresh rate or use ASW / SSW / Motion Smoothing: Performance Impact - High. If your headset is trying to run at 90 FPS, but you find you are not able to maintain that, setting a lower refresh rate might be the solution, e.g. to 72Hz. It might feel much more comfortable to have a fixed refresh rate rather than a jumping one. You can also "fake" frame generation by forcing always on ASW (Asynchronous Spacewarp in oculus debug tool), SSW (Synchronous Spacewarp in Virual Desktop), or Motion Smoothing in SteamVR. This may give you a ghosting effect, but it will also give you half of your frames for free. Some people can use this well, others can get sick, so just try it out.

  • The DynDOLOD presets: Performance Impact - High. We provide three presets for DynDOLOD which will have different impact on your visuals and on your performance. You can see them directly in MO2 at the bottom in the blue "Optional Late LOD Files". Only choose one! DynDOLOD_Output - mid is the default and uses medium DynDOLOD settings and 3D tree LODs (so called ultra trees - not to be mixed up with the actual 3D trees mod, which we do not use) with decent performance. DynDOLOD_Output - low is still looking fine, it uses the low DynDOLOD preset and regular flat tree billboards. If you really want to go crazy and have the performance headroom, you can use DynDOLOD_Output - high, which uses high DynDOLOD rules and a better quality 3D tree LOD model. After switching dyndolod, make sure that the synthesis.esp plugin is at the bottom again (right panel in MO2).

  • The ini files: Performance Impact - High. We provide three different ini quality presets. By default the "Medium" preset is selected, but you can try the low or high preset and / or play around with the values yourself. These affect things like draw distance of grass, trees & objects, resolution of shadows, density of grass and more. You will find all presets in your FUS folder in FUS\tools\Ini options. Here you can see three folders, go into the folder you want to use and copy the content of the folder into the profile folder that you are using, e.g. FUS\profiles\FUS RO DAH (Basic + Appearance + Gameplay). You can try out different presets and open the files to see their values and adjust to your explicit needs.

  • Upscaler options: Performance Impact - Medium. FUS come with 3 upscaler options: DLSS reduces visual quality but reduce frametime by 1-2ms . Requires RTX graphics card. FSR is another option that works for any graphics card with slightly lower quality and performance gain. DLAA on the other hand will cost 1-2 ms, but will improve visual quality and remove all shimmer.

  • Reshade or Community Shader features: Performance Impact - Medium/Low. The Sharper Eye Reshade has a minimal impact on performance, but if you enabled other reshades, check your performance without them. Community Shaders (CS) and the basic light limit fix and grass lighting are required for the list to look correct. It is possible to disable them but mods need to be disabled as well, which can be discussed in the unsupported mod channels. If you enabled additional CS features, check your performance without them.

  • Lower render resolution: Performance impact - High. NOTE: Only adjust render resolution in ONE place. Doing so multiple places will stack and make it very hard for you to control. The game needs to be restarted for these to take any effect. If your PC is struggling, maybe your headset has a too high resolution for what your graphics card can handle. In this case, you can reduce the render resolution to gain much better performance, but also at the cost of making the game less sharp. Virtual desktop: try lower graphics quality settings in the "streaming" tab. Opencomposite: in the opencomposite mod, there is an ini file named opencomposite.ini. Open this and change the render resolution from 1.0 to 0.7. This reduces the resolution by 30% which is often enough. SteamVR: In SteamVR settings you can adjust the render resolution. Adjust the slider and see if you find a value that works for you. Read more here: https://forum.il2sturmovik.com/topic/81095-steamvr-resolution-cap-maxrecommendedresolution/

  • Grass density: Performance Impact - Medium. Although we adjust grass density in our ini presets, grass is always one of the hardest hitter in Skyrim VR and you might have to further reduce it. We removed the ini from the mod itself and you can adjust the grass density using Bilago's INI configuration tool within MO2. In the dropdown menu of what to start (shows Play FUS (SKSE) by default) in MO2, select the INI Configuration Tool, then press Run. Inside the tool, filter for "imingrasssize". You need to increase that value to decrease the grass density, it is an inverse relationship! E.g. set it to 90 or 100 if you need better performance. Conversely, you can decrease it to 70 or 60 if you have a beefy PC. You can open the Skyrim Consol while in game and type in tg and press enter to remove grass rendering and test performance to see the maximum impact. If you want to remove grass almost entirely from the game afterwards, you can set the imingrasssize to 200.

  • Add occlusion culling mods: Performance Impact - ??? There are mods that add occlusion culling planes into the game so objects that are not in sight are not rendered. The impact varies greatly across systems, and they need patches and may occasionally still lead to flickering, which is why it is not by default included in FUS. You can get them here: https://www.nexusmods.com/skyrimspecialedition/mods/54907 https://www.nexusmods.com/skyrimspecialedition/mods/54998 https://www.nexusmods.com/skyrimspecialedition/mods/14084 We do not officially support these mods but wanted to note that they exist, so add them at your own risk.