SSR is killing my VR DK2 experience, can it be tweaked or just OFF?

So I think I have nailed why my DK2 turns to a horrible juddery mess - I think this setting r.SSR to 0 suddenly makes everything perfect, but no reflections at all from lights on surfaces. Which makes me sad.

I tried different values of roughness from 0.1 - 0.9 but nothing makes it better, just turning it off completely. Its really annoying because I see 350-400 FPS in regular monitor view then switching to VR mode that same scene drops to 40 FPS (what a 90% reduction in FPS!?).

Can anything else affect this horrible performance drop apart from r.SSR? It seems this is the magic bullet in my scene but as I have a lot of candlelight it ruins the effect when its disabled. I have disabled all dynamic shadows etc just all baked in lighting. Its the floor reflections which are killing it - **** you nice shiny wooden floor panels!

Any help or advice greatfully received, im running a i72600K with 780ti superclocked and 16g ram. Although the processor is the weaker link its still unsettling to see quite a bland unanimated scene bring it to its knees.


What happens if you lower SSR quality to 50 or 25 instead of disabling it all together?

To say that SSR brings your scene from 400 fps to 40 leads me to believe that maybe you don’t know some stuff about the Rift. With Vsync on, the Oculus Rift only has two possible frame rates: 37.5 fps (sometimes looks like 40) and 75 fps. The screen inside runs at 75hz, which is why that is the magical number that DK2 developers are trying to hit (and 37.5 is exactly half, of course) If your frame rate fails to exceed 75, then the Vsync will kick it down to your 40. So you could be getting 74 fps (if Vsync were off), but the Oculus software is limiting it more dramatically than you would like. To see what your “true” FPS is, type the console command ‘hmd vsync off’. And sometimes you may need to type ‘t.maxFPS [insert framerate here]’ if you have some frame rate smoothing set in your project settings. Standalone non-Oculus at 1920x1080 should be approximately double the FPS of an Oculus game.

If you already knew all of that, please forgive me for assuming. I’ve recently made a DK2 project and it ran at 90+ fps on a GTX 970 with (tweaked) SSR and a screen percentage ("hmd sp XXX) of 150. And it used those shiny wood panels that I think you may be referencing :slight_smile: It was an ArchViz scene, so it needed to be shiny and realistic.

To make sure you are getting accurate tests, always test in a standalone game and make sure the resolution is consistent. If your regular game is played at 1280x720, but the Oculus plays at 1920x1080, then the test isn’t fair. And ProfileGPU is your new best friend. Just type that into the console command of a standalone game to get a breakdown of almost every rendering feature that your scene is using. It will pinpoint certain blindspots for things that you totally didn’t know about. For example, when I switched my project from 4.6 to 4.7, my scene took a huge performance hit in the Oculus. ProfileGPU revealed that a glitch had set my directional sunlight to movable instead of static. Also make sure that you are using the correct Oculus and Unreal version pairs. UE4 4.7 is specifically designed around OVR 0.4.4. Going a version newer or older should work, but I would recommend playing it safe.

With ProfileGPU, you can see what the actual cost of SSR is down to the milliseconds. If you come back and show me that SSR is taking 30 ms, then I will admit defeat. Until then, let’s try some settings. If you haven’t already, I would recommend watching this talk about UE4 in the Oculus Rift. Lots of awesome advice and insight. Oculus Connect: Integrating the Oculus Rift into Unreal Engine 4 - YouTube

In that video and on the VR forums, you can find a list of settings to try for good performance. I’ll show you what I used to get awesome performance while maintaining lots of SHINY. I went through and tested each of these one by one to see how many FPS I gained, so I know they’re good. They can be made through a console command Blueprint node at the start of game, or they can be put in a few different config files.

hmd sp 150 [setting this to 100 or less will make a blurry picture, but this is by far the easiest way to squeeze extra frames out of anything. 150 is pretty high, so start at 110]
r.FinishCurrentFrame 1
sg.ShadowQuality 1
sg.AntiAliasingQuality 3
sg.PostProcessQuality 2
sg.TextureQuality 3
r.MaxAnisotropy 8
**r.SSR.Quality 3
**r.RefractionQuality 0
r.SeparateTranslucency 0
r.EyeAdaptationQuality 0
r.RHICMDbypass 0
showflag.DynamicShadows 0
r.HZBOcclusion 0
r.BloomQuality 4
r.SceneColorFormat 3
r.TranslucencyVolumeBlur 0
r.TranslucencyLightingVolume 0
r.SSR.Temporal 0 [gets rid of Temporal AA’s grainy dithering]

I’m curious what your Profile GPU spits out. I’d love to come back and help troubleshoot. Sometimes there are genuine glitches and you may have already tried this advice.

@Jacky thanks for the reply, turning it off solves everything but even if its on low it really affects performance.

@StephaBon wow what an amazing response!!! Thanks so much I will try your settings and get back to you. I have been at work all day and did not get chance to reply sooner but really appreciate the comprehensive answer. I will let you know how it turns out i’m off to try cheers :slight_smile:

edit: HOLY ****! What a massive difference!!! That is amazing mate thanks so much! I cannot get the **** thing to judder now no matter how hard I shake my head in the bloom lol

I have noticed though the particals floating in the air are far less and hard to see, but that is a hellava nice trade-off for a judder free experience. The bloom is less too but im guessing these are necessary tradeoffs?

By the way it ‘hated’ r.EyeAdaptationQuality 0 I think, it made all my candles really faint (I think its because I wanted to kill the eye adaption thing so set in a PostProcessVolume and set the exposure min and max to 0.03) and the scene practically went black, I had to put it back in as 1, I think it was that command anyway. Its really hard putting them all in.

Is there a way to easily blueprint them for a demo so people wont have to mess with them? Ideally I would like to have a menu system where they can select a few different options eg none VR low/medium/high and VR low/medium/high. Is there any where where I could obtain these?

Don’t even think about offering any more help on that though unless you include a PayPal email :O)

edit again: If you mean setting this kind of node blueprint, cool ill watch this video some more and I think I can make it from this tutorial cheers :slight_smile: ----> Unreal Engine 4 Tutorial: Menu (english) - YouTube

You’re very welcome! I had these same issues recently, so I’m just paying forward my research. That menu system looks like a great start, and it’s super easy to set all those settings through console command.