← rgbjoy.com

rgbjoy — Tom Fletcher

rgbjoy is the online identity and portfolio of Tom Fletcher.

Tom Fletcher is a full-stack engineer and creative developer who designs and builds for the web, from client sites and product systems to shader experiments. Available for new work.

Projects

BigChecklist

A big checklist app that lets you easily create tasks, sort, and use keyboard shortcuts.

2026 · Next.js, PayloadCMS

Framelet

A small native macOS app for recording a live website inside a presentation frame, with your cursor, as an MP4.

2026 · Swift

Scriptlet

A native Mac app for running, watching, and stopping package.json scripts while coding agents work.

2026 · Swift

Future By Day

An interactive savings calculator for exploring how daily contributions could grow over time, comparing risk levels, and planning toward a savings goal.

2026 · vinext, StyleX

Golf Is Weird

Something weird for golf, in the works. All it takes is one good look.

2026 · vinext, Three.js

Tenniswood Dental Associates

A patient-focused site for a multigenerational dental practice, built with Payload CMS and Next.js.

2026 · Next.js, Payload CMS

Vero Night Out

A curated guide to the best bars, restaurants, and local hangouts in Vero Beach, with clear vibes for every spot.

2026 · Next.js, PayloadCMS

Valerie Chiang

A portfolio site for a New York City photographer and filmmaker, built with Payload CMS.

2025 · Next.js, PayloadCMS

The New Republic

Reader-facing features and custom editorial CMS tooling for the magazine, built and shipped front to back.

2026 · React

Orchid Island Brewery

Design and website for a brewery in Vero Beach, FL, with a complete online shop for selling merch, including checkout and payments.

2025 · Next.js, PayloadCMS, Stripe

Experiments

Phosphor

Soft blocks of colour, crisp in one place and smeared in the next, ghosted like a video starved of bitrate and seen through a CRT's slot mask. Click for a new frame, R to roll the dice on every setting, S to save it at 4K.

Generative & Visual · wip · Three.js, R3F, GLSL, lil-gui

Global Illumination (WebGPU)

The same sunlit concrete box, ported to WebGPU, with a striped plus tumbling through the sun shaft. The path tracer runs as a compute shader and keeps a short memory while the plus moves the light around; an edge-aware à-trous filter cleans what that leaves noisy, so orbiting stays smooth. Each light probe gets a workgroup of 64 lanes that trace its rays side by side. Panel (H) shows each pass's GPU time.

3D & Spatial · wip · WebGPU, WGSL, Three.js, R3F, lil-gui

Global Illumination

A concrete box in the sky: sun shafts through one window, lit a second time by its own bounce light — one blue-noise ray a pixel, averaged frame over frame until the grain settles, while a chrome torus mirrors the room. Orbit in and out through the walls, and click an object to move or turn it.

3D & Spatial · wip · Three.js, R3F, GLSL, lil-gui

Hand

A sculpted hand in grainy black and white, fingers rolling in a seamless loop. Bring the cursor into its grasp and the hand catches it.

3D & Spatial · wip · Three.js, R3F, GLSL, glTF

Endless Scroll

An endless vertical list of names — fast, smooth scrolling and paired background and preview colors that crossfade on hover.

Generative & Visual · live · React, CSS, Lenis

Ghost

A quietly waiting sheet ghost — simulated cloth, wandering idle motion, and a gaze that notices you in the dark.

3D & Spatial · live · Three.js, R3F, GLSL

Decal Pole

Staple images to a telephone pole — drop one anywhere and it sticks where it lands, a few degrees off true.

Play · live · Three.js, R3F, drei

Island Generator

Shape a low-poly island with seeded noise, elevation bands, and live terrain controls.

Play · wip · Three.js, R3F, WebGL

Frosted Glass

Capsules and beads pile up against a pane — depth is spent as blur, so the far ones smear into the fog.

Glass & Refraction · live · Three.js, R3F, GLSL, box3d.js, lil-gui

Range Day

A chill driving range. Read the wind, pull back, and send a golf ball toward flags out to 250 yards down a striped fairway.

Play · wip · Three.js, R3F, GLSL, glTF

Aurora

Raymarched aurora curtains after kishimisu — spectral ribbons that drift and fold in deep space, pulsing to a generated beat.

Generative & Visual · live · Three.js, R3F, GLSL, Web Audio, lil-gui

Gradient Flow

Living gradients that cross-fade curated palettes, blended in OKLab for natural color.

Generative & Visual · live · Three.js, R3F, GLSL, thi.ng, lil-gui

Fluted Glass

A pane of segmented log-compression flutes over the left half of a soft drifting wash. The cursor sits behind the glass.

Glass & Refraction · live · Three.js, R3F, GLSL

Glass Cross

A vertical glass line warping thin black wavy lines on white.

Glass & Refraction · live · Three.js, R3F, GLSL

Glass Lines

Refracted line-field glass lighting. The lines bend away from the pointer and spring back.

Glass & Refraction · live · Three.js, R3F, GLSL

Glass Point

A 5×3 grid of point lenses refracting a flowing cosine wash background. They shy away from the pointer and spring back.

Glass & Refraction · live · Three.js, R3F, GLSL

Glass Waves

Straight vertical glass lines refracting a gold cosine palette. The strips under the pointer grow wider.

Glass & Refraction · live · Three.js, R3F, GLSL

Reading Glass

A fixed strip of bent glass near the top refracts the article text with chromatic aberration as you scroll.

Glass & Refraction · live · Three.js, R3F, GLSL

PS2 Intro

Concrete column field, refracting glass cubes, and whirling colored light trails over base fog.

3D & Spatial · live · Three.js, R3F, GLSL, Postprocessing

Unbreaking Waves

Five orbiting petal blobs with palette flow and soft fog wash.

Generative & Visual · live · Three.js, R3F, GLSL, lil-gui

Warped Stripes

Noise-warped diagonal stripes with live-tweakable colors and warp.

Generative & Visual · live · Three.js, R3F, GLSL, lil-gui

Palm Leaf

Tropical light filtering through large fronds.

3D & Spatial · live · Three.js, R3F

Rectangle Farm

Rotating physical blocks in a neat field layout.

3D & Spatial · live · Three.js, R3F

Sky Atmosphere

Procedural sky gradients and atmospheric depth.

Generative & Visual · live · Three.js, R3F, GLSL, lil-gui

Black Ink

A slow monochrome ink wash shaped by layered noise.

Generative & Visual · live · Three.js, R3F, GLSL

Wormhole

Shader tunnel with a deep-space motion feel.

Generative & Visual · live · Three.js, R3F, GLSL

Elsewhere