Procedural Planets
Build a planet as a coupled field system evaluated on a unit direction. The same geological causes must drive geometry, color, roughness, normal, atmosphere handoff, and distance filtering.
Required build order
- Establish planet-space direction, radius, sea level, and world-unit scale.
- Build macro silhouette fields before any surface material.
- Add named geological structures: continents, basins, ridges, craters, lava fields, or ice.
- Derive slope, cavity, altitude, latitude, exposure, and shoreline fields.
- Classify broad biomes from those causes.
- Derive displacement, color, roughness, and normal from the shared field bundle.
- Filter bands by represented mesh scale and camera altitude.
- Couple the material to atmosphere and lighting using the same planet transform.
Read references/planet-field-and-atmosphere-systems.md for terrain, biome, gas-giant, material, altitude-LOD, and atmosphere-handoff mechanisms, including a known CPU/GPU field-parity failure mode.
Read the procedural planet surface implementation
and its shared terrain field
for undeformed sphere coordinates, shared CPU/GLSL terrain, coupled biome and
material causes, derivative bump, and altitude-filtered detail.
Non-negotiable constraints
- Domain-warp tangentially and renormalize; do not distort the sphere radially.
- Craters need floor, wall, rim, and optional ejecta—not dark circles.
- Continents and biomes must be region fields, not isolated threshold bubbles.
- Geometry displacement and shader normals must describe the same height function.
- Close detail may disappear with altitude; the macro silhouette may not.
- Expose individual field views and a displacement exaggeration mode.
Completion test
The body must remain intentional in:
- unlit silhouette;
- flat albedo with no atmosphere;
- grazing directional light;
- orbit view;
- close approach;
- biome-mask and normal-only views;
- at least three seeds without losing the chosen planetary identity.
Routing boundary
Use
$threejs-procedural-fields
for a reusable field bundle without a complete
body, and
$threejs-atmosphere-aerial-perspective
for scattering independent
of planet generation. This skill owns the coupled planetary surface.