public 3d-motion repository

particles

// danlex/particles

61 real-time GPU particle animations — strange attractors, fractals, physics simulations, sacred geometry. 65,536 particles each, fully GPU-computed with Three.js + WebGL. Live gallery with mouse interaction.

$ git log --oneline --stat
stars:0forks:0updated:2026-04-12
README.md
readonly

Particles

GitHub Pages Animations Three.js License: MIT

A gallery of 115 real-time, interactive GPU particle animations. Each runs 65,536 particles entirely on the GPU using Three.js r160 and GPUComputationRenderer.

View Live Gallery


Features

  • 115 unique animations across 13 categories
  • 65,536 particles per animation (256x256 GPU compute texture)
  • Mouse interaction — particles react to your cursor in every animation
  • Real-time controls — Speed, Bloom, Size, Hue sliders + zoom buttons
  • Category filtering — filter by Attractors, Fractals, Physics, Nature, etc.
  • Random button — discover animations serendipitously
  • Zero build step — pure HTML + ES module imports, no bundler needed
  • Auto-deploy — pushes to main deploy to GitHub Pages via Actions

Categories

Strange Attractors (15)

Lorenz, Aizawa, Thomas, Halvorsen, Rossler, Chen, Clifford, Four-Wing (Qi), Dadras, Chua, Burke-Shaw, Rabinovich-Fabrikant, Nose-Hoover, Shimizu-Morioka, Lu-Chen, Sprott

Iterated Maps (3)

Hopalong (Barry Martin), De Jong, Pickover

Parametric Surfaces (7)

Torus Knot, DNA Helix, 3D Lissajous, Fibonacci Sphere, Spherical Harmonics, Supershape (Gielis), Hopf Fibration

Topology (2)

Klein Bottle, Mobius Flow

Minimal Surfaces (1)

Gyroid (Schoen triply-periodic minimal surface)

Implicit Surfaces (1)

Metaballs (morphing isosurface)

Physics (6)

Magnetic Field, Ocean Surface (Gerstner waves), Vortex Rings, Chladni Patterns, Wave Interference, EM Wave

Astrophysics (4)

Galaxy Spiral, Galaxy Collision, Black Hole (accretion disk), Supernova

Chaos Theory (1)

Double Pendulum (sensitive dependence)

Gravity (1)

N-Body (4-attractor orbital dynamics)

Nature (4)

Aurora Borealis, Jellyfish, Fireflies, Tornado

Effects (4)

Fireworks, Plasma Ball, Curl Noise Flow, Starfield Warp

Fractals (4)

Menger Sponge, Fractal Tree, Lichtenberg (dielectric breakdown), Apollonian Gasket

4D Fractals (1)

Quaternion Julia Set

Sacred Geometry (3)

Flower of Life, Mandala, Geometric Paradox (morphing impossible shapes)

Biology (2)

Turing Patterns (reaction-diffusion), Phyllotaxis (golden-angle botanical spiral), BZ Spirals (Belousov-Zhabotinsky)

Run Locally

No build step, no dependencies, no npm. Just a static file server:

git clone https://github.com/danlex/particles.git
cd particles
python3 -m http.server 8765
# open http://localhost:8765

How It Works

Every animation follows the same GPU-compute architecture:

┌─────────────────────────────────────────────────┐
│  GPUComputationRenderer (256x256 RGBA float)    │
│  ┌───────────────────────────────────────────┐  │
│  │  Position Shader (fragment)               │  │
│  │  - Reads previous (x, y, z, w) per pixel  │  │
│  │  - Computes new position via:             │  │
│  │    - RK2 integration (ODEs/attractors)    │  │
│  │    - Iterated map (De Jong, Pickover)     │  │
│  │    - Analytical formula (parametric)      │  │
│  │  - Writes (x, y, z, speed/field/etc)     │  │
│  └───────────────────────────────────────────┘  │
└─────────────────┬───────────────────────────────┘
                  │ texture
┌─────────────────▼───────────────────────────────┐
│  Render Pipeline                                │
│  ┌─────────────┐  ┌──────────────┐  ┌────────┐ │
│  │Vertex Shader │→ │Fragment Shade│→ │ Bloom  │ │
│  │- Read texture│  │- Circle point│  │(Unreal)│ │
│  │- HSL→RGB     │  │- Alpha fade  │  │        │ │
│  │- Point size  │  │- Additive    │  │        │ │
│  └─────────────┘  └──────────────┘  └────────┘ │
└─────────────────────────────────────────────────┘

Controls on Every Animation

ControlWhat it does
Speed sliderSimulation time scale (0.1x to 5x)
Bloom sliderGlow intensity (0 to 3)
Size sliderParticle point size (0.5x to 4x)
Hue sliderShift the entire color palette
+/− buttonsZoom in/out (scales the whole animation)
MouseParticles are attracted toward cursor
DragOrbit camera around the scene
ScrollZoom camera in/out

Tech Stack

ComponentTechnology
3D EngineThree.js r160
GPU ComputeGPUComputationRenderer
Post-processingUnrealBloomPass (half resolution)
CameraOrbitControls (auto-rotate)
HostingGitHub Pages (static)
CI/CDGitHub Actions
SEOOpen Graph, Twitter Cards, JSON-LD, sitemap.xml

Contributing

Want to add an animation? Every animation is a single self-contained HTML file. Use lorenz-attractor.html as your template:

  1. Copy an existing animation HTML file
  2. Replace the position shader with your math
  3. Adjust camera, scale, and coloring
  4. Add a card + preview function to index.html
  5. Follow the quality rules in CLAUDE.md
  6. Submit a PR

License

MIT

metadata.json
HTMLanimationattractorchaos-theoryCreative CodingdemoscenefractalCreative Codinggithub-pagesShadersgpgpugpumathematical-visualizationparticle-systemparticlesSimulationsShadersThree.jsWebGL

[INFO] 7 topics link to curated motion topic pages.