Forum Discussion

Chinook's avatar
Chinook
Rising Rookie
3 years ago

VR 3D render is stuttering and delayed, and here is how I think CM may fix it.

There is a problem that seems fairly common, that VR seems to function very badly, with stutter and wobble and delayed movement, inducing bad nausea and discomfort for a lot of users. I have also seen a lot of users having no problems, and mostly they seem to have an Nvidia card, but there are definitely a lot of people with Nvidia cards that have this problem as well.

I have a Quest 2 and an AMD RX 6900XT and am experiencing stutter and delay. I have spent quite a lot of time in VR, and I think I have identified at least what is different in F1 22 compared to other games in VR.

Disclaimer: I am no computer or software engineer. I am however a low-level software engineer (like ones and zeroes and hardware integration of circuit design) but never fiddled with computer drivers. I'm also writing this in a way I think most people will understand.

First, I have an assumption of how VR normally works: Normally, the headset have one image for each eye, and when I move my head, the new position seems to be read to the game, which can render a new image for my eyes. But this image is not static until I get a new one. The image rendered is a bit wider than my actual field of view, so any microscopic movements in my head are treated by the headset and the picture adjusted. We need this because our head moves a lot, and our eyes have a good ability to stay fixed on an object (fun fact, bird's eyes don't move, so they have a good ability to keep their head spatially stationary, even when walking). If one has a low framerate and moves their head around to look behind them, the movements might reach outside of the rendered FOV before a new image is drawn. This is experienced with a black bar sneaking into one's view from the direction one is moving towards, which disappears when a new updated image is drawn, or the head movement is complete. That means a lot of the movement one sees, is generated within the headset, and not just updated from a new frame. This is why interlaced rendering works so well, or Meta's Asynchronous Space Warp, etcetera. Now, this also happens in F1 22, but only in the menu, or on the HUD elements in-game. Looking at people's reported problems, it seems to work very well in the menus, but not in the car. 

Now comes an observation I have experienced: In other games, take the VR shooter game Zero Caliber as an example, there are moments the game stops rendering, like when loading into a new map, for instance. Usually, games send a black screen frame before entering that loading/receiving/drawing stage right before one spawns in the new map, but for some reason, Zero Caliber doesn't do that. If you keep your hand in front of your eyes the moment it starts to load in the new map, that image will be frozen while loading, and when you look around, you'll see the hand follow you like it's stuck in space in front of you related to your head's movement.

I think this is because the game kind of stops rendering like there is a mode for the headset or something that tells the headset "you're no longer in a 3D space" and the headset stops treating the image with a position or orientation in space. There are other times the games might crash, and then it all just freezes. This happens this way in F1 22 as well, but in Zero Caliber it will look like time stops, and you can still look around. So anything in front of you will still be in front of you when you rotate your head for instance, but if you try to look away, you'll reach the edge of vision rendered, and you'll see nothing. For me, this is how I can tell F1 22 has actually crashed, and not just paused or frozen.

Now comes my theory as to why VR is not working well for a lot of us in F1 22: Since the head is perceived as stuttery or delayed, I believe for some reason, the 3D space in VR in F1 22 is putting the VR headset in a state of not maintaining the spatial orientation of the last frame, and it will for 1/90th of a second follow your head like it's frozen (or 1/72 or 1/120, depending on fps/Hz). After a frame is rendered, the game reads the new head position and starts to draw a new picture, while the finished one is displayed in the headset. If I use my Quest 2 on 72Hz mode, I get a much longer delay of head movement, but on 120Hz mode, it's not much at all. But through any mode, or any graphical setting, the menu, and HUD stay spacially stable in VR, while the 3D world around is struggling to keep at a stable position. If I keep my head perfectly still, I can actually drive for a long time and have been doing so in VR in F1 22, but if I move my head I get tired and unwell very quickly. I once tried to "simulate porpoising" by shaking my head up and down, something I have also done in iRacing to compare, and I got sick within 10-20 seconds, which didn't happen at all in iRacing.

What I think Codemasters should do to quickly fix VR for a lot of people is to somehow make the headset keep the current frame in spatial stability while it waits for the new frame, like most other games seem to be doing.

No RepliesBe the first to reply

About F1® Franchise Discussion

Join other players talking about classic F1® games here.4,985 PostsLatest Activity: 22 hours ago