# How can I render something like the swirling clouds of Jupiter?

The effect should be as similar as possible to this, though it does not need to be at planetary scale.

I was thinking that it could be done offline via particles, perhaps by directing their motion in some way. Then rendering the frames to a texture and playing these back in a loop for real-time rendering?

But I wonder if there is some other real-time way... maybe mesh patches shaped like swirls can be moved around, after being textured carefully, to imitate the motion of swirls of gaseous matter?

I think you shouldn't use particles for performance reasons. They can indeed give spiral feel, but it's hard to efficiently let particles affect each others' movement. In other words, efficient particle systems usually have no interaction between particles.

In the below photo, it seems more like the clouds are being affected by the nearby environment.

Instead of particles, you could use 2D fluid or smoke simulation, which resolves the problem of interaction with advection of quantities inside the fluid and pressure constraints. An implementation of 2D smoke is detailed in Mark Harris' Fast Fluid Dynamics Simulation on the GPU. There's also this other answer with a brief explanation of fluid dynamics, with other references.

You could use a particle engine or even a fluid dynamics engine, but that will be quite complicated to set up. When you do it in real-time, you will likely run into performance problems. When you precalculate a few seconds long movie sequence from a simulation, you will have problems to get it to loop seamlessly.

But you could reach an almost as good effect by multiple bitmaps.

Start with a static bitmap as a background. Then representing each of the moving bands of clouds with a series of a repeating, tiling bitmaps. Have all these bands scroll horizontally with different speeds. When you let the borders of these bands fade to transparency and let them overlap each other, it should look almost like that.

How about combining techniques. Start with an image (painting, reference, etc.), and modify it to give you initial conditions for a 2D fluid simulation. Run the fluid simulation from these initial conditions for a while and then use the resulting velocity field to advect the source image.