Welcome!
Here's some of what I create

0322. Floating Shiny Knot

A remake of an old experiment to produce image-based global illumination for models using Google Street View panoramas. This is the test for fetching equirectangular panoramas from the google servers.

0122. Genuary 2022

Entries for Genuary 2022, 31 days of procedural generation with threejs and WebGL.

1121. Codevember 2021

Entries for Codevember 2021, 31 days of experiments with WebGL, three.js, simulations and post-processing.

1021. Web Unleashed 2021 Opening Titles

Created for the annual FITC Web Unleashed conference.

1021. Inktober 2021 Strange Attractor Sketches

All the non photorealistic renders of strange attractors for Inktober 2021.

0321. Generative art: Lines on flow fields

Particles drawing lines on fields of electrical charges.

1220. F*MMXX

A new year demo to send off this horrible year.

1020. Inktober 2020 Sketch experiments

All the sketches for Inktober 2020 simulating ink.

0620. Obsolidian

Demo for Solskogen 2020.

0520. FaceMeshFaceGeometry

Three.js helper for FaceMesh.

0320. Depth of field experiments - Curl noise

Experiments with Depth of Field with an accumulation buffer.

0220. Particle systems with sphere impostors

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

and here's some of what I write about

1115. Optimising SVG load with Service Worker

How to use Service Worker to optimise the loading of SVG assets in a page without altering coding methods.

0915. Calculating FPS past requestAnimationFrame limit with requestIdleCallback

Using requestIdleCallback to calculate FPS more precisely than with requestAnimationFrame.

0815. Can the new Google logo be 305 bytes?

Techniques and tricks learned while trying to recreate the new Google logo with SVG in 305 bytes (or less!)

0215. cru·ci·form study in architecture visualisation

Some details on how the project came to be, a bit of technical info and lessons learned on the process.

0913. Creating a Spherical Environment Mapping shader

Creating nice lighting with a simple spherical mapping shader. A step-by-step tutorial on how to create a matcap or litsphere material with GLSL and three.js.

1212. Vertex displacement with a noise function using GLSL and three.js

Vertex displacement with a noise function using GLSL and three.js