three-nebula

A magical 3D particle system engine for three.js

const emitter = new Emitter();

emitter
  .setRate(new Rate(2, 0.1))
  .addInitializers([
    new Mass(1),
    new Radius(6, 12),
    new Life(2, 5),
    new RadialVelocity(45, new Vector3D(0, 1, 0), 180),
  ])
  .addBehaviours([
    new Alpha(1, 0),
    new Color('#ff2d95', '#0029ff'),
    new Scale(1, 0.1),
  ]);

system.addEmitter(emitter).addRenderer(renderer);

Simple, Powerful API

Choose from a wide variety of particle initializers & behaviors to create truly expressive, dynamic particle systems from textures or 3D objects.

Get started
Design{ } system.jsonLoad & render

Loadable & Portable via JSON

Load your entire system from a JSON object which you can easily share with others or modify for a fast and user friendly development experience.

Read the docs

GPU-Accelerated

Render tens of thousands of particles at a buttery 60fps with the dedicated WebGL & WebGPU renderer — built for scale without dropping frames.

See it in action

Design your particle systems visually – coming to the browser soon!

Nebula has been a desktop editor for Windows, Mac and Linux, letting you design three-nebula particle systems visually — no code required.

Now it's coming to the web: the same intuitive interface, running right in your browser, with your creations exported as JSON.

The Nebula editor