All checks were successful
docs / build-and-deploy (push) Successful in 2s
A Noise.* namespace for procedural generation, implemented entirely in Q16.16 fixed point over an integer permutation hash so a seed reproduces the exact same field on every platform and run (native/headless/wasm) — the determinism edge over float noise that drifts across CPUs. - value2 / perlin2 / simplex2 — value, gradient, and simplex noise -> [-1,1] - fbm2(x,y,seed,octaves) — fractal Brownian motion (octaves of simplex) - cellular2 / cellular2_id — Worley F1 distance + nearest-cell id - unit(n) — remap [-1,1] -> [0,1] Covers issue phases 1–2 fully plus cellular from phase 3; domain warp, ridged/ billow, and sample1/sample3 remain as follow-ups. Pure integer IR, C-free; cellular/fbm reuse the math prelude's fx_sqrt. - examples/library/noise.ludic: asserts the invariants a fixed-point generator must hold (Perlin == 0 at lattice points, every sampler within [-1,1], reproducibility, seed sensitivity, non-negative cellular distance). Wired into `x test` (now 52 passed). - docs: a new Noise section + per-symbol pages; inventory and coverage pass. - seed regenerated; `x bootstrap-cfree` fixpoint holds. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.3 KiB
1.3 KiB
| id | name | category | kind | tokens | sig | tip | order | ns | member |
|---|---|---|---|---|---|---|---|---|---|
| noise-cellular2 | Noise.cellular2 | noise | namespace-method | Noise.cellular2 | Noise.cellular2(x, y, seed) -> fixed | Worley (cellular) F1 distance to the nearest cell point. | 5 | Noise | cellular2 |
Samples cellular (Worley) noise at (x, y) and returns the F1 distance — the distance to the nearest feature point — as a fixed (roughly [0, 1.5]). Each lattice cell holds one feature point placed by its hash; scanning the 3×3 neighbourhood finds the closest one. The distance field forms Voronoi cells, which are exactly the structure you want for stone and cracked textures, biome or region boundaries, and scattered-feature layouts. Small distances mark cell centres; ridges appear where two cells meet.
Pair it with Noise.cellular2_id to also know which cell you are in. Deterministic in fixed point across platforms and runs.
Parameters:
x,y— the sample coordinates (fixed)seed— the field selector
program Cellular {
entry {
let seed = 7
let d = Noise.cellular2(fixed(5) / fixed(4), fixed(3) / fixed(4), seed)
print(Math.floor(d * fixed(1000))) # distance to nearest cell point
}
}