Question about using Splines with Niagara GPU vs CPU.

I’ve got a question about using Splines with Niagara GPU vs Niagara CPU. Basically, my spline position doesn’t update when using GPU.

This is my current setup:

  • I need to emit particles from one Blueprint and have them travel along a spline in one of several other Blueprints (whichever is closest).
  • All Blueprints are moving around in the level
  • My Niagara Blueprint stores a reference to the desired SplineComponent and passes it as a UserParameter to the Emitter
  • I have a Scratchpad on the Emitter that gets a position along the spline using SampleSplinePositionByUnitDistance
  • I then set my particle position from the sampled spline position.
  • This works great on the CPU, but on the GPU, the Emitter doesn’t register that the spline is moving around in WorldSpace. It correctly picks the Spline’s initial location, but if the Spline then moves, the location doesn’t update.
  • If I assign a new Spline to the Emitter during runtime, the Emitter correctly picks the new spline and the particles move along it, but again, if the spline then moves, the particles remain attracted to the initial SplinePosition.

Is there any way to tell the GPU version to keep updating the location of the spline each frame?

Also, why is this happening?