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.1 KiB
1.1 KiB
| id | name | category | kind | tokens | sig | tip | order | ns | member |
|---|---|---|---|---|---|---|---|---|---|
| noise-simplex2 | Noise.simplex2 | noise | namespace-method | Noise.simplex2 | Noise.simplex2(x, y, seed) -> fixed | 2D simplex noise, the organic default, in [-1, 1]. | 3 | Noise | simplex2 |
Samples 2D simplex noise at (x, y) for the given seed and returns a fixed in [-1, 1]. Simplex noise sums contributions from the three corners of a skewed triangular cell, which gives it fewer of the axis-aligned directional artifacts that gradient noise can show — making it the recommended default for organic fields like terrain height and biome masks.
Deterministic in fixed point across platforms and runs, and the generator that Noise.fbm2 layers by default. Scale the coordinates to set feature size.
Parameters:
x,y— the sample coordinates (fixed)seed— the field selector
program Simplex {
entry {
let seed = 1337
let n = Noise.simplex2(fixed(4) / fixed(9), fixed(6) / fixed(9), seed)
print(Math.floor(Noise.unit(n) * fixed(100)))
}
}