Volver al ranking

drawcall/Proton

JavaScriptdrawcall.github.io/Proton/

Javascript particle animation library

particlesparticlejs-particleparticle-engineparticle-systemcanvaswebglparticles-library
Crecimiento de estrellas
Estrellas
2.5k
Forks
283
Crecimiento semanal
Issues
14
1k2k
jul 2013nov 2017mar 2022jul 2026
Artefactosnpmnpm install proton
README

Proton is a lightweight and powerful Javascript particle animation library. Use it to easily create a variety of cool particle effects.

Check out examples at http://drawcall.github.io/Proton/. The 3D version of the proton engine is here here. An available react version is here.

For guidance on how to use Proton with TypeScript, please refer to https://github.com/drawcall/Proton/issues/109

Features

  • Easy to use It takes only a dozen lines of code to create a particle animation effect.
  • Multiple effects Use Proton to create flames, fireworks, bullets, explosions, and more.
  • Any scene You can use it in frameworks such as react, vue, angular, and pixi.js, Phaser, etc.
  • Efficient rendering Its rendering efficiency is very high, you can render tens of thousands of particles in the page.
  • Simulated physics Proton can simulate various physical properties including gravity and Brownian motion.
  • Several renderers Proton provides a variety of renderers, of course you can also customize your own renderer
    • CanvasRenderer - Proton's canvas renderer
    • DomRenderer - Proton's dom renderer, supporting hardware acceleration.
    • WebGLRenderer - Proton's webgl renderer.
    • PixelRenderer - Proton's pixel renderer, It can implement pixel animation.
    • EaselRenderer - Easeljs proton renderer.
    • EaselRenderer - Pixi.js proton renderer.
    • CustomRenderer - Use a custom renderer that can be applied to any scene.

Documentation

See detailed documentation please visit https://projects.jpeer.at/proton/. Thank you very much @matsu7089 for writing a good tutorial.

Installation

Install using npm

Note: NPM package-name has been changed from proton-js to proton-engine

npm install proton-engine --save
import Proton from "proton-engine";

OR include in html

<script type="text/javascript" src="js/proton.web.min.js"></script>

Usage

Proton is very simple to use, a dozen lines of code can create a particle animation.

import Proton, {
  Emitter,
  Rate,
  Span,
  Radius,
  Life,
  Velocity,
  Color,
  Alpha,
  CanvasRenderer,
} from "proton-engine";

const proton = new Proton();
const emitter = new Emitter();

//set Rate
emitter.rate = new Rate(new Span(10, 20), 0.1);

//add Initialize
emitter.addInitialize(new Radius(1, 12));
emitter.addInitialize(new Life(2, 4));
emitter.addInitialize(new Velocity(3, new Span(0, 360), "polar"));

//add Behaviour
emitter.addBehaviour(new Color("ff0000", "random"));
emitter.addBehaviour(new Alpha(1, 0));

//set emitter position
emitter.p.x = canvas.width / 2;
emitter.p.y = canvas.height / 2;
emitter.emit(5);

//add emitter to the proton
proton.addEmitter(emitter);

// add canvas renderer
const renderer = new CanvasRenderer(canvas);
proton.addRenderer(renderer);

Remarks

  • Proton.Span (or Proton.getSpan) is a very important concept of the Proton engine, it's everywhere. If you understand its usage, you can create almost any desired effect!

  • If you want to create wind, rain, or snow, etc, you can use the emitter.preEmit method to pre-render the scene.

  • Use Proton.Body and Proton.Color at the same time. I suggest you'd better use the WebGLRenderer not CanvasRenderer.

  • Added Proton.Cyclone behavior, you can make vortex effects with Cyclone. Demo please check here.

  • proton.fps In modern browsers, if the FPS exceeds 60 and you want to maintain a stable 60 FPS, you need to set proton.fps = 60. You can set this property when the game engine has fixed fps or some browsers have a higher refresh rate.

  • Use Euler integration calculation is more accurate (default false) Proton.USE_CLOCK = false or true;.

Proton has now been upgraded to the v4 version. Performance has been greatly improved and api also has some improvements. For more details, please check here.

Building

node is a dependency, use terminal to install it with:

git clone git://github.com/drawcall/Proton.git

...
npm install
npm run build

And run example

npm start
//vist http://localhost:3001/example/

Changelog

Detailed changes for each release are documented in the release notes.

License

Proton is released under the MIT License. http://www.opensource.org/licenses/mit-license

Repositorios relacionados
catdad/canvas-confetti

🎉 performant confetti animation in the browser

JavaScriptnpmISC Licensecanvasconfetti
catdad.github.io/canvas-confetti/
12.7k466
tsparticles/tsparticles

tsParticles - Easily create highly customizable JavaScript particles effects, confetti explosions and fireworks animations and use them as animated backgrounds for your website. Ready to use components available for React.js, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Inferno, Solid, Riot and Web Components.

TypeScriptnpmMIT Licenseparticlestypescript
particles.js.org
8.9k948
michidk/Unity-Script-Collection

A maintained collection of useful & free unity scripts / library's / plugins and extensions

GNU General Public License v3.0unity-scriptsunity
michidk.github.io/Unity-Script-Collection/
6.3k652
hustcc/canvas-nest.js

:cancer: Interactive Particle / Nest System With JavaScript and Canvas, no jQuery.

JavaScriptnpmMIT Licensecanvascanvas-nest
git.hust.cc/canvas-nest.js
4.3k809
EmergeTools/Pow

Delightful SwiftUI effects for your app

SwiftMIT Licenseiosswiftui
movingparts.io/pow
4.3k195
DanielMartinus/Konfetti

Celebrate more with this lightweight confetti particle system 🎊

KotlinISC Licenseandroidkotlin
3.4k312
hunar4321/particle-life

A simple program to simulate artificial life using attraction/reuplsion forces between many particles

HTMLMIT Licensecppeducational
3.3k341
whxaxes/canvas-test

🎮 happy canvas

HTMLMIT Licensecanvasjavascript
whxaxes.github.io/canvas-test/menu.html
2k984
raphamorim/awesome-canvas

A curated list of awesome HTML5 Canvas with examples, related articles and posts.

MarkdownMIT Licensehtml5-canvascanvas-element
1.8k172
vaneenige/phenomenon

⚡️ A fast 2kB low-level WebGL API.

TypeScriptnpmMIT Licensewebglparticles
1.8k47
layabox/LayaAir1.0

This is old LayaAir veriosn writetten by ActionScript 3.0 ,now LayaAir is using TypeScript as the Engine Script,Please use https://github.com/layabox/LayaAir instead.

JavaScriptnpmOtherwebglhtml5-engine
layabox.com
1.8k424
layabox/LayaAir-v1

This is old LayaAir veriosn writetten by ActionScript 3.0 ,now LayaAir is using TypeScript as the Engine Script,Please use https://github.com/layabox/LayaAir instead.

JavaScriptnpmwebglhtml5-engine
layaair.com
1.8k420