90-45 fps changes

So, I have fairly a basic scene where I get constant 90fps. There are also some fire effects, particles in the scene. The moment I look at them, fps drops to 45.
Is that normal?
I also observe that there is no screen jarring even if the fps drops to 45 but I wonder what I can do extra optimization for those particle fxs. They’re stock fire particles, with very low draw counts.
Or, as long as there are no obvious screen tearings, maybe I shouldn’t worry about fps dropping to 45, since it is mostly 90, am I right to assume that?

I guess this is an issue related to Vive kicking in re-projection when you cannot steadily maintain 90fps:
https://answers.unrealengine.com/questions/426560/unreal-411-vive-clipped-to-90-or-45.html
Not sure if this is due to SteamVR or UE4, I saw in the past posts suggesting to turn off reprojection in SteamVR settings but it didn’t help in my case.

Always look at ProfileGPU, low draw call does not always mean low milliseconds

Also stock fire particle are very expensive, probably consider another way of implementation

Yeah, just deleted the “lights” from the fire particles and adjusted a bit of screenpercentage, all back to normal. Never thought of particle lights would create such overkill.
Thanks.

The Vive has a hard fixed 90hz draw rate. If your computer isn’t ready to send out the next frame to the vive when the vive is ready to draw, the vive will just redraw the old frame (ie, rendering the same frame twice). So, if you are running at a nice constant 90.0fps, and then your fps drops down to 85, you’ll have 5 frames which couldn’t be rendered in time, so those 5 frames are dropped and the hardware will redraw 5 frames twice so that the HMD still runs at 90fps.

The rift solution is to use an asynchronous time warp (ASW) feature. I’m not 100% sure on how exactly it works, but I think it does some sort of predictive analysis on what it thinks the next frame is going to look like based on some frame delta values. So, if your game framerate drops from 90fps to 85fps, the HMD will still render at 90fps, but it’s not going to drop into reprojection mode, but instead will try to do a predictive scene render based on the delta between the current frame and the previous frame for the dropped 5 frames (I may be totally wrong here). The ASW solution is obviously more elegant than the reprojection solution, but ideally, you don’t want to fall into either backup solution if you can avoid it. Instead, try to hit that 11.1ms timing value between frames at all times and at all costs.

What costs frame time?
-Dynamic light sources of any type
-Quad overdraw (look at your masked and translucent materials!)
-Parallax Occlusion Mapping (super expensive! shows up in your “base render” time)
-Dynamic shadow casting (bake everything you can! Fake the rest!)
-Post Processing Effects. Don’t need it for the next frame? turn it off completely.
-Material complexity

Always look at your GPU visualizer to see what is eating your frame budget! Shaving off even 0.1ms is worth the effort!