mcpbeat

Threejs Procedural Planets

scottstts/threejs-procedural-planets

Author procedural planetary bodies in Three.js. Use for spherical terrain, continents, ridges, craters, biome masks, coastlines, material variation, analytic normals, altitude LOD, and bodies that must hold up from orbit through close approach.

8k tokens
context cost
the whole folder, loaded on every use
5
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
527
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/scottstts/Threejs-Awesome-Graphics-Agent-Skills --skill threejs-procedural-planets

The instruction itself

5 sections, as written by the author

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.

How to use it

Copy the folder

Take scottstts/threejs-procedural-planets from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.