Niagara and vfx optimization how?

Hi everyone,
i’m a little a bit new of world of VFX for games, atm i’m working with a friend for produce an video reel with programmer (my friend) and me vfx, not to much big, but i need help for optimization on my vfx.
i have one main vfx active is a boss entrance ispired to elden ring boss arena entrance, this vfx have a smoke effect, done with sprite render and sub uv animation with classic smoke free texture finded on store, this smoke age must be about 6/7 sec longer and have slowing movemente in random direction on x axis this is ok, but i have problem with overdraw i think, if this vfx stay active for more 30 sec or les fps begin to go down.
Material is translucent
Trying to make it more optimized i have reduce particle set as gpu emitter, set distance culling, but using shader complexity view this is the result

so how is the right method to optimize these vfx? what can i use it to check performance and how it work?

1 Like

This view checks the overdraw of your effect (how many pixels the effect takes x how many layers of translucency there are).

If it’s just for a video reel, then you don’t have to worry about the optimization, but if it will be playable then there are couple of things you can do:

  • Reducing amount of smokes overlapping with each other.
  • Making them smaller.
  • Adding dithering (it would remove all the overdraw at the cost of visuals, but it might be good enough for project like this.
1 Like

Really thanks i’ll try it.
Ye the showreel want be a video gameplay with programmer stuff and mine vfx

1 Like

You can use the Niagara profiler to check the performance of your systems. Definitely, you can try to adjust your flipbooks to cover more space in the sprite sheet - in that way, you could spawn fewer particles and reduce overdraw issues. Maybe add more velocity/force to stop holding that amount of the particles in one place.
As Manus said, you can go with a dither node but the basic function from Unreal is ugly, so you can create your own dither node to adjust the overall look.
For the middle-filled mesh, you could go with masked material, so you will avoid translucency issues.

1 Like

Really thanks, these are really good tips, at least to improve the vfx I have increase size of sprite, reduced spawned particle, fixed some else stuff like speed and shape of spawn, the result was good and overdraw is really reduced.
Really really thanks
If have some else tips I would appreciate it

1 Like

I would suggest enabling particle cutout on the sprite renderer, this can drastically reduce the overdraw by creating a tighter fit to the visible part, even using more verts 8 instead of 4 is usually better for performance if it cuts off more of the transparent parts of the sprite.

I usually add a module to my particle update to turn off the sprite rendering when the particle alpha is below a threshold to stop overdraw from particles that contribute little.

Along with the above I like to put in a module to fade particles near the camera to prevent filling the screen with transparency.

I was thinking about how to optimize it more, you could create custom function for camera blend distance and normalize distance range with position.

Thanks all, for these tips i hope this can help too newbie like me ^^