Jump to content Jump to content

Reverb G2 Microstutter VR fix


Recommended Posts

Hey Kids!

TLDR: for the "I am there" feeling with the G2, Frame rate above 75fps, GPU Frame Time less than 9.0 ms, and CPU Frame Time less than 7.0 ms, Use fpsVR app ($4.99) to check.

Crowd to MEDIUM
Trees to HIGH
Objects to HIGH
MSAA 2x
ANISOTROPIC 2x

All else to ULTRA.

I upgraded from an fully hacked Quest 2 to a G2 and while performance and image was much better, there was this micro-stutter when the scene gets really nuts, like when whipping around a hairpin in cockpit view.

Well I figured it out. I am an image quality junkie. I want to run ULTRA everything all the time. I spend $$$ on this stuff so I want to squeeze every last pixel to my brain. I overclock and tweak a lot. So cool right? lol.

Anyway VR has THREE metrics you gotta meet for the magic to happen, and one more for perfection:

Frame rate. FPS, the old classic. Valve did a lot of research and found that 90 fps is a great sweet spot. While higher is seemingly better, if you throw more frames than the display can render per second you are wasting resources. You want to match refresh rate, which for the G2 that follows the Valve VR plan is 90 hz.

GPU Frame Time. This is the time in milliseconds that it takes for a frame to get created by the GPU and shown by the VR display. It MUST be less than 9.0 milliseconds through the whole VR session for the magic feeling. This is the important part. In low motion or still scenes, performance can appear good if the GPU Frame Time is above 9.0 ms, like at the start of a stage, but as soon as things get wiggly, microstutters.

CPU Frame Time, This is important but secondary to the GPU. The time it takes in milliseconds for the CPU to process sim/game data and send it to the VR headset and other peripherals. More than likely if you have 30 Series card you will have a CPU that will pair with it, but it needs to be less than 7.0 milliseconds. If you have an old system or any kind of VR headset this is good info to know if it is finally time to upgrade.

Headroom. This is more abstract. There is no single number to check for this. VR presents an incredibly dynamic load demand on the PC, with so many different systems requiring peak power from the PC at arbitrary times. For an old hacker like me, this is a playground for optimization and "just a little more" testing, often fun and challenging. This is a nightmare for a Commodity Gamer who spent $$$ and just wants to plug and play. Unfortunately the "friction" of top flight VR is still pretty high, friction being the time from "i want to play" to "START!" with headset on and all. Headroom is essentially; does your system have enough power in reserve at all times in all parts for a sudden say 125% peak demand of resources from average? The Power supply, the Motherboard (deliver power), USB 3.0 bandwidth? sometimes just installing a dedicated USB 3.0 PCI card can work wonders for an older motherboard. So yes. Headroom. Takes experience.

Wow OldManActual you have really shown us a lot a kinda weird technospeak that sorta sounds right but WHAT DO I DO?!!!

Ok calm down.

Here is stuff for all headsets.

Go buy fpsVR. It is $4.99. Just buy it. So worth it.

Get into SteamVR however you do so. WMR, Oculus whatever.

NOTA BENE: If you run SteamVR Home TURN IT OFF.

Navigate to the SteamVR Library and run fpsVR.

Beack to the SteamVR interface.

In the SteamVR interface, at lower left, you should see an fpsVR button. Press that and then go to overlays on the left hand menu. fpsVR is complex looking but look for the drop down that shows Overlay position, and select Lock to HMD.

Next just click the "books" button at the bottom of the SteamVR interface to open the library and choose a game, in this case the beloved Dirt Rally 2.0.

If everything is working you should see this 2D readout box following your headset (kinda in your way) with lots of cool info, particularly the Frame Rate and GPU and CPU Frame times.

So Dirt Rally 2,0 is running and you are in the 2D menus. Things might look ok performance wise, but I doubt it. We are here to test so select Greece or New Zealand and a car you can hairpin in and go to town. Drive with the intent of as much side to side whipping as you can get. We are stressing the system not going for time. Try to glance a the number and see where they are. Of course when the microstutters are there you can stop testing.

So the FPS is probably low and the others high.

FIRST. click the VR controller to get to the SteamVR interface master video settings. You are going to play with the scaling. I had to settle on 68% for a 3080ti OC. YMMV. then you need to go back to the game and back out to the main menu, preferably restart the game. Reducing the scaling percentage should see an immediate performance gain, but it WILL NOT STOP MICROSTUTTERS.

What got the Frame times down for me was setting graphics to high instead of ultra. Instant magic feeling in a stage. Once you feel it you cannot go back. In testing my average FPS was 89.9, Frame times were 4.5 and 3.2 respectively. The scene looks great, the scaling in VR is not what you think it is.

However there are an OCEAN of settings in DR 2.0 between High and Ultra. So I set to the task of setting to ultra, and going through each one, turning it off, testing, turning it back on, and so on for all of them.

All OF THEM.

Crowd to MEDIUM
Trees to HIGH
Objects to HIGH
MSAA 2x
ANISOTROPIC 2x

All else to ULTRA.

Test, test, test. The goal is what level of on screen detail to live with to keep FPS at 90, and Frame times below 9 and 7 ms.

Good luck. It is SO worth it.

VR XML

<?xml version="1.0" encoding="UTF-8" ?>
<hardware_settings_config version="25" deviceId="0x2208">
<cpu>
<threadStrategy workerMapFile="system/workerMap8Core.xml" forceFeedbackProcessor="6" dvdStorageProcessor="7" dataSetMonitorProcessor="4" renderProcessor="0" updateProcessor="2" fileStreamProcessor="5" />
</cpu>
<audio_card>
<dynamic_range value="high" />
<eq value="tv" />
<voice_chat enabled="true" />
<push_to_talk enabled="true" />
<music level="100" />
<replay_music level="100" />
<effects level="100" />
<engines level="100" />
<speech level="80" />
<surfaces level="100" />
<voip level="100" />
</audio_card>
<motion_platform>
<dbox enabled="true" />
<udp enabled="true" extradata="3" ip="127.0.0.1" port="20820" delay="1" />
<custom_udp enabled="false" filename="packet_data.xml" ip="127.0.0.1" port="20777" delay="1" />
<fanatec enabled="true" pedalVibrationScale="1.0" wheelVibrationScale="1.0" ledTrueForGearsFalseForSpeed="true" />
</motion_platform>
<physics environmentalDamage="true" vehicleDamage="true" />
<input device_type="auto" />
<controls neutralTimeToShift="0.25" />
<graphics_card rating="0">
<eyefinity force="" osd="" />
<stereo enabled="false" separation="0.015" convergence="0.5" />
<resolution width="2560" height="1440" aspect="auto" fullscreen="0" vsync="0" refreshRate="60" multisampling="2xmsaa" supersampling="1" taa="1" />
<gamma level="0.000000" />
<hdr level="1.0" />
</graphics_card>
<shaders low_quality="false" />
<textures quality="3" />
<anisotropic target="2" />
<shadows enabled="true" size="2048" maskQuality="1" particles="true" grass="false" />
<particles enabled="true" wind="true" dynamicRes="false" lowResScalar="2" nearFadeBias="0" emissionRate="1.0" />
<weather quality="1" />
<crowd enabled="true" detail="2" />
<cloth enabled="true" tessellation="true" />
<ground_cover clutter="true" enabled="true" lodScaling="1.0" />
<objects lod="1.01" maxlod="0" stones="true" />
<trees lod="1.0" maxlod="0" meshes="true" />
<vehicles characterQuality="4" lodQuality="3" textureQuality="3" />
<track lod="2.0" />
<reflections>
<envmap size="1024" quality="2" scaleminsize="0.75" mindistance="150.0" facesPerFrame="6" />
<ibl probeSize="512" diffuseSize="16" diffuseSamples="128" specularSize="512" specularSamples="128" />
</reflections>
<mirrors enabled="true" width="768" height="256" car_maxlod="1" car_culldist="300.0" />
<skidmarks enabled="true" />
<dynamic_ambient_occ enabled="true" quality="4" />
<dynamic_ambient_occ_soft enabled="true" />
<night_lighting volumes="true" shadows="true" onlyHeadlights="false" shadowSize="2048" renderTrees="true" renderVehicles="true" renderOrganisms="true" />
<anisotropic target="4" />
<aoit enabled="false" />
<avsm enabled="true" />
<postprocess>
<motion_blur enabled="true" replayonly="false" />
<god_rays enabled="true" replayonly="false" />
<chromatic_aberration enabled="true" replayonly="false" />
<bloom enabled="true" replayonly="false" />
<lens_flares enabled="true" replayonly="false" />
<light_streaks enabled="true" replayonly="false" />
<lens_dust enabled="true" />
</postprocess>
<screenspace_reflections enabled="true" replayonly="true" />
<vr enabled="true" eyeDistanceMultiplier="1.000000" lockedOrientation="false">
<motion_blur enabled="true" />
<vignetteless enabled="true" />
</vr>
</hardware_settings_config>
 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...