Assetto Corsa Competizione

Assetto Corsa Competizione

106 ratings
ACC VR - The definitive VR Performance Guide [SteamVR]
By scuba guy
In this guide i will explain in detail how to get the most out of Assetto Corsa Competizione in terms of VR Performance.

This guide is aimed at users with headsets that can run SteamVR natively, other headsets might want to use OpenXR instead of VRPerfToolkit, but for headsets that can run SteamVR natively, there is no reason to use OpenXR (Valve Index, Vive, Pimax etc)

If you have a headset that does not support SteamVR natively, you can still follow the guide and find useful information.

This guide is up to date with 1.8, as i am not 100% happy with the VR performance introduced in 1.8.

This guide should be a good starting point or baseline for anyone looking to improve their performance in VR significantly.

You can find this guide on this blog: https://blog.lynxsec.se/acc-vr-the-definitive-vr-performance-guide
It is a tiny bit more detailed and it's properly formatted.


Want to discuss this guide? Use Steam or Racedepartment.

Steam: https://steamcommunity.com/sharedfiles/filedetails/?id=2606988229
Racedepartment: https://www.racedepartment.com/threads/acc-vr-the-definitive-vr-performance-guide.209237/

Last Update: 2022-12-02
  • Introduction
  • Before You Get Started
  • Check Your Hardware
  • Expectations
  • SteamVR Settings
  • Nvidia Control Panel Settings (Same should apply to AMD's control panel)
  • Stop the game from showing on the screen (Optional)
  • Engine.ini (Optional, not needed)
  • VR Performance Toolkit
  • OpenVR_FSR V2.0 (Legacy, do not use)
  • In-game Graphics Settings
  • Video of improved performance
  • Summary
4
4
3
6
3
2
2
   
Award
Favorite
Favorited
Unfavorite
Introduction
This guide is aimed towards all users, but specifically those users that have high-end rigs but cannot get the performance that they desire from the current VR implementation.

This guide is curently up to date with v1.8.19


Before you start going down the hole in order to improve your VR performance, let's state some obvious stuff.
There is multiple ways to gain performance in VR, this guide is aimed at the way i think works the best, this will probably change with time. Stuff will be added here and or changed as i learn more, both from VR users and from my own testing.

What i found was that the DLSS and FSR implementation in the game is great for screen/pancake gaming, however that was not the case for me in VR. Objects overall tend to get blurrier in exchange for a higher framerate. Although this is great, it seems that there is no inbetween (atleast for me) sweetspot for resolution/framerate.

Therefore, i have decided to resort to the OpenVR_FSR plugin along with a modified engine.ini file, again.

In my experience and with the tests i have done in 1.8, i find that there is overall a crisper picture and higher framerate as a result.

So, with that out of the way, lets move on to the guide.


What will this guide do for me?
In this guide you will learn how to set your SteamVR settings, Nvidia Control Panel settings, edit your Engine.ini file, disable on-screen rendering and set the in-game video settings.

This guide is based on
Valve Index
but will work with any SteamVR headset.

You will have to tweak some of the settings to be fitted for your specific headset though. For example, the G2 VR Headset has a higher resolution compared to the Index, (what i am using for a baseline) so you will need to have that in consideration while you configure your settings, so that it will be according to that of what you have.
Comment down below if you are stuck and need help with that.

This guide is intended for Valve Index, Vive and other SteamVR headsets, it's not tested for Oculus (OpenVR_FSR is probably only supported with SteamVR)

This is not tested nor will ever be with Oculus headsets, however most of the settings (except for steamvr specifics and OpenVR_FSR apply to Oculus headsets to.


Please notify me if you have found good settings for your specific setup and headset.

Comment with what hardware you are using and what headset you have so we can add it to the guide.
Before you get started
So you want to improve your performance in ACC VR right?

If you have a setup currently, there are many things that you probably have configured already.
Before you start making changes with the help of this guide, make sure you backup everything.

Here is a list of what you need to backup (in order):
  • Your computer's bios/uefi, create a profile and save your current configuration if you plan to overclock your ram.
  • SteamVR Settings (Take a printscreen of these and save to a folder)
  • Nvidia/AMD GPU Settings (Take a printscreen of these and save to a folder)
  • ACC Ingame configs (Located at: User\Documents\Assetto Corsa Competizione\Customs\VideoSettings)
  • Your Engine.Ini file (Located at: C:\Users\User\AppData\Local\AC2\Saved\Config\WindowsNoEditor)
  • Your GameUserSettings.Ini file (Located at: C:\Users\User\AppData\Local\AC2\Saved\Config\WindowsNoEditor)

Any other file/setting that you could think of, that is related to ACC VR, either save by printscreen or save the actual configuration file. There is no guarantee that this guide will work for you, so make it easier for yourself and back everything up, so you can roll back to your previous setup with eaze.


When you are confident with your backups, move on to the next section of the guide!
Check your hardware
Make sure you have your PC setup correctly, this could dramatically increase performance

So before writing this guide, i tried ACC on multiple setups and did benchmarks to get an overall understanding of the current performance situation.

I found out that ram clock speed made huge difference in VR.

When i was running my ram at 2100mhz, i got stuttering ingame, both in VR and on pancake display. Most of the stuttering occured when turning the car into a corner or when there was a complex scene of multiple cars moving.

After that i tried 3200mhz and the difference was staggering, no more stuttering or lag when turning into corners and i could run a fairly high amount of AI cars in the grid without any issue at all.

Have in mind that the rig i tested this with, is fairly high-end. However, most users out there that are having issues with fps-consistency, have fairly good hardware.

READ THIS BEFORE GOING ANY FURTHER
YES, XMP (Intel) or DOCP (Amd) can be a way to get a bit more fps/speed out of your computer, especially when gaming. But in many cases the XMP/DOCP rated speed of your ram will not actually run stably with your motherboard and integrated memory controller on your cpu

Now when that's out of the way, lets have a look at an example of how i would do it.

So to sum it up:

  • Make a backup of your current bios/uefi profile before changing anything, so you can go back to your stable profile easily.
  • Make sure you are running your ram at the highest possible frequency without causing instability (Usually when you install ram, you need to manually set XMP to ON in bios/uefi, otherwise they run at default speed eg. 2100mhz or 2000mhz for example)
  • If the XMP 1 profile introduces instability to your system, try the XMP 2 profile.
  • This requires a fair amount of knowledge, please do not attempt this if you have no idea of what you are doing and what the possible implications could be.


So, how do you check your ramspeed?
First of all, find out what ram you got and what the rated speed of the specific ones you got are. If you bought the parts and built the computer yourself this shouldn't be to hard.
If you got a prebuilt one, check the specifications of that.

When you know what speed your ram is rated at, you can check in Windows, what speed they are actually running at.




Expectations
With this config, i was able to push around 120 fps almost constantly in a 16 grid AI race, however, there are some dips in FPS every now and then, so don't expect this to be comparable with the VR performance of AC for example, however it is working WAY better then normally.
It works even better when practicing alone.

My hardware is as follows:
  • CPU : i7 9700K @ 5.0GHz
  • GPU : RTX 3070
  • RAM : Vengeance LPX Black 32GB / 3200MHz

If you got better hardware then this, you can probably push even higher settings, if you have worse hardware then this, you probably need to lower some settings.

However, try these settings as a baseline for your own configuration first and try to identify the issue before you start to change settings.

Leave a comment and let me know how it works with your rig, be sure to leave your specs and explain what issue you are having.

SteamVR Settings [UPDATED FOR 1.8]
This section is dependent on what headset you got, i'm going to go with the settings for Valve Index as a baseline.

120Hz is really smooth and nice, however lower this to 90 or even 80 if you are struggling with gaining FPS.

In this revised version of the guide, i have decided to set the resolution scaling in SteamVR instead of ingame due to performance reasons. For some reason, it works better for me. However, this might not be the case for you. In that case, set the Render Resolution in SteamVR to 100% and tinker with the resolution scales in-game.

Video Settings:

  • Refresh rate: 120Hz (Valve Index specific, set to whatever your VR headset works with, try the highest first)
  • Motion Smoothing: Off
  • Render Resolution: Custom - Set this to 100%

Per Game Settings:



Per Game Settings 2:

  • Motion Smoothing: Disabled

  • Custom Resolution Multiplier: 170-180% <--- This is what i am using, you should leave this att 100% if you are using a G2 headset for example, or increase it even more if you are using a original Vive, you need to understand this before making changes.
    This is also based on what GPU/CPU combo you have, set this accordingly.


  • Field Of View: 85% <--- This one can improve performance, tinker with it if you are struggling to gain FPS. I have it set to 85%, it introduces a cyclop feeling, i have no problem with that, but you might, so set this accordingly.
    PS: This does work for G2 sometimes, and sometimes it completely breaks the picture. Beware.

  • Override World Scale: Off

  • Use Legacy Reprojection Mode: Off

  • Throttling Behavior: Auto

Nvidia Control Panel Settings [UPDATED FOR 1.8]
These settings should be the same for AMD with minor details being different.

Use these settings as a baseline for your own config, i recommend starting off with these settings.

- Pick Program Settings
- Select Assetto Corsa Competizione in the dropdown menu

Configuration:


  • Anisotropic Filtering: Application-Controlled
  • Antialiasing - FXAA: Off
  • Antialiasing - Gamma Corretion: On
  • Antialiasing - Mode: Application-Controlled
  • Antialiasing - Transparency: 8x (Supersample)
  • Background Application Max Frame Rate: Off
  • CUDA - GPUs: All


  • Low Latency Mode: On <---- Set this to OFF if you experience FPS loss.
  • Max Frame Rate: Off
  • Monitor Technology: Fixed Refresh
  • Multi-Frame Sampled AA(MFAA): Off
  • OpenGL Rendering GPU: Auto-Select
  • Power Management Mode: Prefer Maximum Performance
  • Preferred Refresh Rate: Highest Avaliable
  • Texture Filtering - Anisotropic Sample Optimization: Off
  • Texture Filtering - Negative LOD Bias: Clamp
  • Texture Filtering - Quality: High Quality


  • Texture Filtering - Trilinear Optimization: On
  • Threaded Optimization: Auto
  • Triple Buffering: Off
  • Vertical Sync: Off
  • Virtual Reality Pre-Rendered Frames: 1 - This can create higher latency rendering. Lower this to 0 if 1 doesn't work for you. If you have a high end GPU and CPU, try to set this setting a bit higher.









Stop the game from showing on the screen (Optional)
ACC Doesn't have an option to disable screen rendering in-game.
So you have to edit another file to disable the normal window while in VR.

Go to C:\Users\User\Documents\Assetto Corsa Competizione\Config and open the file called vrSettings.json

Change
"spectatorScreenMode": 5,
to
"spectatorScreenMode": 0,

This will not necessarily increase your performance, just a convenient setting if you want to disable the game from also showing up on the screen.
Engine.ini (Optional, not needed)
What is Engine.ini?
Engine.ini is a file that allows you to edit the default values for Unreal Engine Console Commands.
Since we don't have direct access to the console, this is the only way we can access those parameters.

The config below is what I'm using and found that it works the best in VR.
Let me know if you know any better settings, either for you, with your hardware or with your specific headset.

Editing your engine.ini file or using a custom file may create unwanted issues, and beyond unintended graphical appearance it may also result in software or hardware crashes.

ALSO: Beware that these settings are only made with VR optimization in mind (Although shadows could be lowered for more performance), these settings will render the photo-mode depth of field turned off, so if you wanna use the photo-mode, you have to remove the parameters in the Engine.ini file.

Example:

r.Streaming.FullyLoadUsedTextures 1

This is an alternative to disabling textures all together, streaming the textures at full resolution could give you a better visual experience if you have the overhead available. 
______________________________________________
Editing the file

We need to edit Engine.ini, this file can be found at: \user\AppData\Local\AC2\Saved\Config\WindowsNoEditor

I'm not gonna go into detail to any of these settings, but if you feel like it, try to tinker with them in order to find the best settings for your rig.
If you want to find out for yourself what these rendering related parameters do, you can do so here.

FIRST and foremost, create a backup of your current "Engine.ini" file, for example you can rename it to "bak.Engine.ini".

Then, you can copy the backup file and rename it to "Engine.ini" and paste the following config there, replacing the old config.

Config file:
[Core.System] Paths=../../../Engine/Content Paths=%GAMEDIR%Content Paths=../../../AC2/Plugins/FMODStudio/Content Paths=../../../Engine/Plugins/Runtime/Steam/SteamVR/Content Paths=../../../Engine/Plugins/Runtime/Oculus/OculusVR/Content Paths=../../../AC2/Plugins/ACShaders/Content Paths=../../../Engine/Plugins/2D/Paper2D/Content Paths=../../../Engine/Plugins/Developer/AnimationSharing/Content Paths=../../../Engine/Plugins/Editor/CryptoKeys/Content Paths=../../../Engine/Plugins/Enterprise/DatasmithContent/Content Paths=../../../Engine/Plugins/Media/MediaCompositing/Content [ConsoleVariables] r.Streaming.FullyLoadUsedTextures=1 r.PostProcessAAQuality=4 r.TemporalAACurrentFrameWeight=0.1 r.TemporalAASamples=8 r.TemporalAASharpness=1.0 r.Tonemapper.Sharpen=4 r.VolumetricFog=0 r.RenderTargetPoolMin=350 r.BloomQuality=1 r.AOquality=0 r.LensFlareQuality=0 r.SceneColorFormat=3 r.SceneColorFringeQuality=0 r.EyeAdaptationQuality=1 r.AmbientOcclusionLevels=1 r.AmbientOcclusionRadiusScale=1.7 r.TranslucencyLightingVolumeDim=24 r.ShadowQuality=4 R.DFshadowquality=1 r.Shadow.MaxResolution=512 r.DepthOfFieldQuality=0 r.MipMapLODBias=-0.8 r.HZBOcclusion=0 r.SSR.quality=0 r.SSR.MaxRoughness=0.1 r.RHICmdBypass=0 r.Shadow.CSM.MaxCascades=2 r.LightShaftDownSampleFactor=4 r.TiledDeferredShading.MinimumCount=10 FX.AllowGPUSorting=0 vr.InstancedStereo=1 vr.RoundRobinOcclusion=1 r.MaxAnisotropy=8 [/script/engine.renderersettings] a.URO.ForceAnimRate=2 a.URO.ForceInterpolation=1 r.OptimizeForUAVPerformance=1 r.Streaming.Boost=0 r.Streaming.DefragDynamicBounds=1 r.Streaming.FramesForFullUpdate=1 r.Streaming.FullyLoadUsedTextures=1 r.Streaming.HLODStrategy=2 r.Streaming.LimitPoolSizeToVRAM=1 r.Streaming.PoolSize=0 r.UseShaderCaching=1 r.UseShaderPredraw=1 r.bForceCPUAccessToGPUSkinVerts=True
VR Performance Toolkit
VR Performance Toolkit

PS: This is the new method.

You have to remove OpenVR_FSR2.0 if you have it installed, before you install this.

To do that, remove this file from the following folder:
Remove "openvr_api.dll" in
\Steam\steamapps\common\Assetto Corsa Competizione\Engine\Binaries\ThirdParty\OpenVR\OpenVRv1_5_17\Win64 and verify the game on Steam.


Alright, lets get on with the new stuff!

This is the new method to gain extra performance in ACC. This mod will work with Direct3D 11 graphics APIs, is supported by OpenVR and Oculus.

I found that it is better then OpenVR_FSR as it adds additional functionality, such as Foveated Rendering and Variable Rate Shading (The latter is only avaliable for Nvidia RTX or GTX 16xx cards)
You cannot use the in-game DLSS and FSR settings when you are running with this modified version.

You can find the toolkit here: https://github.com/fholger/vrperfkit

Download the latest version, at the time of writing it's V0.3
https://github.com/fholger/vrperfkit/releases/download/v0.3/vrperfkit_v0.3.zip

Installation Instructions

The installation of this mod is fairly straight forward.

Go to the following folder, unpack dxgi.dll and vrperfkit.yml in the same folder as AC2-Win64-Shipping

You should find the AC2-Win64-Shipping in the following folder:
C:\Program Files (x86)\Steam\steamapps\common\Assetto Corsa Competizione\AC2\Binaries\Win64

Now we need to tinker with the settings to get the most out of it.
The following example is what i used to achieve a balance between smooth fps and sharpness.

PS: This here is the full config i use with my specs, it works great with my GPU, CPU and VR headset.
That does not mean it will work perfectly for you, you need to learn the meaning of these parameters and tinker on your own if you are having issues, this should be a good starting point for most users though.

# Upscaling: render the game at a lower resolution (thus saving performance), # then upscale the image to the target resolution to regain some of the lost # visual fidelity. upscaling: # enable (true) or disable (false) upscaling enabled: true # method to use for upscaling. Available options (all of them work on all GPUs): # - fsr (AMD FidelityFX Super Resolution) # - nis (NVIDIA Image Scaling) # - cas (AMD FidelityFX Contrast Adaptive Sharpening) method: fsr # control how much the render resolution is lowered. The renderScale factor is # applied to both width and height. So if renderScale is set to 0.5 and you # have a resolution of 2000x2000 configured in SteamVR, the resulting render # resolution is 1000x1000. # NOTE: this is different from how render scale works in SteamVR! A SteamVR # render scale of 0.5 would be equivalent to renderScale 0.707 in this mod! renderScale: 0.85 # configure how much the image is sharpened during upscaling. # This parameter works differently for each of the upscaling methods, so you # will have to tweak it after you have chosen your preferred upscaling method. sharpness: 1.0 # Performance optimization: only apply the (more expensive) upscaling method # to an inner area of the rendered image and use cheaper bilinear sampling on # the rest of the image. The radius parameter determines how large the area # with the more expensive upscaling is. Upscaling happens within a circle # centered at the projection centre of the eyes. You can use debugMode (below) # to visualize the size of the circle. # Note: to disable this optimization entirely, choose an arbitrary high value # (e.g. 100) for the radius. radius: 0.6 # when enables, applies a MIP bias to texture sampling in the game. This will # make the game treat texture lookups as if it were rendering at the higher # target resolution, which can improve image quality a little bit. However, # it can also cause render artifacts in rare circumstances. So if you experience # issues, you may want to turn this off. applyMipBias: true # Fixed foveated rendering: continue rendering the center of the image at full # resolution, but drop the resolution when going to the edges of the image. # There are four rings whose radii you can configure below. The inner ring/circle # is the area that's rendered at full resolution and reaches from the center to innerRadius. # The second ring reaches from innerRadius to midRadius and is rendered at half resolution. # The third ring reaches from midRadius to outerRadius and is rendered at 1/4th resolution. # The final fourth ring reaches from outerRadius to the edges of the image and is rendered # at 1/16th resolution. # Fixed foveated rendering is achieved with Variable Rate Shading. This technique is only # available on NVIDIA RTX and GTX 16xx cards. fixedFoveated: # enable (true) or disable (false) fixed foveated rendering enabled: true # configure the end of the inner circle, which is the area that will be rendered at full resolution innerRadius: 0.6 # configure the end of the second ring, which will be rendered at half resolution midRadius: 0.8 # configure the end of the third ring, which will be rendered at 1/4th resolution outerRadius: 1.0 # the remainder of the image will be rendered at 1/16th resolution # when reducing resolution, prefer to keep horizontal (true) or vertical (false) resolution? favorHorizontal: true # when applying fixed foveated rendering, vrperfkit will do its best to guess when the game # is rendering which eye to apply a proper foveation mask. # However, for some games the default guess may be wrong. In such instances, you can uncomment # and use the following option to change the order of rendering. # Use letters L (left), R (right) or S (skip) to mark the order in which the game renders to the # left or right eye, or skip a render target entirely. #overrideSingleEyeOrder: LRLRLR # Enabling debugMode will visualize the radius to which upscaling is applied (see above). # It will also output additional log messages and regularly report how much GPU frame time # the post-processing costs. debugMode: false # Hotkeys allow you to modify certain settings of the mod on the fly, which is useful # for direct comparsions inside the headset. Note that any changes you make via hotkeys # are not currently persisted in the config file and will reset to the values in the # config file when you next launch the game. hotkeys: # enable or disable hotkeys; if they cause conflicts with ingame hotkeys, you can either # configure them to different keys or just turn them off enabled: false # toggles debugMode toggleDebugMode: ["ctrl", "f1"] # cycle through the available upscaling methods cycleUpscalingMethod: ["ctrl", "f2"] # increase the upscaling circle's radius (see above) by 0.05 increaseUpscalingRadius: ["ctrl", "f3"] # decrease the upscaling circle's radius (see above) by 0.05 decreaseUpscalingRadius: ["ctrl", "f4"] # increase the upscaling sharpness (see above) by 0.05 increaseUpscalingSharpness: ["ctrl", "f5"] # decrease the upscaling sharpness (see above) by 0.05 decreaseUpscalingSharpness: ["ctrl", "f6"] # toggle the application of MIP bias (see above) toggleUpscalingApplyMipBias: ["ctrl", "f7"] # take a screen grab of the final (post-processed, upscaled) image. # The screen grab is stored as a dds file next to the DLL. captureOutput: ["ctrl", "f8"] # toggle fixed foveated rendering toggleFixedFoveated: ["alt", "f1"] # toggle if you want to prefer horizontal or vertical resolution toggleFFRFavorHorizontal: ["alt", "f2"]

Here you can play with some settings to suite your needs.
Refer to this section of the guide to get a better understanding of the settings:
https://blog.lynxsec.se/acc-vr-the-definitive-vr-performance-guide#h_79180736721801666945826405
OpenVR_FSR V2.0 [OLD METHOD, DON'T USE]
THIS METHOD IS OBSOLETE AND REPLACED WITH VRPERFKIT

I found that this is still better then the ingame options for DLSS and FSR for VR.
It's pretty obvious, but you cannot use the ingame DLSS and FSR settings when you are running with this modified version.

This modified version of openvr_api.dll works with ACC, this is what made the game playable for me (Together will the correct configurations overall)

You can find the modified dll here: https://github.com/fholger/openvr_fsr
Go to Releases: https://github.com/fholger/openvr_fsr/releases/

Download the latest version, at the time of writing this, it's V2.0

Direct download: https://github.com/fholger/openvr_fsr/releases/download/fsr_v2.0/openvr_fsr_v2.0.zip


Installation instructions
Backup your old "openvr_api.dll" so you can go back to the original one, just in case. Rename it to "bak.openvr_api.dll" or zip it into an archive.

Replace "openvr_api.dll" in \Steam\steamapps\common\Assetto Corsa Competizione\Engine\Binaries\ThirdParty\OpenVR\OpenVRv1_5_17\Win64 with the one provided from github.

Make sure you include openvr_mod.cfg in the same folder as the modified openvr_api.dll.

You can tinker with the settings a bit, but i would suggest not to at first, if needed later on you can check out openvr_mod.cfg, it looks like this.

{ "fsr": { // enable image upscaling through AMD's FSR or NVIDIA's NIS "enabled": true, // if enabled, uses NVIDIA's Image Scaling instead of the default // AMD FidelityFX SuperResolution. Both algorithms work similarly, but produce // somewhat different results. You may want to experiment switching between the // two to determine which one you like better for a particular game. "useNIS": false, // Per-dimension render scale. If <1, will lower the game's render resolution // accordingly and afterwards upscale to the "native" resolution set in SteamVR. // If >1, the game will render at its "native" resolution, and afterwards the // image is upscaled to a higher resolution as per the given value. // If =1, effectively disables upsampling, but you'll still get the sharpening stage. // AMD presets: // Ultra Quality => 0.77 // Quality => 0.67 // Balanced => 0.59 // Performance => 0.50 "renderScale": 0.77, // tune sharpness, values range from 0 to 1 "sharpness": 1.0, // Only apply FSR/NIS to the given radius around the center of the image. // Anything outside this radius is upscaled by simple bilinear filtering, // which is cheaper and thus saves a bit of performance. Due to the design // of current HMD lenses, you can experiment with fairly small radii and may // still not see a noticeable difference. // Sensible values probably lie somewhere between [0.2, 1.0]. However, note // that, since the image is not spheric, even a value of 1.0 technically still // skips some pixels in the corner of the image, so if you want to completely // disable this optimization, you can choose a value of 2. // IMPORTANT: if you face issues like the view appearing offset or mismatched // between the eyes, turn this optimization off by setting the value to 2.0 "radius": 0.5, // if enabled, applies a negative LOD bias to texture MIP levels // should theoretically improve texture detail in the upscaled image // IMPORTANT: if you experience issues with rendering like disappearing // textures or strange patterns in the rendering, try turning this off // by setting the value to false. "applyMIPBias": true, // If enabled, will visualize the radius to which FSR/NIS is applied. // Will also periodically log the GPU cost for applying FSR/NIS in the // current configuration. "debugMode": false } }

Here you can play with some settings to suite your needs.
"useNIS" - Set this to True if you want to try Nvidia's Image Scaling instead of AMD's FSR that is the default. I find this less crips compared to AMD's FSR, but it might render a different result for you depending on your headset.

"renderScale" - Set the renderscale, a lower number will render the game at a lower resolution and upscale to the native resolution set in SteamVR. Try different values here to fit your headset.

"sharpness" - If set this to 1.0 as it worked best for me, however try lowering this and compare the results. Start with this at 1 though.

"radius" - This one is important, this will set how big of an area should be "sharp", default is 0.5. If you want a larger sweetspot, increase this. If you want a smaller sweetspot, lower this.
Lower means better performance, higher means worse performance. 0.5 is a good starting point.


Ingame Graphics Settings [UPDATED FOR 1.8]
In this section we will cover the ingame graphics settings for ACC

These settings will highly depend on what computer you have, use these settings as a baseline and make your own small tweaks.

Tip: ACC has a great feature that allows you to save multiple graphics settings and load them back when needed.

Start off with saving your current settings, give it a name and save it.

Go to Put this file in \Documents\Assetto Corsa Competizione\Customs\VideoSettings

Here you can copy the file that already exists, and rename it to "VR Main Settings" for example.
Then you can edit the file and replace the contents with the following:

{ "resolutionQuality": 60, "viewDistanceQuality": 1, "antiAliasingQuality": 3, "shadowQuality": 1, "postProcessQuality": 1, "textureQuality": 2, "effectsQuality": 1, "foliageQuality": 1, "mirrorQualityLevel": 1, "mirrorFramerateCap": 45, "maxCarsVisible": 11, "isAATemporal": true, "aACustom": 0, "pixelDensity": 1.3500000238418579, "mirrorDistance": 10000, "advancedSharpenFilter": true, "materialsQuality": 0, "temporalUpsampling": true, "volumetricFog": 0, "bloomLevel": 0.30000001192092896, "bloomQuality": 1, "mirrorsResolution": 0, "foliageLodQuality": 2, "carLODSet": 100, "hLODEnabled": true, "shadowDistanceQuality": 0, "frameLimit": 120, "isMBlurEnabled": 0, "colorSaturation": 1.059999942779541, "sharpen": 3, "cameraDirtLevel": 1, "whiteBalance": 9300, "imageExposureGain": 0.48999997973442078, "imageContrast": 0.48999997973442078, "hmdWorldToMeters": 100, "fpsCapUI": true, "useLegacyTonemapper": false, "hDRColorGamut": 2, "hDRUILevel": 1, "contactShadows": 1, "dLSSEnable": false, "dLSSQuality": 0, "dLSSSharpness": 0, "tAAGen5": false, "aMDFSREnable": false, "aMDFSRQuality": 2, "aMDFSRSharpness": 0.20000004768371582 }

If you don't want to go the config editing way, here is some screenshots for you

Ingame Settings:
This is the same config as the config file above


Let's do this right from the beginning, step by step.

Step 1:
Begin with clicking "Manage Custom Video Presets"



Step 2:
Create your presets, usually i would recommend having one for your normal PC screen and one for VR.
In this case, if you already have one for VR, save that and name it, so you can go back to that in case you don't like the new one that we are about to configure.

PS: When switching from Desktop to VR, you need to set VR Pixel Density again, this get's reset everytime i switch.




Step 3:

Now that we have saved our old configs, we can go about and make our new config.
Let's start at the top:
A:



  • Resolution: Doesn't matter, the game will only render in VR anyways.
  • V-Sync: Disabled
  • Framerate Limit: Set this a little bit higher then your VR headset refresh-rate, if you got a beefy computer, try to up this a little bit for a smoother feeling.
  • Menu Framerate Limiter: Enabled
  • Triple Screen: Disabled
  • HDR: Disabled

B:



Resolution Scale: 60% (This will give you a bit more clarity, if you got a highend rig, you could try to up this a tiny bit, lower it to 55% or 50% if you are having performance issues)

View Distance: Mid (Set this to low on lower end PC's)
Shadows: Mid
Shadows Distance: Low
Contact Shadows: Enable
Antialiasing: Epic
Antialiasing Type: Temporal (Try KTAA if you are out of options)
TAA Gen5: Disabled
DLSS: Disabled
FSR: Disabled

C:



Effects: Mid
Post-Processing: Mid <---- Set this to low if you want more FPS.
Foliage: Mid
Texture: High
Mirror Quality: Low
Mirror View Distance: 100 Meters (Useful for online racing, set this to lower if you want less performance impact)
Mirror Framerate Limit: 45 or 60 FPS (Set this to 45 for a performance increase)
Mirror Resolution: Low
Opponents Visibility: 11 (Useful for online racing, set this higher/lower if you need to see more or if you need more performance)

D:



VR Pixel Density: 135%
Virtual To Real Scale: 100% <--- Increase this to make the world scale smaller, makes it easier to spot the apex and can have a performance impact, but not certain.

E:



Materials Quality: Mid
Temporal Upsampling: Enabled
Bloom Quality: Very Low
Volumetric Fog: Disabled (This is a VR killer in terms of performance, always have this turned off)

Foliage Lod Quality: High
Car Lod Quality: 100%
HLOD: Enabled
Advanced Sharpen Filter: Enabled

F:



This section is up to personal preference, except for the "Sharpness" option.


Motion Blur: Disabled
Saturation: 106% (Set this to 100 if you dont want more color)
White Balance: Warm (Set this to neutral if you want, this is up to personal preference)
Sharpness: 300%
Camera Dirt Effect: 1.0
Image Contrast: 0.49
Exposure Gain: 0.49
Tone Mapping: Aces (Set this to whatever suites you best)

Video of improved performance
Here is some videos of the improved config in action (Not updated for 1.8)


Imola Hotlap

With Rain and 29 AI cars on the grid (I'm ♥♥♥♥ in rain):

Following AI - 29 cars on the grid:

Comparison between ACC and IRL:


Summary
Now you should have all the tools needed in order to improve your performance in ACC, however, lower spec PC's might still struggle, even with these tweaks.

Download guide in PDF format:
https://www.racedepartment.com/downloads/acc-vr-the-definitive-vr-performance-guide.48679/

Let me know in the comments if you have any questions about this guide or if you need help with your VR settings.

101 Comments
ebiagini72 Jul 31, 2023 @ 12:08pm 
I've tried to stop the game from showing on the screen setting "spectatorScreenMode": 0,
The game stopped showing on the screen but the screen turned to black and I could not use it at all. Mouse arrow disappeared in VR too.
Hagar Jul 11, 2023 @ 5:09am 
Hey any chance of an update to this?

I've been experimenting quite a bit with a 1080ti, and more recently a 4070 ti, paired to a Rift s.

The result is a reasonably crisp image with 40% headroom in solo, which is plenty for online.

I have spent a lot of hours on this, and I have noticed some strange interactions and dependencies between different settings. Also changing the pixels per display in oculus debug mode can have counter intuitive results.

Below are the important bits, happy to share more.

Oculus runtime (not steam, or Open XR)
-Quality mode

Oculus Debug Mode
-Pixels per display 0
-Horizontal 0.85
-Vertical 0.7

NVIDIA control panel
-as described here

vrperfkit
-Image Scaling disabled
-Fixed Foveated Rendering enabled

Engine.ini
-as described

In Game
-Resolution Scale 100%
-VR Pixel Density 200%
-DLSS and FSR disabled
-Temporal AA Epic, no Gen 5
-Advanced sharpen disabled
-Sharpen 240
LithiumFox Apr 16, 2023 @ 10:17am 
It wouldn't really matter. In fact, it would be worse because the one thing I use the window for is streaming.

The problem is that ACC uses deferred rendering. Epic itself states you should use Forward Rendering for VR due to it's better AA support that works better for VR.

The blurriness and perf issues are simply because it's deferred rendering. Which is why people often praise iRacing and a few other sims for looking sharper in VR.
Fundamentally ACC is worse for VR cause of that choice. (but it's Lighting looks better using deferred)
Laserbeak43 Jan 28, 2023 @ 2:36am 
I feel like we'd have none of these problems if VR games would work exclusively in the headset.
bredsfx Jan 28, 2023 @ 2:29am 
I also use Valve Index but on 90hz, so i set the limiter to 95 at first when the problem popped up. I tried 100 now, the problem didn't appeared, but can you point me what is the advantage from limiting ingame to 100 while the headset cuts it to 90? I'm using nvidia low latency mode on ON, which it limits the CPU max frame render ahead to 1 if i get that thing right, so limiting the fps on that high value shouldn't make much difference.
scuba guy  [author] Jan 27, 2023 @ 12:49pm 
Depends on what hz your monitors are running and what you set the fps limiter to, generally if you don't use any cooky setting there it shouldn't be a problem. All of my recordings above are done with fps limiter set to 145 fps in-game.
bredsfx Jan 27, 2023 @ 8:41am 
I've experienced strange spikes in the frame timing randomly, which leaded to stuttering and losing 30% headroom in the performance graph. But pausing the game (offline) instantly resolved the problem magically until the spikes appeared again.
After 2 days of cursing/investigation i found that the ingame FPS limiter causes the "late start" in the CPU frame timing. It must be set to off @scuba guy.
bredsfx Jan 24, 2023 @ 1:00am 
Thank you for the great guide! I made a great progress with it in the picture quality, it feels much better now than the native DLSS.
I got better result on 5800x3d and 3080 with Index by the changes below. My eyes somehow cant accept the blurriness from the downscaled image, it hurts the sense of space too much for me.

Ingame:
- Resolution scale: 100
- VR Pixel density: 140
- Image contrast: 0.40
- Exposure Gain: 0.65

Steam VR:
- CRM: 130%
- Custom scale: 90%

vrperfkit.yml:
- renderScale: 0.75

nvidiaprofileinspector (i'm not 100% sure if it does anything, but it feels better, please let me know if it's just a pacebo):
- Antialiasing - Mode: Override any application setting
- Antialiasing - Setting: 2x Ms
- Antialiasing - Transparency Multisampling: Disabled
- Antialiasing - Transparency Supersampling: 2x Sparse Grid Ss
Laserbeak43 Dec 1, 2022 @ 3:37pm 
Noted. Thanks!
Freaky Dec 1, 2022 @ 3:33pm 
@Laserbeak43 Absolutely does, yes. Doesn't account for VR Density though, so you just want to keep that around 100% when using it.