Hi ,
I’m building a GPU Niagara system using custom HLSL in a Niagara scratch pad, which is doing a bit math per particle using data from five vector arrays I pass to Niagara from c++. The arrays contain data for each particle that doesn’t change during the simulation (loaded and calculated in c++). There can be many thousands (even over a million on PC) of particles, so I want it optimised as possible as it needs to run on lower end hardware like a Quest 3. It runs quite well, but I can’t find much documentation on how User parameters are processed and I’m wondering if this could be slowing it down. Does anyone know if I would get performance gains using a different method to pass and read data, such as niagara data interfaces and structured buffers or texture lookups? Here is a simplified example of what I’m doing:
TArray<FVector> SomeData; // per particle data saved as vector
UNiagaraDataInterfaceArrayFunctionLibrary::SetNiagaraArrayVector(NiagaraComponent, FName("ArrayVector"), SomeData); // pass data to niagara user paramter
thanks!