DEMOS,

A growing collection of demos and experiments I work on in my free time. All the code is open source and available on GitHub.

ThreeJS Recorder

July 2025

ThreeJS Recorder

Demos the usage of MediaRecorder API to capture video of the ThreeJS canvas as an webm video and save it to device using navigator.share. Also demos how on iOS, saving the WEBM as .mp4 lets you share it on social media.

Rain Puddle

June 2025

Rain Puddle

A demo of rain puddle simulation using Three.js and React Three Fiber. Uses my Three-Custom-Shader-Material library to add the puddle shader to the road material.

Raymarched "Liquid Glass"

June 2025

Raymarched "Liquid Glass"

Fork of my raymarched material using default ThreeJS lIghting demo. Changed material properties to approximate glass.

LiveCodeMay lag on low-end devices.
Car Paint

June 2025

Car Paint

Car paint with flakes. Started this project in 2023, I still dont think it is complete, but I am happy with the result.

Fake Caustics

June 2025

Fake Caustics

Voronoi based caustics simulator. Calculated in screenspace.

Interactive Rug Shader

June 2025

Interactive Rug Shader

Interactive rug shader - A ThreeJS port of @_Dervishh's Unity shader with Physics via Rapier. A Fun project over coffee.

Three-Shader-Baker

September 2024

Three-Shader-Baker

Demo for my library three-shader-baker. A tool to bake Three.js shaders into textures for use in your applications.

Volumetric Clouds

September 2024

Volumetric Clouds

A ray marched volumetric cloud system in React Three Fiber. Based on "Nubis, Evolved" and associated work by Guerrilla Games.

LiveCodeMay lag on low-end devices.
Lit Ray Marching

August 2024

Lit Ray Marching

Ray marched shapes interacting with ThreeJS's default lighting system as if it were just another forward rendered object.

Deferred Rendering

July 2024

Deferred Rendering

Experimenting with deferred rendering in React Three Fiber using a custom WebGL renderer. GBuffer is rendered all in one pass using WebGL Multiple Render Targets (MRT).

"Sunday Afternoon"

June 2024

"Sunday Afternoon"

A study of light and shadows. Using layered soft shadows with alpha from react-three-drei's <SpotLight/>, <ShadowAlpha /> and <SoftShadows />, some of which were also created by myself.

"A Storm at Midnight"

January 2024

"A Storm at Midnight"

An experiemnt in realism in ThreeJS

Stylized Water

August 2023

Stylized Water

A stylized water shader based on @alexanderameye's Unity version. This was my largest shader to date and was intended to teach myself about complex multipass shaders.

Dissolve Shader

July 2023

Dissolve Shader

Small weekend project. Ported @BrackeysTweet's Unity dissolve shader to ThreeJS. There were plans to use this in AR.

Shader Wireframes

April 2023

Shader Wireframes

A demo made for the <Wireframe /> component I had written and contributed to @react-three/drei.

WebGPU w/ React Three FIber

April 2023

WebGPU w/ React Three FIber

An experiemnt into running WebGPU within @react-three/fiber. At the time, this was the first proper integration of WebGPU into the library.

Toon Shader

March 2023

Toon Shader

A Blender inspired Toon Shader. Was attempting to replicate Blender's Color Ramp node in ThreeJS.

Spotlight Shadows

January 2023

Spotlight Shadows

A demo made for the <SpotLightShadows /> component I had written and contributed to @react-three/drei.

HTML amongst WebGL

September 2022

HTML amongst WebGL

This was the first prototype for proper occlusion of HTML elements by 3D WebGL objects. This approach was ultimately too expensive and another approach was found by myself, which made it into @react-three/drei as <Html occlude="blending" />

Photorealistic Meadow

June 2022

Photorealistic Meadow

Challenged myself to create something photorealistic using ThreeJS. Uses Quixel's Megascans (before Fab). My first foray into realism on the web.

LiveCodeMay lag on low-end devices.
Pseudo Height Fog

June 2022

Pseudo Height Fog

Fake height fog effect created by overriding the fog_fragment in ThreeJS' WebGL ShaderChunk system.

Ground Projected Env map

April 2022

Ground Projected Env map

The demo for the ground-projection feature that i had added to the <Environment /> component in @react-three/drei.

Grassy Blob

March 2022

Grassy Blob

My take on WebGL grass. Was created when ThreeJS Grass rendering was in vogue.

Lamina Bunny

March 2022

Lamina Bunny

A demo made for my library Lamina - An extensible, layer based shader material for ThreeJS.

Poloroid of a blob

February 2022

Poloroid of a blob

A demo made to showcase new Vertex Shader layers coming in a new release of Lamina.

Hexagon Terrain

January 2022

Hexagon Terrain

Hexagon based procedural terrain generator. Was created out of a desire to beat my burnout. This was my first demo that got a good amout of attention online.

...and a lot more to come!