Running my game in standalone on desktop
Any ideas if I am CPU or GPU bound and also
After going into stereo mode (console command “stereo on”)
why is the GPU shooting up to 22 all of a sudden? Is that cause of the double frames it has to render in vr mode ?
thanks all
edit: done some research and quoting [MENTION=10934]The Beej[/MENTION] : "I’m 90% sure the majority of time spent on your draw thread is V-Sync waiting. I think your GPU can’t push out the frame in under 11.1ms, so the whole system has to slow down to 22.2ms for V-Sync. "
Am I jumping to conclusions here by stating that this 22 (which also shows up in that [MENTION=10934]The Beej[/MENTION] comment is some sort of a recurring number which means this is the max the GPU can do here ?
Also in that same thread : “22 ms = 45 fps. I’m not sure for 100%, but i think SteamVR divides framerate by two if it’s below 90, so your actual frame rendering time is lower then 22 ms.”
Well we need more information to see what’s really going on, press ctrl+shift+, for GPU profiler while you’re in stereo mode. The first profile you do takes UE4 longer and usually messes up the timing, so wait a second and take another profile then post that. Also to make it easier to diagnose, post your system specs, the rendering quality settings you’re using, and a screenshot of what you’re looking at when it’s at 22.2ms.
The 22.2ms comes because it’s double 11.1ms. The rift and vive both want to render at 90 fps (i.e 11.1ms per frame) so that people don’t get sick. They also need to have the whole frame rendered before showing it so that it’s not showing half of the previous frame (screen tearing) and they fix that with V-Sync. This means that your game has to render each frame in 11.1ms or less, but if it takes 14.5ms to render, it misses it’s time window to be displayed, so now it has to wait for the next frame so it can display. This is why people sometimes see 22.2ms, because the gpu can’t render fast enough so it can only display every other frame. Don’t underestimate how much more rendering power VR takes, anything that has to be done for every pixel, like shadow filtering and screen space effects take way longer to render in VR than normal games, for example a scene might render in 4ms in a desktop window, but take 15ms in VR.
wow thanks so much for the swift response. Really appreciate it.
I hope I can provide you with everything you are asking.
As you will see - what is actually being displayed when I hit that 22ms is not much … I`m inside an open cube that has a simple tiled texture on it.
A lot of things are going on behind me tho - but when I turn around to face all the things that go on behind me it all stays at the same fps and gpu 22ms, so I really wanted to show you that the 22ms is stable - even when i look at a wall.
mind you: ssr is on in my map
I m running this on an MSI with GTX980 sli (altho the sli does not do anything with ue4 vr so I just put that there to show off xD)
Render quality settings in the editor set to Epic (not sure this is what you meant by “show me your rendering quality settings”)
quick addition - when I turn SSR off in Post Processing volume I max out at 89/90 fps at the same “view” as above
see screenshot at : http://i.imgur.com/ybEwZpJ.jpg
Well there you go, SSR is extremely heavy in VR and doesn’t even work that well (shiny stuff at the edge of your vision will have distracting artifacts). You definitely want to play with scalability settings, especially shadow quality and post processes, like disabling SSR, DoF, and maybe AO if you don’t absolutely need it (baked and stationary lights with no dynamic shadow are quite fast). Also don’t render a lot of transparency or masked materials, because that will cause too much overdraw and also tank your framerate. Basically anything that does stuff for every pixel on the screen is much more expensive in VR, so you have to pick and choose what you can get away with. The shader complexity and quad overdraw visualizations will give you a rough idea of how much what you’re drawing is really costing you in performance.
I would like to thank you again for your time and confirming my initial thoughts on SSR and VR.
Problem is without it the objects do not look “grounded” and reflections are literally all over the place.
I do understand however that all these reflections need to be calculated twice in VR and comes at a significant cost.
One final question perhaps: Is there a way to see/profile the actual gpu load/time BEFORE vsync is applied (assuming vsync is what is causing the 22ms set point) ? I do not believe it is possible to disable vsync anymore through console.
Note: I was using the Sun Temple demo as a reference. Has grounded reflections and solid 90fps in VR. Post Processing volume there has SSR unchecked but NOT set to 0 so I guess it is still ON. Big caveat in Sun Temple in MISC settings PostProcessing. Screen Percentage is set to 100 … that is probably the biggest FPS gain in UE4.
Sun Temple is probably the worst case scenario for reflections in VR, lots of contrast and shiny, flat surfaces. In a real game project I would strongly suggest disabling SSR and just designing your levels to look good with carefully placed reflection probes, because otherwise you’re shutting out a lot of people on weaker hardware. There’s also the distracting SSR artifacts in the periphery of your vision, which I personally find to be very annoying. According to the profile you posted your 980 is spending more than half the frame time on SSR, it’s just not worth it IMO, especially when you could be using that rendering time on higher screen percentage and better AA. But it’s up to you to make the decisions, you should pick a target GPU and make your game look as good as it can on that hardware while maintaining sub 11.1ms frame times.
To see a general overview of VR performance you can open the SteamVR settings->Performance->Display Frame Timing, which will show you how long it actually takes UE4 to render and what the rest of the system is doing each frame. UE4s GPU profiler tells you what each part of its rendering pipeline is costing you.
The checkboxes in the PP volume are for whether the volume should override that setting, if it’s unchecked like you said, then whatever the slider value is set to doesn’t matter because it isn’t being used.