Cpu particle limit?

Frome some unknow reason i can’t spawn more then 1000 cpu particles. With gpu everything works fine, engine spawns every crazy amount on demand. Is there some deep setting i dont know about? Some ini file? I cant find the reason for this any where. Thanks in advance :wink:

Im not sure I fully understand myself but Ill try to explain as good a I can with the knowledge I have.
The gpu is much better equiped for particles than the cpu is, gpu particles do have their limitations (and those limitations arent there when using cpu particles) but overall taken for general visual-only particles the gpu has a much better pipeline for rendering them.

The cpu is still telling the gpu to spawn them but the calculations themself are done on the gpu and it does that much faster than a cpu can (because the cpu is also busy with other calculations) and while there are features gpu particles lack (light emission, material parameter control, attraction module, Beam, Ribbon), they make up for it by the shear number of particles it can spawn. (I tried 100.000.000 for fun and after the innitial load the first time it spawned them near flawlessly every time).

so in this case if you really need to spawn 1000 particles it might be because either the cpu is not powerful enough, or has so many other instructions it needs to run that it cant keep up with the particle load and their calculations per (mili) second.
unless you really need all these particles to have light emission, material param. control etc… you might be better off to make the gpu spawn these particles.
and you could always mix it up, have some of the particles on the cpu with some of the instructions the gpu cant handle and let the gpu showcase the rest of the particles in bizarre amounts.

/luostalk

Thx for reply :wink: It seems that this number is some inner setting becouse i dont have a killer performace problem with them and i can’t get bigger amount of particles even in preview window. The heart of the issue is that I would really love to use sub uv’s. I have 64 different maps for them packed nicely in 8 by 8 matrix on the texture. Having 64 separate textures not only seams like a lot of cliking, it probably wouldn’t be performance friendly either. And it would require 64 emiters in the particle system. Technically I could just place 10 particle system in one place and I would get myself to around 9000-10000 particles I need, but it all seems like some really unnecessary work around.

Hey Mikiok -

By default the maximum number of particles allowed per emitter for a CPU System is 1000, and for a GPU it is 1024^2 per emitter per frame. You can increase the number allowed by adjusting the console variable, ‘FX.MaxCPUParticlesPerEmitter’ I post this with a warning about increasing the value and having major performance issues down the line. If at all possible I would recommend using a GPU emitter instead.

Thank You

Eric Ketchum

Hi guys!

We can’t use a CPU because it has a limit 1000 (too small). We can’t use GPU because particles pass through a wall when you don’t look at the particle spawner.
So, what to do with rain and snow? How to make them properly?
Thx!

Is there a way to globally limit the maximum number of particles spawned?

CPU sprites are limited to the processing power of the CPU as well as any other CPU actions occurring at the same time as the CPU particle system is being rendered. For this reason the actual limit will vary. The Max Draw Count is just a number set to the maximum allowed particle count instead of the number of particles that can actually be rendered. Once the limit is reached the emitter will stop emitting particles, there is not much you can do once this happens. tellthebell

Is there any particular reason you need to use CPU sprites? Switching to a GPU sprite type-data will allow much more efficient rendering of the particle system, will likely increase your framerate, and it allows much higher numbers at the same time. All you need to do is right click on the emitter and select “TypeData” then choose “New GPU Sprites”. So long as all of the emitter parameters can be used with GPU sprites it should be all you need to do. If any come up with an error, right click to see if there is an equivalent module available and transfer over the parameter values.

If there is no particular reason to use CPU sprites, I would recommend switching it over to GPU. Hope that helps!

hehe, quite the reply on a 4 year old post but very accurate as well :slight_smile:

In the game there are exploding barrels you can place 2000 of them if you want. When they blow they can all explode together and when that happens each one spawns an emitter and this can cause a severe slow down on a console. Is there a way to limit the total particle count in a frame globally, like you can do with destructible meshes you can say limit to only 2000 chuck ever being in the scene and anymore will not spawn or will be destroyed.