Generative art Lines on flow fields

March 2021 Particles drawing lines on fields of electrical charges.


December 2020 A new year demo to send off this horrible year.

Generative baubles

December 2020 An experiment to generate baubles procedurally.

SDF physics

November 2020 An experiment with GPU particles bouncing off volumes defined with SDFs.

Inktober 2020 Sketch experiments

October 2020 All the sketches for Inktober 2020 simulating ink.


June 2020 Demo for Solskogen 2020.


May 2020 Three.js helper for FaceMesh.

Depth of field experiments - Curl noise

March 2020 Experiments with Depth of Field with an accumulation buffer.

Particle systems with sphere impostors

February 2020 Experiments with a particle system that uses sphere impostors, with shading, light, dithered transparency.

Loops 2018-2019

December 2019 All the loops made with looper.

Digital Inktober 2019

October 2019 Loops for Inktober 2019.

Capture the Flag viewer

May 2019 Interactive CTF game explorer, with games of indoor and outdoor procedurally generated environaments where agents train and learn to interact and cooperate.

Infinite Gift

December 2018 The gift that keeps on giving.

Codevember 2018

November 2018 Loops for Codevember 2018.

Digital Inktober 2018

October 2018 Loops for Inktober 2018.

Codevember 2017

November 2017 Entries for Codevember 2017, 15 days of experiments with WebGL, three.js, simulations and post-processing.

WebVR Experiments: Speak To Go

April 2017 Explore the world with your voice. Experiment part of the WebVR Experiments launch.

Dark Haze

December 2016 Christmas Experiments collaboration with Marpi, Bent Stamnes and cbuyukberber: lots of ambiance with pixel texture, smooth music and furry polygons

Codevember 2016

November 2016 Entries for Codevember 2016, 30 days of experiments with WebGL, three.js, Web Audio and procedural generation.

The Polygon Shredder

February 2016 Exploration of curl noise and half cubes pseudo instancing, using WebGL, three.js and some GLSL trickery.


December 2015 Mesh replacement for THREE.Line

X-Mas Virus

December 2015 Entry for the 2015 Christmas Experiments site. A throwback demo of neon flickering lights, made with WebGL, three.js, GLSL and Web Audio.

Día de Muertos 2015

November 2015 Design and customise your own calaca for Día de Muertos

Google I/O 2015 Toy

May 2015 Experiment with physics and analytical local ambient occlusion. Made with WebGL, Web Audio API, three.js, oimo.js and Wagner

Speech Jammer

April 2015 A speech jammer to warp your reality, built with Web Audio API and WebRTC getUserMedia.


January 2015 A study in architecture visualisation with models by @sejnulla. Nice music, glossy reflections, slow travellings, custom shading and postprocessing, using three.js and Wagner


December 2014 Real-time WebGL demo with @cabbibo for Christmas Experiments 2014. Crystal growth simulation, sound processing, custom shading and postprocessing.

It's a message in a Jack-o-lantern

October 2014 Online interactive experience for Halloween, in which the user can carve a stencil into a procedurally generated pumpkin and share it

Decals for three.js

June 2014 Decals implementation for three.js, useful for temporary decorations like bullet impacts, blood splatters, burn or skidmarks; or for weathering effects on objects


December 2013 A 3D tool to create snow thingies, using metaballs and 3D models, in collaboration with @claudioguglieri and @Sejnulla. Lots of 2D, 3D and code goodness!

Bumpy metaballs

December 2013 Isosurface with Marching Cubes, bump mapping with normal mapping and triplanar mapping, shading with a MatCap shader.

Spherical Environment Mapping (MatCap/LitSphere) and Normal Mapping

October 2013 Spherical Mapping (MatCap/LitSphere) with Normal Mapping, using WebGL and GLSL. This is an editor to toy around with different materials, normals and render effects. With subdivision modifier, noise and rim lighting.

NPR Sketch GLSL shader

July 2013 Real-time post-processing shader to create the style of old architectural drawings.

Cross-hatching GLSL shader

June 2013 Blinn-Phong shading and rim lighting. Based on Microsoft Research "Real-Time Hatching" paper.

Shake a flake | Reactive snow

December 2012 A Holidays experimente with reactive snow using WebGL, Web Audio API, WebRTC and localStorage. Blow into the microphone to make the falling snow shake and twirl

It's a Halloween Message!

October 2012 An experiment on procedural generation of meshes and custom shading. In this case, a Halloween pumpkin for a special message

Rocking Dendrites

September 2012 An experiment on custom shading to create a DOF effect, mesh generation and sound visualisation. Play around with the generation settings and drop songs into the experience


September 2012 CCapture.js is a JavaScript library to help capturing animations created with HTML5 canvas at a fixed framerate

Mars Panoramas in WebGL redux

August 2012 A panorama viewer using data from Ashima Group Panorama Viewer that doubles as a Fullscreen API and Pointer Lock API experiment

Adorable Flying Sagan

July 2012 A quick and funny experiment with linked CSS3 transforms and animations and HTML5 audio, using the amazing art by SirMitchell and music by Shugo Tokumaru

Latitude Reflection Mapping

April 2012 First step in a series of experiments toward image-based global illumination for models using Google Street View panoramas. This is the test for an environment mapping shader that uses equirectangular panoramas

CSS3D Clouds

March 2012 An experiment on creating 3D-like clouds with CSS3 3D Transforms and a bit of Javascript

Conway's Game of Life in 3D

September 2011 An eye-candy version on Conway's Game of Life in 3D. An experiments using WebGL with three.js to get familiar with the library

Animated GIF in 3D

September 2011 Animated GIF in 3D uses WebGL with three.js and Drag and Drop API to get a new perspective into animated gifs

WebGL Light Box

June 2011 A pure WebGL light box to show images in a web page. A rework of the previous lightbox that was built using three.js to use only the exact amount of code necessary

The Wilderness Downtown

August 2010 Interactive music video by Google and B-Reel to show the power of HTML5 and Chrome, with music by Arcade Fire and directed by Chris Milk. It features a lot of HTML5 canvas action