I need help creating a space vortex effect with GPUParticles2D

Godot Version

Godot 4.3 stable

Question

Hi there :waving_hand:,
The last few days I’ve been trying to create an effect with GPUParticles2D and I can’t seem to figure it out. I’ve also been unable to find any resources that explain how to get the desired effect I’d like.

What I’m trying to create is something as shown in this picture:


At least, that swirl/vortex shape, with animated particles. So basically stars would spawn off screen, would slowly be pulled towards the center, but there’s also a rotation at play. Ideally, (But that might be way above my paygrade) it would also “slope down” if looked at it from the side. Akin to this grid shape:

I started by spawning the particles in a ring off screen:

Then I got them rotating (Pretty much keeping the same ring shape for now) with orbital velocity like so:

Then, increasing their lifetime, and adding a negative radial velocity I can make the particles move towards the middle:


Recording 2025-08-14 201100

But now I’m stuck how to get a swirl effect, and, if possible, the dip towards the middle. Also, I’m not sure how to make the stars move slower near the middle. I’ve tried to play around with curves, but have been unable to get the desired effect.

So, to sum up:

  1. How can I achieve the swirl effect?
  2. How can I change the speed of the stars during their lifetime?
  3. Is it possible to achieve the dip near the middle? (Or even skew the whole animation altogether?)

Thanks in advance. If there’s more info needed, I’ll happily provide!

Edit: I’m not sure why that last image isn’t playing as gif.
Edit2: Apparently the size section (690x250 in the example below) in image code after the file type (If smaller than the original) renders the gif as still image. Removing that part fixed it. Broken example:
![Recording|690x250](upload://tHmahCOniDhnekxNoMw5TUhKUPt.png)
Working example:
![Recording](upload://tHmahCOniDhnekxNoMw5TUhKUPt.png)

Perhaps this would be easier with gpuparticles3d, does anyone have any experience or tips to get me started?

For the dip in the center, your best bet is a GPUParticleAttractor3D, that might get you the desired effect. (If you decide to use 3D particles instead)

I’ve barely used particles myself, so that’s all I can really contribute.

1 Like

Thanks, I’ll look into that!