Questions regarding performance, triangle difference and fps lock at 45

I got two questions about performance in VR. I am using Unreal Engine 4.11.2.

  1. For testing I launched the game using the “launch” button to not have any editor overhead. First I use “r.setRes 1920x1080w” to see how performance is in regular mode, then I use “r.setRes 1920x1080f” to switch into VR mode. The editor is minimized all the time. I am not changing my view, the headset is not moved. I am reading the stats from “stat rhi”.

In regular mode, it’s 18,000 triangles and 66 draw calls.
In VR, it’s 170,000 triangles and 340 draw calls.

Why is there such a huge difference? Either the culling is less aggressive so that new meshes appearing if you quickly turn your head is avoided, or it’s all just due to the higher FOV in VR and the fact that everything is rendered twice?

  1. The game seems to be capped at 45 fps once the fps are anything below 90 fps. Can that be avoided or is it forced by how the Vive works? I would like to not go down to 45 fps if I could get solid 85 fps.

Thanks! :slight_smile:

Long shot and probably not the answer, but have you tried switching off frame smoothing under the general settings?

The answer to question 1 is exactly like you state. There is a higher FOV and the fact the engine has to render everything twice one for each display.

The answer to question 2 is that it can not be changed. The Vive Runtime controls the fps and it adapters to the headsets refresh rate to keep it consistant. It will attempt to cap at 90 but if at any point your games fps drops below 90 it will drop down to 45 fps. This is because the headsets runtime will fill in the other 45 fps missing with its own frames in an attempt to hold that 90 fps to prevent motion sickness. There is no way around that but as it is a headset safety measure to prevent people from getting sick. Anything below 90 fps in the headset will result in drifting when you move your head around and that will make your customers toss there chucks faster then anything else.

So in short its just the headset doing what it needs to do to maintain a smooth 90 fps for the headset. While your game may not show 90 fps (if render drops below that) it will still output 90 fps in the headset displays. The runtime just adds in a slight movement to the image to keep the display headmovement smooth.

I believe that is the article where they go into talking about it. Also the same thing will happen if the frametime gets to high. It will cut your fps in order to bring the frametime back down to maintaine that 90 fps in the headset.