Rendering a large field of grass

Three layers of grass in Farsight that share the same wind, clouds and colour, built to run on low-end machines.


Rain on the player's glasses

A single URP screen pass with procedural drops that refract out-of-focus copies of the frame.


Eye floaters

Procedural strands in a screen pass that lag behind head turns on a spring.


A photo whose eyes follow you

Pupils repainted in a lighting-preserving overlay that only move when you are not looking.


Recreating the Game Boy camera

Tone mapping, an 8x8 Bayer dither and a five-shade palette.


Pouring milk

A procedural tube mesh on a ballistic arc, with ripples, foam and floating cereal.


Drawing in pencil and pen

Soft stamps composited into erasable and permanent ink layers.


Fireplace flames with real depth

A ray-marched volume coloured by temperature.


Leaving wet footprints indoors

Shoes soak in the rain and leave URP decal prints indoors.


Icons that morph from a dot

SDF shapes that morph from a dot into a glyph as you approach.


How to make a 2D platformer feel good

Jump input buffering, coyote time, corner correction, and other game feel tricks.


2D butterflies with Unity's particle system

A simple tutorial for making cute 2D butterflies with the particle system's texture sheet animation.


Wind particles in Unity

A simple tutorial for making a wind effect with Unity's particle system.


Unity Shader Graph experiments

A collection of my experiments with Unity's Shader Graph.