build

Salt Marsh Ledger — Tidal Wetland Negotiation

Salt Marsh Ledger turns a tidal wetland into a live negotiation between salinity pressure, nutrient deposition, restoration seeding, storm pulses, and vegetation biomass.

A degraded VHS-style coastal field station scene with marsh channels, grasses, and a research ledger under fluorescent light.

The Build

Salt Marsh Ledger is a tidal wetland simulation built with Vite and Three.js. It treats the marsh as a living balance sheet where water, salt, nutrients, and vegetation keep rewriting the same patch of ground.

Live demo

What The Marsh Tracks

The scene is organized around a gridded marsh surface rather than a decorative landscape. Each cell carries environmental state, and the visible structure comes from those fields interacting over time.

1. Vegetation and biomass reaction-diffusion

The vegetation layer behaves like an ecological reaction-diffusion system. Biomass spreads into viable regions, retreats under stress, and forms uneven patches instead of a uniform green carpet. The result is a marsh that gradually organizes itself into channels, flats, and denser stands.

2. Tidal salinity pressure

Tide amplitude changes more than the waterline. As the tide moves through the grid, salinity pressure pushes against plant growth and shifts the color and height of the surface. High-salt regions become harder for vegetation to hold, while lower-pressure regions can recover and thicken.

3. Nutrient deposition and decay

Nutrients arrive with the water and then decay back out of the system. That deposition loop gives the marsh a second timescale: short pulses can feed growth, but persistent imbalance changes the whole field. Biomass is always negotiating between nourishment and stress.

Controls As Ecological Levers

The interface exposes the wetland directly:

  • Salinity pressure controls how aggressively salt suppresses vegetation.
  • Tide amplitude changes the strength and reach of the tidal cycle.
  • Restoration seeding gives the system a managed recovery impulse.
  • Storm pulse shocks the field with a temporary disturbance.
  • Pause and reset make it possible to inspect a pattern before sending it back into motion.

Those controls make the piece feel less like a terrain viewer and more like a small ecological instrument. Each intervention leaves a different signature in the marsh structure.

Surface Language

The rendering keeps the system readable. Water level, color, height, and biomass metrics all respond to the same underlying state instead of living in separate UI layers. The marsh rises, fades, floods, and recovers as the simulation changes.

The strongest moments come from watching ordinary environmental pressure produce spatial form. A storm pulse does not just flash the scene; it changes the next recovery pattern. A salinity increase does not just recolor the water; it shifts which vegetation patches can survive.

Technical Notes

  • Stack: Vite + Three.js r164
  • Model: Gray-Scott-style vegetation and biomass reaction-diffusion on an instanced marsh grid
  • Feedback loop: tidal salinity, nutrient deposition, nutrient decay, water level, color, height, and biomass metrics
  • Interaction: reactive controls for salinity, tides, restoration, storms, pause, and reset
  • Deployment: static build published at GitHub Pages

Why This One Holds Up

Salt Marsh Ledger works because the marsh is not treated as scenery. It is a set of coupled pressures made visible. Salinity, nutrients, tide, and biomass are all simple signals on their own, but together they produce a field that feels negotiated rather than drawn.