This project uses a ping-pong framebuffer (FBO) simulation pipeline in WebGL + Three.js, where particle positions are updated each frame in custom GLSL shaders using curl-noise motion. The result is a smooth, organic, real-time effect with interactive camera control and live parameter tuning for frequency, amplitude, and max-distance behavior.
