So I just made a particle system for rain and it looks and works great so far. I tested it out and when I was testing it inside of a building it goes through my walls and ceiling as you can see from this first picture.
This is because scene depth collision uses screen depth, in other words particles collides only with what you see. In the first screenshot you almost not looking at the ceiling, so there is no obstacles for particle up there. In the second ceiling is blocking particles only because you watching it.
There is no solution for this problem where you can still use GPU particles. Actually you need CPU particles, if you don’t want them to go through pixels you can’t see.
Emitter at the left is GPU particles, because of it’s data type (right click on “GPU Sprites” to change). Emitter at the right is CPU particles, because it’s not GPU particles. Difference between GPU and CPU particles in perfomance. My GPU can hold 0.5 million particles at 60 fps. But for CPU it’s only about 50-100k. But GPU uses only scene depth collision, while CPU uses actual colliders in scene.
If we can’t use a CPU because it has a limit 1000 (too small) and we can’t use GPU because particles pass through a wall when you don’t look at the particle spawner, what to do with rain and snow? How to make them properly with large ammount of particles (about 30k)? Thx!
Well, now (UE 4.10) GPU particles has an option which enables distance field collision (in collision module). You need to “Generate distance fields” in Render settings of your project to make this work. This will enable collision for particles even if you don’t see the collision surface. Not working with BSP by the way.
Usually there is no actual collision, there is only volumes, that kills particles. I mean if rain drop tries to go through wall it falls into killer volume and disappears. But now machines became more powerful, so now we can use collision in that case.