From my limited experience with the Unity Engine, I know that its really simple to make these cool looking particles, that can even interact with other non-particle objects in terms of like bouncing off of them and such.
However I think it's much more difficult to get particles to exhibit any sort of behavior more complex than simple physics calculations, or (correct me if I'm wrong) anything behavior that is dependent on other particles, since you can't parallelize at that point.
I guess it isn't a downside if we only consider using the particle system for very simple behaving objects, and we can approximate more complex behavior with just simple forces too.
keenan
@dchen You can parallelize; it just becomes more complicated. If you have a small number of particles, you can just compute all $O(n^2)$ interactions directly, in parallel. For very small $n$, this is likely just as fast (or faster) than fancier schemes. For larger numbers of particles, you can use hierarchical acceleration schemes reminiscent of those used to accelerate ray tracing of large models. The classic algorithm here is Barnes-Hut... which is often used as an example problem in courses on parallel programming!
From my limited experience with the Unity Engine, I know that its really simple to make these cool looking particles, that can even interact with other non-particle objects in terms of like bouncing off of them and such.
However I think it's much more difficult to get particles to exhibit any sort of behavior more complex than simple physics calculations, or (correct me if I'm wrong) anything behavior that is dependent on other particles, since you can't parallelize at that point.
I guess it isn't a downside if we only consider using the particle system for very simple behaving objects, and we can approximate more complex behavior with just simple forces too.
@dchen You can parallelize; it just becomes more complicated. If you have a small number of particles, you can just compute all $O(n^2)$ interactions directly, in parallel. For very small $n$, this is likely just as fast (or faster) than fancier schemes. For larger numbers of particles, you can use hierarchical acceleration schemes reminiscent of those used to accelerate ray tracing of large models. The classic algorithm here is Barnes-Hut... which is often used as an example problem in courses on parallel programming!