Site experiment · Rendering and simulation
Graphics Lab
The 3D coastal home on my homepage is where I try graphics and simulation papers. Each experiment adapts one published method in a form a browser can run: sunlight down a drilled light well, waves that grow with the sea breeze, steam carried by its own heat, curtains that billow at an open door. This page keeps them in one place, with what each does now and the newer papers that could take it further.
I kept adding graphics experiments to the home, and a project page for each one would have buried the rest of my work.
One row per experiment, with a still from the scene, where it stands, the paper it adapts and a link to its write-up.
Each adapts a published method and says where it simplifies. Tests check the math, and the record lists what to read next.
The experiments
Each row opens the experiment’s own page or its section of the technical record. The stills are frames of the live scene captured on October 16 and 17, 2026; the light well, the steam and the onsen are set in late August, when the noon sun reaches the shaft and the bath runs in daylight. How the house itself is built, from its Blender sources to its shader warmup and loading, is in the coastal home’s record.
Light
-
Light paths through the onsen
A plain-JavaScript renderer races path tracing against Metropolis light transport on the sunlight the light well bends through the onsen’s water.
-
A light well with traced shaft light
A shaft drilled from the clifftop brings sun into the onsen, and its beam, its sun patch, its skylight and the lit steam share one visibility function.
-
Traced sky and lamp bounce
A CPU ray tracer bakes sky visibility and one diffuse bounce into probe cages once, then relights them from the actual sky and lamp powers without tracing again.
-
Horizon-based contact light
A visibility buffer computed before the beauty pass darkens only indirect diffuse light near contacts, with the closed-form horizon integral of ground-truth ambient occlusion.
Water, air and sky
-
A Pacific of Gerstner waves
Ten Gerstner waves displace the sea and its normals together, with a wind sea that grows with the breeze, gusty ripples and whitecaps, a lit shoreline and a live mirror of the cliff.
-
A height-field onsen
The onsen is a 40 × 40 shallow-water height field whose waves carry water between cells, reflect off the rim and the bather, and start from the bather’s hand.
-
Thermal steam
Bath mist is two transported fields, droplet concentration and temperature, rendered with single scattering that composes in order around the glass and the water.
-
One wind for the coast
One breeze, measured at Scripps Pier and carried by gust fronts that travel downwind, moves the sea, the clifftop planting, the room plants, the curtains, the steam and the particles.
-
Sun position and sky
The sun, its shadows and the sun’s disc follow NOAA’s solar equations for La Jolla on the scene’s Pacific clock; the sky’s colours are authored.
Cloth, skin and motion
-
Sheer curtains in the breeze
Four sheer panels inside the glass front, a position-based cloth in the coast’s breeze, with a weave whose openness, glow and shadow change with the angle.
-
Bedding draped by position-based dynamics
Each avatar’s duvet is dropped over the sleeping body offline by a position-based cloth solver and its pillow pressed in by the head, so no cover cuts through a chest; in the scene the cover breathes.
-
Preintegrated skin diffusion
Skin spreads direct light across a curved patch with a normalized diffusion profile, so a shadow’s edge on the face turns warm instead of hard.
-
Strand highlights on hair
Hair gets two shifted highlight bands across its strands, the primary and secondary lobes of hair scattering, instead of a round spot.
-
Lifts posed on each figure
Every lift in Sirui’s program is solved each frame on the avatar’s own skeleton, so the hands meet the real bar whatever the body’s proportions.
-
Animals that plant their feet
Rabbits, sea lions, harbor seals, a raccoon, gulls and sandpipers move on choreography sampled from time, with feet that hold their contacts on the exported terrain.
-
Gliders soaring the bluffs
Three paragliders and a hang glider follow closed loops along the north bluffs, banking into their turns, posed from the scene clock.
Camera and land
-
A camera that knows the house’s walls
Every static mesh is voxelized into a 12 cm field once it loads, and a spring arm keeps the camera on the near side of anything between it and the subject, so visitors can orbit freely and zoom the coast to 160 m.
-
The land beyond the mainland’s walls
A terraced mesa with badland canyons, bluffs with the gliderport, a headland with sea caves and a distant point continue the coast past the mainland’s flat walls.
Drawing
-
A pen sketch while the house loads
Pen strokes traced offline from geometry buffers draw the sea, the cliff, the cut-away house and the occupied room while the scene loads, then trace the first rendered frame.
Next papers to try
Each technique in the record keeps a short list of newer work that advances it, mostly from SIGGRAPH, SIGGRAPH Asia, Eurographics, EGSR and SCA, with what it would add here and a rough effort. These four would each change something a visitor can see:
-
Light paths through the onsen Zeltner, Georgiev and Jakob 2020, SIGGRAPH 2020
Medium effort Solves for the path through the water from a point on the pool floor to the sun, so even plain path tracing could aim at the sun. The lab’s pool has a single refracting surface, the method’s simplest case.
-
Sun position and sky Hillaire 2020, EGSR 2020
Medium effort A physically based sky and aerial perspective from small lookup tables, with multiple scattering, cheap per frame, so sunsets and the coast’s haze would come from scattering.
-
A height-field onsen Jeschke and Wojtan 2023, SIGGRAPH 2023
Medium effort Splits each step into shallow-water bulk flow and Airy surface waves, so the hand’s short ripples would travel at their true speed in this shallow basin.
-
One wind for the coast Diener et al. 2009, Eurographics 2009
Medium effort Projects the wind onto a few precomputed modal stresses per tree, so the Torrey pines and the palm would sway as whole structures, evaluated on the GPU.
How the stills and the record are made
- Stills.
bin/capture_graphics_lab_stills.cjsopens the homepage's authoring lab in headless Chromium at a named hour, room and camera, without the homepage's feathered edge, andbin/make_graphics_lab_thumbnails.pyscales the frames. They are scaled, never retouched. The light lab's still is a frame of its own renderer. - Record. Each technique lives in
_data/design_records/graphics-lab.ymlwith its files and key functions, its sources, its limits and its papers to try;python bin/design_record_brief.py graphics-labturns it into a brief for the next pass, and the agent brief says how to take a paper from the list into the house. - Citations. Every paper was checked against its DOI record, its publisher's page or its authors' page on October 16 and 17, 2026. Four DOIs in the first draft resolved to other papers and were corrected.
- Credit. Sirui Tao, with AI coding agents: the experiments, their tests and notes. Anthropic's Claude compiled this page, its stills and the technical record for Sirui to review.