Render takes 6ms but I still get 45fps in VR. What can I do?

Hello guys! May be someone had the same experience?

I ran the project fine on UE4.19/Oculus Rift CV1/i7/GTX1070 8GB/16GB RAM.

It was constantly 90fps on Oculus Rift CV1.

Then I was forced to update Oculus to new driver and thats where the problem came from.
Now the project sometimes drops to 70-60-50-45 fps. When I try profiling I see that almost ALL the process are in Stall (even RenderThread).
gpu stat shows that render time takes 5-6ms, but at the very same time I have 45fps. I believe it is very strange.
No shaders are compiling, nothing is downloading, all the lights are baked.

V-sync is off, drivers are updated to the lastest, windows is updated.
May be someone has faced the similar problem?

Or at least may be someone can help me with understanding where should I dig into?
Here is the profiling log example: LV_Container-WindowsNoEditor-06-13.01.42.ue4stats - Google Drive

It looks like the headset is running with ASW on all the time. The Oculus run time will lock your frame rate at 45fps if you can’t maintain a constant 90fps. To check if that is what is happening you need to turn off ASW.

Download the Oculus Tray tool from here:
https://www.reddit.com/r/oculus/comments/5okoju/oculus_tray_tool/

Use it to change the Default ASW mode from Auto to Off.

See if you frame rate goes back up to 90fps.

Also try packaging the project and running it independently of the editor. It will typically run faster than VR preview in the editor.

Thanks for reply! Yes I’m talking about packaged version, running standalone.
I believe thats not ASW cause I don’t have static 45 - I have any values between 45-90. If it was ASW it should be either 45 either 90, right?

Hey d3e,

I looked over your profile and without the project to verify what I am looking at I can only offer the following items to look into:

  • Are you doing anything with GPU particles? I see a lot of time in the GPU particle category but I am not sure if this is setup time or a false positive.

  • Are you using the forward or deferred render? I see Temporal AA in your profile so I am wondering if you could try the forward render and see if that gives you better performance.

  • You have some Blueprints that look to be taking a lot of time on the CPU. Here are a few that I feel you should look into.

  • BP_Drone_C is taking around 7 MS on the CPU so check out what that is doing.

  • GameEngineTick is taking around 11 to 17 MS so check out what you are ticking and try and move some items to timers so you can start and stop them.

  • It looks like you have a lot of physics objects or skeletal meshes that have a lot of physics assets on them. Try reducing the number of active physics bodies.

  • Your BP_MOnster Blueprint tick function is rather high so check out what that is doing.

  • I think one of your main issues is the number of animated objects you have per frame. You are sending more animated vertices to the GPU than you have static ones. To fix this make sure that your enemies have full LOD’s. If that does not work try reducing the number that spawns.

Without looking at the project it is hard to say if there are other things that could be causing things to slow down. If I had to make a guess as to why your project is slowing down, my guess would be that you are doing too much on Event Tick and or spawning too many enemies per frame. To fix this I would try and use timers and or find ways to eliminate the use of event tick.

Cheers-

Sam Deiter

Sam BIG thanks for your answer! Yes, I’ve see where performance can be boosted (there were skeletal meshes with collisions, I turned that off) and delete BP_Drone at all for testing.
Got rid of tick events in characters. Yes I’m using Forward Renderer. Not using a lot of particles, tried removing them at all.

I’ll keep on optimizing performance - but the main question is why the same project got 2x lower performance after software update - has someone issued the same problem and what could be done with it?