Insane gpu utulization issue when camera is inside or player is near particle effects

Since the latest roblox update there have been issues where particle effects somehow cause massive spikes in gpu utulization.

The way we got to reproduce this is by spamming a bunch of particle emitters in an enclosed area ingame but this happens to a lot of other games aswell according to some people i spoke to.



One of the games affected: 🔨Plane Crazy🔨 [UPDATE] - Roblox

Repro steps:

  1. place a bunch of smoke pipes next to eachother.
  2. place a main pilot seat and spawn in.
  3. stand inside of the emitted particles and zoom in with the camera.
  4. look at the gpu utulization in the task manager.

A private message is associated with this bug report

7 Likes

Could you please attach a placefile where we can see and reproduce the issue.
Thanks!

2 Likes

I’ve posted a repro file in the private message.

1 Like

Hasn’t this always happened? For me, a couple of particles close to the camera and taking up 25% of the screen is enough to wreck my FPS.

5 Likes

We’ve tested the current production version and the version a few weeks old and didn’t find significant differences.

It’s expected that rendering thousands of particles fullscreen is performance heavy on GPU. There is a lot of overdraw due to the particles blending.

I have gotten the same issue that the OP has. It’s nothing to do with particle spam. The particle spam itself just ignites the fire that slowly grows to consume GPU resources, and it can persist even after the particles stop rendering.

It also doesn’t depend on how good your PC’s system specs are. It just consumes like 80% to 90% of the GPU consistently across various systems. You can’t even rely on the performance stats or the micro profiler to tell you how much of your GPU is being consumed; it simply does not show it (that’s why the OP attached a picture of GPU usage shown in Window’s Task Manager).

Here’s an example of someone else’s GPU percentage.

Edit: Another example

3 Likes

I have done a test on a game called Ninja Legends (owned by ScriptBloxian Studios). This game was chosen for it’s moderate intensity on use of vfx.

Here is an image of my GPU specs (not very great in comparison to the others, but the results tend to be independent of that as I mentioned before)

For extra context, I set the graphics level to 0 on the client when I did the test. Ideally this should at least optimize out much of the vfx that would sensibly call for greater use of GPU resources. However, it still tends to settle near 70-90% most of the time, and my laptop fans still sound like a jet engine.
This is not something that is called to attention by most, which is understandable, because only a few have reported the issue. However, my friend recently told me that his GPU resource usage percent started to skyrocket to 80-90% when playing some of the usual games he plays on Roblox. Before then, it usage percentage usually settled lower than 30%, and he had a similar GPU type to the ones show in the images from the message this replies to.

3 Likes

Here is my results:
GPU: Nvidia GeForce RTX 2060

2 Likes

Do you by any chance have the video/screenshot/stats from the previous versions of the Client or Studio?
Is it something that just started happening?
Did you update any GPU drivers or Windows itself?

1 Like

Unfortunately, I don’t have any screenshots of the issue on previous versions. The issue itself is something apparently recent to few (not exactly sure why, but could also be the case that many don’t know they have the problem or they just ignore the issue altogether), but because of that it doesn’t get flagged as often as it should. When it does happen, it spans the duration of an entire session until you close the client.
Whether new updates to client caused the issue to recently show itself to some others, I am still not certain about. What I am certain about is that it isn’t fixed when you reinstall the graphics drivers, update windows, or reinstall the client.
The reason why I say I am not certain about it being caused by new updates is because this issue has been happening to me specifically for years, but only recently to all of my friends, and they have far better GPUs than I do.

Surprised no one has mentioned this, but this isn’t a bug.
This is just GPU overdraw issues, transparent particles need to read and compare what ever is under the particle.

This is not a parallel operation, you must do every particle in order, this will make the GPU stall.

Improving Particle Systems on PowerVR - Imagination.

"Using alpha-blended quads can be a simple and effective solution for implementing many particle effects, but unfortunately, it does have some drawbacks.

Lots of alpha-blended particles can lead to a huge amount of overdraw. This is because in order to render an alpha-blended (partially transparent) particle the GPU has to take into account any fragments behind the particle. This means it has to potentially rasterise many more fragments for each pixel than normal, leading to a lot more work. This could be a problem even for relatively small numbers of particles if their on-screen size is large. This is a particular problem for PowerVR and its dedicated Hidden Surface Removal (HSR)."

In games such as Halo 5 Guardians, developers lower the particle emit count if it was too close to the camera in order to keep 60FPS at all times, maybe you can implement something with collection service and lower particle count based on magnitude to camera?

I’m not sure if Roblox changed how particle culling work in a recent update, but please be wary of overdraw, it can really tank perf.