Hello.
I have simple Niagara system:
One emitter shows sphere: 1 particle for 20 second. Another shows circles on ground: 5 times shows 1 particle. Both particles are meshes.
Material for sphere is set from C++ code. It is dynamic material. In case shield is hit by projectile, C++ code starts timelines, which change progress of propagation of “hit impact wave” (pink circle).

Hit impact propagation is implemented in material. I calculate mask on sphere and use the same mask to offset faces and to color them (the more offset, the more pink color).
Everything works fine if I have only the 1st emitter. As soon as I enable the 2nd one for drawing circles on ground, I have this:
As you can see, pink area goes in front of offsetted faces. In my understanding it is literally impossible, because, as I said previously, the same mask is used for both: offsetting and coloring of hit impact faces
Position of mask on sphere is specified by one single parameter, which is provided by timeline from C++ code. I can provide part of my material, if it makes sense. Also, how is it possible, that adding new emitter (which has nothing to do with this material - it renders another mesh with another material) affects material of the first one?
I noticed that after some time issue disappears and even in case of 2 emitters hit impact becomes correct. It happens approximately after 2nd emitter life time is over + some delay about 5 sec.
I checked amount of displayed particles by Niagara Debugger. Issue is reproduced when there are 2 particles (sphere + circle) and about 5 seconds after there is 1 particle (sphere). After these 5 seconds particle count is still 1, but issue disappears.
I found workaround. If I select GPU simulation for both emitters, instead of CPU sim, issue is not reproduced anymore. But I have no idea why.
Can anyone explain, what is going on?
May be I’m doing something completely weird and what I want to reach is normally done in another way, which engine handles without such issues?
Thank you in advance!



