Maybe you can give the particles shader a try, and I copy the code from other website, it works fine for the test scenario(I saw the different color though, haaa):
shader_type particles;
uniform int trail_divisor = 2;
float rand_from_seed(inout uint seed){
int k;
int s = int(seed);
if(s == 0){
s = 305420679;
k = s / 127773;
s = 16087 * (s - k * 127773) - 2836 * k;
}
if(s < 0){
s += 2147483647;
seed = uint(s);
}
return float(seed % uint(65536)) / 65535.0;
}
float rand_from_m1_p1(inout uint seed){
return rand_from_seed(seed) * 2.0 - 1.0;
}
uint hash(uint x){
x = ((x >> uint(16)) ^ x) * uint(73244475);
x = ((x >> uint(16)) ^ x) * uint(73244475);
x = (x >> uint(16)) ^ x;
return x;
}
void vertex(){
uint base_number = NUMBER / uint(trail_divisor);
uint seed1 = hash(base_number + uint(1) + RANDOM_SEED);
uint seed2 = hash(base_number + uint(2) + RANDOM_SEED);
float rand1 = rand_from_m1_p1(seed1);
float rand2 = rand_from_m1_p1(seed2);
VELOCITY = vec3(100.0 * rand1, 100.0 * rand2, 0.0);
COLOR = vec4(fract(rand1), fract(rand2), sin(TIME), 1.0);
}
Create a ShaderMatierial for your Particles2D node, add new shader script and copy-paste to it, plz try with a different value of paramters.
Hope this helps.