Here is a selection of my Shadertoy shaders from over the years, presented in a 'blog' style with most-recent at the top. All of my Shadertoy shaders can be found on my userpage here.

All of my Shadertoy shaders are licensed under Creative Commons CC BY-SA 4.0.
You can download a local backup of my publicly-published Shadertoy shaders as a single JSON file here.

Variegated Tiling September 2020

A simple way to create a tiling with varying cell sizes.

Triangle Grid Traversal September 2020

Simple and robust triangle grid traversal. It's similar in nature to IQ's hexagon traversal: This was put together quickly, so it's not as polished but takes some inspiration in the visuals too. :)

Raytraced Swept Surface II August 2020

Another quartic surface. This time it's a line segment swept along two independent quadratic Bezier curves.

Raytraced Swept BSpline Surfaces July 2020

Raytracing a surface-of-revolution defined by a 1D quadratic uniform B-spline. This involves the solving of a quartic equation. I used Shane's generalised quartic solver and added some tricks on top to improve the precision and numerical stability.

Helix Distance Estimator July 2020

Approximate distance to a helix-like shape (actually a swept disc, hence the fact that the inner radius only applies in the XY plane at each point of the helix coil). Rendered with sign distance field raymarching.

Wythoff Uniform Tilings +Duals February 2020

All of the Wythoff-constructible Euclidean uniform tilings (10 out of 11), constructed with the Wythoff method of repeatedly reflecting a base triangle through its edges across the plane. Drag the mouse to see all the tilings. Hold LMB to see the dual tiling.

Bijective Weighted 3Gon Sampling February 2020

Analytic approach to sampling a triangle with linearly-interpolated probability weights at each corner. The derivation of this approach is a little bit involved, so I might write a long-form explanation somewhere else.

Apollonian Gasket Möbius February 2020

Another apollonian gasket for shadertoy, but this one renders the limit circles directly. This is done by composing the inverse Möbius transformations applied during iteration. The final transformation maps the base limit circles back to screenspace.

Squares Analytic Motion Blur February 2020

Analytic (linear) motion blur of a square. It is pretty much based on the same idea as IQ's motion-blurred discs.

Voxel Sprite Mario November 2019

Mario fan-art, made of isometric voxel sprites looking a bit like lego bricks. Click and drag to rotate.
An individual brick is rendered into a separate buffer using the current camera orientation, then that buffer is used in the final image as a sprite texture. The sprites are rendered from front-to-back in a 3D grid, the sorting is done by inverting voxel coordinates according to the signs of the camera direction vector coordinates.

4.6.12 Truchet Weave November 2019

A 'weaved' version of my 4.6.12 semi-regular Truchet tiling (this one).

Tetrahedral Voxel Traversal July 2019

I adapted my single-sample-per-step terrain mesh ray traversal invention to 3D. In the end I decided to use something similar to the Hexakis cubic honeycomb, with each of the 6 square pyramids split into 4 tetrahedra making 24 tetrahedra per cubical cell.

Undulating Columns July 2019

Some columns formed by stacked toruses with alternating additive / subtractive CSG.

Triangulated Heightfield Trick 3 July 2019

Following on from my previous development in procedural triangle meshes and prompted by Shane's comment regarding irregular perturbed triangles, I decided to tackle deformation in the X and Z axes too.

Triangulated Heightfield Trick 2 July 2019

I revisited this idea of raytracing a triangulated heightfield with only 1 heightfield sample per step. This time the logic is a lot simpler, because I've used a regular equilateral triangle tiling grid.

Jigsaw Pattern July 2019

I was inspired by this awesome shader by Shane to try a simpler jigsaw pattern without needing to loop through neighbouring pieces, and which allows fast random sampling. Hold LMB to "reveal" the structure.

Curves and Blocks July 2019

Some differently-shaped voxels with a pencil hatching effect, and some 'perfect' temporal anti-aliasing due to the fact that deformation due to camera motion (vertical scrolling) is linear.

Tentacle Object June 2019

Some kind of tentacled object, made with IQ's implementation of the inverse spherical Fibonacci function from Keinert et al.

SGI Logo 2 May 2019

I re-made my old SGI Logo SDF. This one is about 3.5x faster to evaluate, thanks to the use of symmetry and capsule primitives.

Transparent Slime May 2019

After 6 years this slime has a few scratches, but he's clearly still got some 'bounce' in him!

Scattered Honey May 2019

Some kind of glass, using accumulation for anti-aliasing. I'm not actually 100% sure if the glass material is really correct, but I kept playing with it anyway until I got a result I'm happy with. By the way, this uses a tent filter for anti-aliasing.

CSG Sculpture March 2019

Features a method of raytracing a CSG model composed of one additive group and one subtractive group (this means there is no need for a stack when evaluating the CSG graph).

Cubemap Pathtracing January 2019

This is an example of how the new cubemap feature of Shadertoy can be used to cache and accumulate non-view-dependent illumination. Click and drag with the mouse to move the camera around.

Gyrobifastigium Voxel Tracing November 2018

Raytracing Gyrobifastigium-shaped voxels with analytic intersections.

Octahedral Voxel Tracing October 2018

Raytracing octahedron-shaped voxels with analytic intersections.

Triangulated Heightfield Trick October 2018

Here is a trick to raytrace a triangulated heightfield taking only 1 sample of the heightfield for each triangle tested against the ray and reducing the ray-vs-triangle test to a ray-vs-plane test. Primary rays and shadow rays are both raytraced.

Ohanami Stipple August 2018

This is a port of the code from the "Ohanami" 4kb demo: The code has been left in the minified state, mostly because I don't have the un-minified version of the code anymore. :) Use mouse Y to change camera tilt.

[SH18] Rabbit Character July 2018

I tried to create some kind of character using signed distance fields, and came up with this rabbit.
This wasn't originally an SH18 Shadertoy competition, but I decided to put it in (actually I hadn't realised that there is a new competition happening until after I made it).

Ocean Creature June 2018

A small sketch of some kind of aquatic animal in the open ocean.
Sorry for the really messy code this time. It's just a quick sketch.

Boxy Pikachu June 2018

A fanart recreation of the new boxy Pikachu design from the Nintendo game Pokémon Quest.
It turns out Pokémon are easy to make with SDFs when they are made of boxes!

Kirby Jump January 2018

Kirby, from the Kirby videogames by Nintendo. Modelled purely with code, from a reference found via Google. Composed and lit for this shot only.

Power City September 2017

Uses hybrid distance field raymarching and uniform grid traversal. Drag mouse to rotate the view.

Isometric Maze November 2014

Some more sizecoding doodling. I'm not finished with it (there are most likely more minifying transformations to be done) but I'm publishing it anyway! (p.s. I know, it's not truly isometric...)

Unreal Intro October 2014

A remake of the castle fly-by sequence from the classic 90's videogame Unreal. The geometry is converted directly from the level data and I made everything else myself. "Alter your reality...forever". Reference

Midnight Comms August 2014

Just a sketch with wires, cables and glowing orbs.

Butterflies February 2014

This shader is full of bugs... :D Their design is based on the Monarch butterfly, and I decided to only create the wings since the shader got complex enough already. The Monarch's markings warn predators that it's poisonous.

The Popular Shader January 2014

I remade my other shader (here) inspired by "The Popular Demo", to make it more accurate :) I added a tiling effect to make the robot look faceted, but it seems to somehow over-complicate the shader so it doesn't compile.

Submerged July 2013

Experimenting with clipped cones. Unfortunately I have not yet got this to work correctly on Firefox on Windows. Chrome should be okay.

Grassy March 2013

I tried to create some convincing grass procedurally. The result became less than realistic, but I am still happy with how it went. There are some quite subtle gradients, which resulted in very noticeable mach bands. I mostly fixed them with noise.