Oculus Low Frame Rate in basic Scene

We have a simple level with a fire, some objects and some glass. It is all standard Unreal materials.

On my laptop I get 75 fps without the Oculus.
The Oculus gets about 45 Frames per Second.

With such a simple scene i would expect something more like 200 Frames Per Second on my laptop.

What settings on the Oculus and Unreal give the best frame rate?

Our scene is running in UE 4.8.3 on an MSI laptop with the following specs:

  • Intel i7-4710MQ 2.5 Ghz
  • 16 GB ram
  • GTX 980M GPU

This is running on battery power as it is un-tethered.

Virtual reality is just really expensive. You should try to read up on optimization you can do within Unreal.

Here is an article:

We are trying the Showdown scene and tricks today.

The embarrassing thing is that we run on both Unity and Unreal and Unity runs it at 75 fps just fine.

I’m sort of the “Unreal advocate” here so i have a bit of skin in the game.

There are some editor project settings you can set to get slightly more performance. Not sure how much it will help but every bit counts.

Engine->Rendering:
-DBuffer Decals: set to DISABLED
-Custom Depth-Stencil Pass: set to DISABLED
-Ambient Occlusion: set to DISABLED
-Motion Blur: set to DISABLED

For really really simple scenes you may get small boost disabling Occlusion Culling also found in the same place.

Also try typing “hmd sp 50” where 50 is a number ranging form 30-300 that changes what resolution is rendered to. Values under 100 are lower resolution and should run faster (indicating you are gpu bound), and values over 100 are like performing supersampling and can be slower.

Also make sure you disable screen space reflections using a post process volume. Use ‘profile gpu’ to check your scene and see what is costing the most time. 11ms is a hard mark to hit but it can be done.

To be hitting 75fps in vr, you should probably see around 150-200fps in the editor itself (with all other windows minimized that is and t.maxfps set to 300).

I did more testing. We are not at all GPU bound. We did a test scene of a single rectangular floor. Nothing else.

I get 500 fps on my desktop machine and a solid 75 fps in the Oculus on both my desktop machine and the MSI laptop (IF it is plugged in).

When I unplug the MSI laptop the frame rate varies between 75 and 40 fps.
But more important, when you rotate (yaw) the scene it appears to be 10 fps even though the render rate is 75 fps. It appears that either the Rotation update rate on the Oculus falls off, or Unreal is doing some sort of CPU intensive process about 10 times a second, making it appear to be 10 fps even though rendering is much faster.

One possibility is that the MSI laptop is reducing the number of cores or threads when unplugged?

As a comparison, Unity runs rather complex scenes at a steady and smooth 75 fps on exactly the same machine, unplugged. In Unity we DID have to do quite a bit of testing to turn off expensive rendering effects, but it was not nearly this difficult.

Ok, here is what it took to get Oculus running at 75 fps on a laptop that is not plugged in.

1.) On the laptop turn off all power settings that slow the machine down when plugged in.
On my MSI laptop this is things like CPU slowing when unplugged. In the Win8 Power Settings.

2.) In the boot configuration turn off Intel Speed Step if your CPU has it.

3.) In your UE4 project use forward rendering. This is set here…

And this…

4.) Turn off everything in the Rendering - Post processing section of the project settings related to occlusion culling, etc.

5.) Change anti aliasing to FXAA

6.) In General setting set the desired frame rate to 75 or 90 (future Oculus will be 90 fps) and use the drop lists to set min and max frame rates to Open.

7.) There is a console command, r.DontLimitOnBattery 1 you need to set on startup too.

And there you have it.

Oh, and you will chew through battery in nothing flat. lol.

More - I found that there is about a 5 per second glitch in smooth yaw and pitch in the headset. I think it is due to Occlusion Culling having to sort so many objects. When I cut the number of objects in my scene in half the tick went away. So the advice here is keep the scene as simple as possible. Tons of little things in the scene will bog down the engine.

If you look at the picture above, every pipe segment, every clamp ring, every little decorative light is an object. So there are tons visible there.