Available now for lead or senior environment roles, remote or hybrid. Get in touch

← Personal work

Tropical Island (3D)

2026Pocket beach on a reef-fringed island3.4 M-point terrain12.5 M instancesWater and reef from published measurements

  • Houdini 22
  • Solaris
  • Karma XPU
  • Copernicus
  • MaterialX
  • VEX
  • Python

A procedural tropical island in Solaris: depth-accurate water optics, a spur-and-groove fringing reef, natural beach dressing and volumetric marine haze, driven by published field data.

Aerial view of a forested tropical island ringed by turquoise shallows and a dark coral reef, more islands on the hazy horizon

Breakdown

Layer breakdown

Each element is a separate Solaris branch and can be toggled on its own.

Aerial: Haze

Backdrop and haze: islands 7 to 11 km out, and a haze volume over the whole sea.

Layers switching on along the beach camera move

Water

Water optics

Volumetric seawater with per-channel absorption and scattering from published clear-ocean measurements. The shift from turquoise shallows to deep blue comes from the optics, not a color ramp.

Two crops from the shore outward: turquoise shallows over coral, deep blue past the reef edge
Shoreline to reef edge: the same water, increasing depth

Reef

Spur and groove

Spur-and-groove layout with 30 to 90 m grooves, as measured on real fringing reefs. 890,000 coral colonies placed by zone and depth, with cover and size distributions from reef surveys.

The fringing reef from the air: coral running out from the beach in fingers, sand channels between them, deep blue beyond
Final render: coral spurs with sand channels between them
The reef with the water drained: coral colonies scattered over the sand, the spurs as low ridges below the beach
The same view with the rocks added: boulder fields and slabs on the spurs and along the shore
Coral+ Rocks
Water removed: coral only, then with rocks. Drag to compare

Forest

Forest stands

59,000 palms of three species in clustered stands. Trees swap species with a probability driven by their neighborhood (about 20% at stand borders, under 10% inside), keeping position and size rank.

Beach

Natural beach

A strandline of seagrass, coconuts and palm debris at the high-water mark, cut from the island's own palm asset and sun-bleached. Debris follows swash deposition and collects at the ends of the beach.

Two crops of the beach: the strandline with driftwood and coconuts above the waterline and beach plants on the sand; the shore below the palm grove with fallen fronds
Strandline above the waterline; shore below the palm grove

Water

Caustics

Caustics built in Copernicus from warped cell noise and projected onto the seabed. Intensity is depth-driven: none in the swash, peaking at 1 to 2 m, gone by 8 m.

Shallow water over sand with a net of bright caustic lines, fading toward deeper water
Seabed caustics: none at the waterline, strongest at 1 to 2 m

Backdrop

Backdrop and haze

Eroded heightfield islands 7 to 11 km offshore, with exposed limestone on steep slopes. A height-attenuated haze volume (about 50 km visibility, sea-salt aerosol plus Rayleigh scattering) provides all aerial perspective, with no shader-side fog.

A forested background island seen through a long lens, softer at the waterline than at its summit
Long lens at 9 km: denser haze at the waterline than at the summit

Comp

Compositing

Light AOVs and region mattes graded per region in Copernicus against a drone reference, then finished with glare, veiling light, lens distortion with chromatic aberration, corner softening, vignetting and grain. Drag to compare.

The main shot as rendered, before the comp
The same frame after the comp: graded, with glare, lens effects and grain
RenderComp

Render

Render optimization

12.5 M instances, frustum-culled per frame with a margin for reflections. On the beach shots memory drops from 19 to 10 GB with an identical image.