Open-source character animation engine, MIT licensed. About 6 months of work. Renders animated mascots in Canvas 2D or WebGL 3D.
For v3.4.1 I wrote 8 elemental shader systems from scratch: fire, water, ice, electricity, earth, nature, light, void. Each one has its own GLSL fragment shader, GPU-instanced models, an overlay that paints onto the mascot mesh, bloom control, and atmospherics. Ice does Snell's law refraction with chromatic dispersion. Electricity is 3-scale 3D Voronoi edge-distance. Fire decouples color from alpha so additive stacking doesn't wash out.
I didn't need 8. I built them to see if the architecture actually repeats. Every element follows the same template: factory, instanced material, overlay shader, gesture configs, registration. 161 gestures across all 8, composed from about 12 archetypes (crown, helix, vortex, barrage, pillar, etc).
The idea is that you can clone one element, swap colors and models, and have something working in days. If you write shaders, go deep on the material. If you don't, the defaults are fine.
Hit shuffle in the demo. Press G for the GPU monitor.
`npm install @joshtol/emotive-engine`