Niagara particles not optimized for Ray Tracing

I’ve been working on a realtime ray tracing game with Unreal 4.24 and was doing some testing with my lighting and particle systems. I kept getting slower and slower frame rates the longer I had my test scene open and for the longest time could not figure out what was happening. I eventually discovered that the data being pushed to OcclusionSubmittedFence Wait under stat SceneRendering was the only observable data that I could see being effected in the scene.

After much troubleshooting I finally figured out that the problem was with how Ray Tracing and Niagara particle systems are currently working with each other. If I disabled my Niagara systems the frame rate loss would disappear. Also if I did the opposite and disabled ray tracing once again the issue was resolved. Only when both were active did I find this issue occurring. Unfortunately after scouring the web and Unreal’s documentation I couldn’t find any information related to what data was relevant to OcclusionSubmittedFence Wait.

I tried troubleshooting everything I could within the Niagara particle systems I had setup. I tried reducing the particle count down (even to the point that each system was only outputting a few particles) but the issue persisted. I had about 10 systems running in loop in my scene, and each of them had about 5 FX applied to them (big flame, medium embers, small embers, dust, heat dispersion). After playing with numerous settings in and outside of the particles systems, their materials, and the lights I finally decided to recreate the particles using the Cascade particle system.

BINGO. After reverting back to the older cascade particle system my issue was fixed. I had setup the system with the exact same number of particles with the same behaviors, but no more performance drop over time. I wanted to share this here in case anyone else ran into this issue and started beating their head against the wall as I have been over this past week.

Conclusion: Whatever information is being sent between the Niagara particle systems and the renderer when using ray tracing causes a slow back of data to the OcclusionSubmittedFence Wait channel. The more particle systems and particles, the faster the backup occurs.

I’ve included some screen shots of a test scene I setup to illustrate this point. I left both systems run for an hour in a scene with ray tracing enabled, and by the end of that hour the Niagara systems caused the FPS of the scene to drop nearly 50%.

Thanks for posting this, I just ran into this same issue and was stuck.

Were you able to get either of them to work at the same time? Have you been paying attention to see if this will be fixed in 4.26