VR Performance Tweaks & Tips

Discussion in 'General Discussion' started by Thomas Jansen, Apr 19, 2019.

  1. Thomas Jansen

    Thomas Jansen KW Studios Developer Beta tester

    Joined:
    Apr 5, 2018
    Ratings:
    +562 / 0 / -0
    As many will have experienced, RaceRoom is very harsh on performance in VR, mostly because of the old engine hammering the CPU. I will collect some of the tweaks I learned about and explain them here, so everyone can hopefully benefit from them as well. I am very happy with the performance I have now, as I can keep 90fps with basically all the eye candy that is noticeable in VR on (even shadows!), even on race starts with 20 cars visible. This is on my 4770K @ 4.4GHz and a 1080ti, but I am mostly CPU bottlenecked, so any better CPUs will probably give even better performance, even with a slightly lesser GPU.

    OpenComposite (Oculus and Windows 8/10 only)

    In search of better performance in RaceRoom in VR I stumbled upon this thread. The instructions were a bit scattered but I gave it a try and it gave me a HUGE performance boost, made the performance more consistent and reduced loading times. OpenComposite is an awesome project by Campbell Suter which replaces SteamVR as the 'translator' for games that do not have native Oculus support. Unfortunately, at this time the main project does not work with RaceRoom, but @The Iron Wolf did an amazing job at adapting the project to work with RaceRoom, which he published as his own fork. He does not use Oculus anymore, so he will not be able to support the project anymore in case it stops working, but so far 3 Betatesters with different hardware tried it and worked for all of us, so hopefully it will work for most people with an Oculus headset.

    How to install:
    • Go to the x64 folder in the RaceRoom directory (Normally in C:\Program Files (x86)\Steam\steamapps\common\raceroom racing experience\Game\x64)
    • I would recommend renaming or backing up openvr_api.dll as this is going to be replaced with the opencomposite DLL, so if it does not work you can restore the original file to use SteamVR again.
    • Download the latest v1.0.0.0 DLL file from the adapted project, it will be in a zip together with opencomposite.ini , which is required to set the options for OpenComposite.
    • Extract these files to the x64 folder in the RaceRoom directory, if you start RaceRoom in VR now, it should no longer start SteamVR and will most likely crash, as the included opencomposite.ini file is not correct for RaceRoom yet.
    • Edit the opencomposite.ini file to the following (make sure it is formatted on different lines and not all on one line):
      supersampleRatio=1.0
      enableLayers=true
      enableCubemap=false
      threePartSubmit=true
      useViewportStencil=true
      dx10Mode=true


      You can adjust the supersampleRatio to whatever you want, but it seemed to cause worse performance than setting the supersampling in the Oculusdebugtool myself. You can test this for yourself though. If you want to match your SteamVR supersampling setting they are slightly different: 1.5 here would be equivalent to 1.5x1.5=2.25 or 225% in SteamVR, so you can calculate what the equivalent setting would be for you.
    • RaceRoom should now launch in VR without SteamVR launching. This will only work for the 64-bit version of the game.
    Some Remarks:
    • If SteamVR is still launching with RaceRoom, make sure you have extracted the files into the correct 'x64' folder and not the 'Game' folder.
    • If the game instantly crashes, doublecheck you have set the correct values in opencomposite.ini. If that is all correct, you could try the other DLL file in the project. If that does not work either, you can either try to play with the settings in opencomposite.ini to see if your system maybe works with other settings. Otherwise, you can revert back to using SteamVR by replacing the DLL file with the backup of the original one you made. You could try asking the original OpenComposite devs for some suggestions, but as this is not fully their work it's a long shot.
    • Make sure you have done the room setup in Oculus Home, otherwise it's possible that OpenComposite will not work properly.
    • As this is not officially supported for RaceRoom, there is a good chance the files will be overwritten when updating or repairing the game and any update might also cause it to stop working, but since I have only used it for a week now, I don't know yet. Similarly, there is no guarantee it works for everyone and that it improves performance for everyone, so make sure to test for yourself and feel free to report back!

    Recommended Graphics Settings

    Here are the settings I use to achieve 90fps in pretty much any situation with the following hardware:
    CPU: i7-4770K @ 4.4GHz
    RAM: 16GB DDR3 2400MHz CL11
    GPU: Nvidia GTX 1080ti
    VR Headset: Oculus Rift CV1

    • OpenComposite (see above)
    • Oculus Supersampling: 1.3x
    • Oculus ASW: Off
    • Resolution: 1920x1080
    • Toggle Mirrors: On
    • Track Level of Detail: Medium
    • Tiremarks: On
    • Specular: On
    • Shadows: Lowest
    • Car Shadows: On
    • Contact Shadows: 20
    • Shadow Split: Off
    • Multi-Sampling: 4xAA
    • Track Texture Quality: High
    • Car Texture Quality: High
    • Shader Quality: Medium
    • Visible Cars: 15
    All other settings I have turned off or on the lowest setting.

    Graphics Settings Breakdown
    I will list the graphics settings here starting with the settings that have the highest priority for me. For each setting I will explain why I choose a certain setting:
    • Track Level of Detail | Large Performance Impact
      Probably the most important setting when it comes to immersion. I would really recommend setting this to medium above anything else, as the low setting takes away almost all of the character of the tracks. The High setting only adds more spectators as far as I know, so I would not recommend using that setting to save some performance
    • Contact Shadows | Small Performance Impact
      Another important setting for immersion, as this setting controls the shadow under cars, which prevents them from looking like they are floating. This setting should have barely any performance impact, so simply set it to match the amount of cars you have visible. It is especially important if you can't turn on the car shadows option.
    • Car Shadows | Very Large Performance Impact
      One of my favourites when it comes to eyecandy in RaceRoom. This setting controls the dynamic shadows that cars cast. The most important effect for me are the constantly moving shadows you get inside the cockpit as you drive around the track, which really adds a nice level of immersion. Keep in mind that this setting copies the quality setting you set for the overall shadows option.
    • Shadows | Very Large Performance Impact
      This option controls the quality of the static shadows on track and of the car shadows. I would actually highly recommend to keep this setting on 'lowest', not just for performance reasons, but because higher settings only make the shadows sharper. This makes the shadows even more prone to aliasing and I find that the lowest option actually gives a nice illusion of 'soft shadows'.
    • Specular | Unknown Performance Impact
      Another awesome bit of eyecandy, this setting not only controls sun reflections of the asphalt, making it look more natural, but also controls direct sun reflections in the cockpit and on cars. Combined with the car shadows it creates an awesome dynamic feeling in the cockpit as the sunlight is shining from different directions as you go around a track, constantly changing the small visual details. For me it only gives a small performance impact, but I've heard it was quite significant for others, so test for yourself!
    • Multi-Sampling | Large Performance Impact
      This setting removes 'jaggies' and smooths out the image and is very effective on the edges of objects around the track. It is not so effective on trickier edges such as the motec screen in the cockpit. That is why I would highly recommend to combine this MSAA with some supersampling. In my experience the 4x option is the best one, as 8x does not improve the image noticeably with a definitely noticeable performance hit. As this option purely affects GPU performance, you may want to turn it down to 2x on weaker GPUs.
    • Shader Quality | Medium Performance Impact
      The shader quality is the most noticeable when looking at the asphalt, on low it is very plain and light, while there is much more detail on the medium and high settings. There might be subtle differences between medium and high, but I struggled to spot any, so I would recommend setting this to medium, as high can lower performance by a bit.
    • Track Texture Quality | Small Performance Impact
      This setting should not affect performance much, unless you have a low-end GPU with limited VRAM. High quality textures are crucial in VR, so I would always put this setting as high as it can go.
    • Car Texture Quality | Small Performance Impact
      This setting should not affect performance much, unless you have a low-end GPU with limited VRAM. High quality textures are crucial in VR, so I would always put this setting as high as it can go.
    • Visible Cars | Very Large Performance Impact
      This setting controls how many cars can be rendered at a time, which has a huge effect on performance when a lot of cars are in your view or mirrors, especially on race starts. If you are running into performance issues, this is a good option to turn down first. However, with only 10-15 cars visible, I can tell from experience that you may run into trouble with cars very close to you not being rendered in time when driving in a large pack of cars. So, if possible, I would recommend keeping this setting above 15.
    • Particle Detail | Unknown Performance Impact
      This setting controls the detail in effects such as smoke and dirt clouds. It is difficult to determine how much it affects performance as it does almost nothing when there are no effects, but can cause large fps drops when driving through these clouds.
    • Tiremarks | Small Performance Impact
      This setting determines if tiremarks are left on the track or not, it shouldn't cost much performance and is a nice bit of added immersion around the track, so I would keep it on.
    • Shadow Split | Unknown Performance Impact
      This setting is a bit of a mystery, in theory, turning it on should result in nicer shadows, but with slightly worse performance. However, for me it actually boosted performance slightly to turn this on. I found out that this setting makes shadows very jaggy in VR for me, especially tree shadows on the track. It makes it as if the shadows are drawn on the screen in front of you instead of flat on the track. Not sure if that is intended but I'd recommend to turn it off in VR. Anyway, test for yourself and see what works best!
    • Opponent Cockpits | Unknown Performance Impact
      I'm not so sure about this setting, I think it only applies when spectating other cars, allowing you to use the cockpit view in their cars as well. I don't get much performance difference with a lot of cars around me with this setting on or off, so that leads me to believe it does not affect the visuals when you are in your own car.

    The following settings I find are not really visible due to the limited resolution in VR, so I would simply keep them on the lowest setting:
    • Car LOD Distance Setting
    • Car Reflection Quality
    • Rear View Mirror Quality
    The following settings should never be used in VR in my opinion (up to you though):
    • FXAA
    • Bloom
    • Depth of Field
    • Motion Blur
    • Lightshafts
    • Lens Effects
    • Corner Markers
     
    • Like Like x 16
    • Informative Informative x 4
    Last edited: Feb 18, 2021
  2. neil

    neil Member

    Joined:
    Sep 18, 2016
    Ratings:
    +10 / 0 / -0
    Thanks will give this a shot tomorrow.
     
    • Like Like x 1
  3. Heath

    Heath Well-Known Member

    Joined:
    Nov 5, 2016
    Ratings:
    +136 / 0 / -0
    Firstly Thankyou @Thomas Jansen for setting it out so that we could understand the process :D . Secondly after doing some testing I found with the modification I was back to my usual FPS even when using webhub...So yes, definitely helps performance. :), Side note: Had better performance after turning off shadow split.
     
    • Like Like x 1
    Last edited: Apr 19, 2019
  4. Bull Shark

    Bull Shark Well-Known Member

    Joined:
    Mar 14, 2019
    Ratings:
    +162 / 0 / -0
    Thanks for your time on this.. although I always enjoy R3E in VR as it is without the above. Nevertheless thanks and I will try this as well.
     
    • Like Like x 1
  5. Thomas Jansen

    Thomas Jansen KW Studios Developer Beta tester

    Joined:
    Apr 5, 2018
    Ratings:
    +562 / 0 / -0
    Interesting, for me shadow split on gives slightly better performance, which it isn’t supposed to do, so I might be the odd one out
     
  6. FormelLMS

    FormelLMS Well-Known Member

    Joined:
    Apr 8, 2015
    Ratings:
    +229 / 0 / -0
    Great thread. Using this since the first days of the iron wolfes fork. ItsI working very well and I want to do anything to get rid of SteamVR.

    All users have to do a proper room setup in Oculus Home before using open OVR. Without this step it could be, that you can not see the menu.
     
    • Like Like x 1
  7. Thomas Jansen

    Thomas Jansen KW Studios Developer Beta tester

    Joined:
    Apr 5, 2018
    Ratings:
    +562 / 0 / -0
    Will add that to the remarks, thanks!
     
    • Like Like x 1
  8. Bull Shark

    Bull Shark Well-Known Member

    Joined:
    Mar 14, 2019
    Ratings:
    +162 / 0 / -0
    Since I have a triple setup, I have some problems finding a good spot for my Rift sensors. Normally they where placed on my desk left and right at my screen. Good room scale setup etc. Now with a triple setup I sit much closer to my screens and therefor the sensors have a hard time to track me (the rift) as I’m more or less hidden behind my screens. How do you guys solve this? I now have the two sensors placed on the ground just a bit further away than my screens. The sensors are both pointing in my head direction.
    This works good for racing but for roomscale it is a disaster setup of course.
     
  9. FormelLMS

    FormelLMS Well-Known Member

    Joined:
    Apr 8, 2015
    Ratings:
    +229 / 0 / -0
    I have mine on the wall in two meters height. No problems, that they don't see me.
     
    • Like Like x 1
  10. FormelLMS

    FormelLMS Well-Known Member

    Joined:
    Apr 8, 2015
    Ratings:
    +229 / 0 / -0
    @Thomas Jansen I will definitely try your graphics settings, because I'm unable to use shadows even on lowest, because my 5 ghz cpu seems to be unable to do it with 90 FPS.

    In which circuit are you testing? Doing it with 40 AI GT3s on the VLN Nordschleife. No ASW even at standing start from position 16 (do this to have a proper benchmark) but no shadows. Setting shad
     
  11. Thomas Jansen

    Thomas Jansen KW Studios Developer Beta tester

    Joined:
    Apr 5, 2018
    Ratings:
    +562 / 0 / -0
    How many cars do you have visible? That is the biggest performance hit you can have. For example on Silverstone, my frametimes are about 7ms with 30 AI on when none of them are in view, but if I have 30 cars visible and all of them in view, or in the mirror the frametimes go up to 13-14ms, so almost double!
     
  12. Thomas Jansen

    Thomas Jansen KW Studios Developer Beta tester

    Joined:
    Apr 5, 2018
    Ratings:
    +562 / 0 / -0
    Updated the original post with an initial settings breakdown :D
     
    • Winner Winner x 1
  13. FormelLMS

    FormelLMS Well-Known Member

    Joined:
    Apr 8, 2015
    Ratings:
    +229 / 0 / -0
    I have 18 cars visible, because it's an immersion breaker with to less visible cars.
     
  14. Thomas Jansen

    Thomas Jansen KW Studios Developer Beta tester

    Joined:
    Apr 5, 2018
    Ratings:
    +562 / 0 / -0
    I've tested it quickly on VLN with 40 AI, I get around 60-70fps right at the start, but it climbs back up pretty quickly as the field spreads out. This is pretty much the biggest challenge you can throw at it, so it's up to you if you really think you need 90 fps in this case. You could always turn some settings down when you know you are going to do a very demanding combination.
     
    • Like Like x 1
  15. FormelLMS

    FormelLMS Well-Known Member

    Joined:
    Apr 8, 2015
    Ratings:
    +229 / 0 / -0
    Yes, this is the biggest stone you can throw at it, but Spa after the first curve with 30 DTM 2016 cars is it, too. Or Shanghai on the second straight. There are a few things to benchmark the system. :)
     
  16. Bull Shark

    Bull Shark Well-Known Member

    Joined:
    Mar 14, 2019
    Ratings:
    +162 / 0 / -0
    Big bummer is that you can’t choose which version you want to use. I would like to see an option to have multiple settings. Eg, one for use with triple setup and one for use with VR, I now constantly have to alter the settings.
     
  17. Thomas Jansen

    Thomas Jansen KW Studios Developer Beta tester

    Joined:
    Apr 5, 2018
    Ratings:
    +562 / 0 / -0
    This is one thing I was going to add to this post later, you can copy the graphics settings xml file and just rename the one you are not using at that moment. Still some effort, but a lot less than clicking through all your settings :D
     
    • Like Like x 2
    • Agree Agree x 1
  18. Bull Shark

    Bull Shark Well-Known Member

    Joined:
    Mar 14, 2019
    Ratings:
    +162 / 0 / -0
    Ah yes I was already looking for the gfx settings file.
    Renaming can be done with a batch file.. :D
     
  19. The Iron Wolf

    The Iron Wolf Well-Known Member

    Joined:
    Mar 18, 2015
    Ratings:
    +130 / 0 / -0
    @Thomas Jansen just wanted to tell you great write-up on per graphical setting impact. This is very useful

    Are you disabling ASW when you measure perf impact?
     
    • Like Like x 1
  20. Bull Shark

    Bull Shark Well-Known Member

    Joined:
    Mar 14, 2019
    Ratings:
    +162 / 0 / -0
    R3E is one of the few games which perform nice with ASW on. Pcars for example does not feel nice with a fps of 45 in VR. R3E plays good with 45fps.