water · git:20261028.62f2e2f · 2026-10-28 · sha256 a933ccf8ca4d7647

water git:20261028.62f2e2fA

Immutable. This exact content never changes and is served at /api/v1/blob/a933ccf8ca4d7647.

---
name: water
description: Create realistic procedural water and wet surfaces with Three.js TSL on WebGPU. Use for lakes, rivers, reservoirs, canals, puddles, drainage, fountains and wet materials.
---

# Water

Target: Three.js 0.186.1, `three/webgpu` and TSL node materials from `three/tsl`; WebGPU only, no WebGL fallback, no GLSL strings.

## Water response

Think in terms of:

- reflection
- transmission/refraction
- Fresnel
- depth-dependent absorption
- roughness
- normal waves
- surface displacement
- ripples
- foam
- shoreline effects
- flow direction
- interaction with objects

Do not make all water bright blue.

## Scale-specific variants

Distinguish:

- large reservoir/lake water
- canal/river water
- shallow drainage
- puddles
- fountains
- wet concrete
- wet metal

Each has different wave scale, roughness, depth and reflection behaviour.

## Surface

Use layered wave scales:

- large gentle waves for silhouette and broad reflection
- medium waves for visible surface structure
- small normal-scale ripples for highlights

Do not use high-frequency displacement everywhere.

## Depth

Water should generally become visually deeper with depth. Use attenuation and colour response rather than a flat colour overlay.

## Foam

Place foam where physically plausible:

- shorelines
- obstacles
- strong flow
- turbulence
- waterfalls

Do not distribute foam uniformly.

## Wet surfaces

Wet concrete, rails and metal are not the same thing as standing water. For wet surfaces, primarily alter roughness/specular response and add subtle darkening/reflection rather than turning the entire surface transparent.