Cloud Clumping System — Field Guide

2026-06-28 · every knob in motion, slowed down, with the value, the math, and the live measurement burned into each frame. Real GPU (RTX 4070 Ti SUPER, D3D11), captured straight off the renderer. Each sweep plays low → high → low and dwells at the ends so you can read them.

This is the first modular cloud system — clumping: the rules deciding, at every point in the sky, whether there's cloud and what shape it takes, built from 4 sizes of 3D cellular (Worley) noise carved by a coverage threshold. Below, each dial is shown in motion and proven with numbers — because "looks better" isn't a verdict; the value structure is. The same metrics drive our cd-twin model of the CD's eye, so this page is also its training data.
How to read the numbers (printed live on every sweep frame, measured on the actual pixels): The headline: low coverage, more softness, and more weather all push the same way — deeper darks, wider range. Wind-lean doesn't touch them at all. The numbers below show it.

1 · Coverage the master shape dial · low = dramatic, high = flat overcast

cloud forms where noise · heightR ≥ 1.1 − coverage (lower coverage ⇒ higher bar ⇒ only dense cores survive)
coverage above
from above, sweeping 0.68 → 0.96. Watch darks(p5) and range in the overlay.
Coverage1.1−covmeanLdarks p5rangeblown%
0.680.42185.8131.3104.30.0
0.790.31186.1131.3109.50.0
0.860.24216.9154.787.10.0
0.930.17225.5171.071.70.0
0.960.14228.2190.053.70.0

What it proves: low coverage holds deep darks (p5 131) and wide range (104) — dramatic, structured cumulus. As coverage climbs, the darks lift to 190 and range collapses to 54 — the flat, milky, glaring overcast. This is "glaring white = missing darks" in numbers.

coverage ground-up
ground-up (player view) — low fills the sky, high thins out.
coverage top-down
top-down — islands merging into a sheet.
The overlay numbers differ per angle — same value, different value-structure depending on where you stand. That's why we measure from many angles.

2 · Edge softness crisp cauliflower ↔ wispy

largeShape = smoothstep(cov − soft, cov, x) soft = width of the density transition band
softness above
from above, sweeping 0.03 → 0.35.
Edge softmeanLdarks p5rangeblown%
0.03216.7160.980.80.0
0.07198.3134.1107.60.0
0.15188.1132.1109.40.0
0.24186.9132.1107.60.0
0.35185.7131.3106.40.0

What it proves: very crisp edges (0.03) sit bright with shallow darks (p5 161, range 81). Softening past ~0.07 lets partial-density cloud through, which deepens the darks (p5 ~132) and widens range (~107) — then plateaus. Softness isn't only cosmetic: it adds mid-tone structure.

softness ground-up
ground-up — crisp solid mass softening into haze.

3 · Weather uniform blanket ↔ dramatic regions · the value-structure powerhouse

extraLargeShape = mix(1, weatherMap, weather) · heightB 0 = uniform everywhere · >1 = strong regions
weather above
from above, sweeping 0 → 1.8 — the showcase.
WeathermeanLdarks p5rangeblown%
0.00224.4169.673.10.0
0.70209.6145.096.80.0
1.16187.1131.7109.00.0
1.63186.1130.5109.00.0
1.80185.1130.5107.30.0

What it proves: a uniform field (weather 0) is bright and flat — p5 170, range 73, no dark anchor. Push weather up and the darks deepen ~40 points (→130) and range expands ~34 (→107). Weather is what turns a flat blanket into structured, readable cloud with real negative space.

weather ground-up
ground-up — flat fill resolving into a defined mass.
weather top-down
top-down — clear-sky gaps opening between clouds.
Weather and low-coverage both deepen darks & widen range — they're the two strongest levers on the structure the CD's eye reads.

4 · Wind-lean subtle by design — the numbers confirm it

worldPos += windDir · power · (1 − h/range)² leans bases downwind, faithful port (his default = 0)
wind lean above
from above, sweeping power 0 → 4000.
Wind-leanmeanLdarks p5rangeblown%
0185.7131.3109.40.0
1556185.7131.3109.40.0
2567185.6131.3109.40.0
3995185.2131.3109.50.0

What it proves: every metric is flat across the entire range (p5 131.3, range 109.4 — unchanged). The numbers confirm what the eye saw: the lean is a fine geometric tweak, not a value/look change. It's kept for wind dynamics later, not for shaping the look. (Honest: side-on captures were dropped — clouds wash out from horizontal angles, a separate issue noted below.)

5 · The whole system, alive creative camera moves

The integrated look (coverage 0.80 · weather 1.4 · soft 0.08), animation running, slowed down.

pan left to right
pan L→R across the dusk mass.
dolly through
dolly in toward the warm-cored tower.
look down then up
tilt down→up the face of the mass.
Known weakness (honest): strong ground-up and top-down, but thin and washed-out from the side and far horizon — the clouds lose silhouette. A separate axis from clumping (aerial-perspective + vertical density profile), not fixed by these dials. Part realistic distance-haze, part worth its own pass. Flagged, not yet addressed.

Drive it yourself

The live renderer with the new — clumping — panel (Coverage · Edge-soft · Weather · Wind-lean) + five analytical lenses:

▶ Open the live lab dramatic → &cov=0.78&weather=1.4 crisp → &cov=0.80&soft=0.05 flat overcast → &cov=0.95

Measured live on the real render: _lab-gif.mjs drives the renderer via CDP (hides the HUD, sweeps each uniform with eased dwell at the extremes), _gif-overlay.py measures every frame's value-structure (numpy, the same metrics our cd-twin uses) and burns value + math + measurement in, ffmpeg assembles. Animation frozen on the sweeps (only the dial moves), live on the camera moves. Verified against Bonkahe's source (noise = FastNoiseLite Cellular/Worley, large inverted; our port line-faithful). The CD's eye is the verdict; these numbers are how we earn it.