Seeded Simplex noise, fractals, domain warping, modifiers, batch sampling and PNG rendering
Dependencies
| OpenSimplex2S | fBm |
|---|---|
![]() | ![]() |
moon add ZSeanYves/SimplexNoiseimport {
"ZSeanYves/SimplexNoise/core",
"ZSeanYves/SimplexNoise/fractal",
}let classic = @core.Simplex::new(42U)
let open2 = @core.OpenSimplex2::new(42U)
let open2s = @core.OpenSimplex2S::new(42U)
let a = classic.sample4(0.1, 0.2, 0.3, 0.4)
let b = open2.sample3(0.1, 0.2, 0.3)
let c = open2s.sample2(0.1, 0.2)let pixels = FixedArray::make(256 * 256, 0.0)
@core.fill2(open2s, pixels, 256, 256, step_x=0.01, step_y=0.01).unwrap()let config = @fractal.FbmConfig::new(
octaves=6,
persistence=0.5,
lacunarity=2.0,
frequency=0.01,
).unwrap()
let source = @core.OpenSimplex2S::new(42U)
let fbm = @fractal.Fbm::new(source, config)
let terrain = fbm.sample2(128.0, 64.0)
let warp_config = @fractal.WarpConfig::new(
strength=2.0,
frequency=0.02,
limit=1.5,
mode=Progressive,
octaves=3,
).unwrap()
let warped = @fractal.DomainWarp2::new(
source,
@core.OpenSimplex2S::new(73U),
warp_config,
)
let warped_value = warped.sample2(128.0, 64.0)let tiled = @fractal.Tileable2::new(
@core.Simplex::new(9U),
width=256.0,
height=256.0,
).unwrap()
let left = tiled.sample2(0.0, 32.0)
let right = tiled.sample2(256.0, 32.0)moon run src/cmd/noise-demo --target native -- noise-demo 256 42src/core/ sources, Seedable, coordinate contract, fill2/fill3
src/fractal/ fractals, 2D/3D warp, tiling, modifiers/transforms
src/render/ grayscale/hue PNG encoding and file output
src/cmd/noise-demo/ runnable image example| 0.1.x | 0.2.0 |
|---|---|
| arrays of coordinates, gradients, and permutation tables | immutable source objects with fixed-dimensional methods |
| create2d / simplex2d | @core.Simplex::new(seed).sample2(x, y) |
| seven positional fBm parameters | validated FbmConfig plus Fbm |
| every octave reused one source | independently seeded octave sources |
| global new_maxwarp state | immutable WarpConfig plus DomainWarp2 |
| approximate 2D/3D/4D tile helpers | strict 2D Tileable2 contract |
| image functions in the root package | @render.render_png / write_png |
| 3D/4D batch slice helpers | removed; capture z/w in a render callback and loop explicitly |
moon update
moon fmt --check
moon check --target all --deny-warn --warn-list +73
moon test --target all
moon test --target native --enable-coverage
moon coverage report -f summary
moon bench src/core src/fractal --target native --release
moon package --frozenSeeded Simplex noise, fractals, domain warping, modifiers, batch sampling and PNG rendering
Dependencies