Crate noise_functions

Source
Expand description

Fast and lightweight noise algorithm implementations.

Check out the live demo!

§Examples

use noise_functions::{ Noise, OpenSimplexNoise, Perlin, CellDistance, OpenSimplex2s, Sample2, Sample3, NoiseFn };

let point = [1.0, 2.0];

// perlin noise
let value = Perlin.sample2(point);

// seeded perlin noise
let value = Perlin.seed(42).sample2(point);

// fractal perlin noise
let value = Perlin.fbm(3, 0.5, 3.0).sample2(point);

// seeded fractal perlin noise
let value = Perlin.fbm(3, 0.5, 3.0).seed(42).sample2(point);

// perlin noise with adjusted frequency
let value = Perlin.frequency(3.0).sample2(point);

// cell distance (voronoi/worley) noise
let value = CellDistance::default().sample2(point);

// cell distance (voronoi/worley) noise with jitter multiplier
let value = CellDistance::default().jitter(0.5).sample2(point);

// domain warped OpenSimplex2s noise
let warped_noise = |point: [f32; 2]| {
    let warp_x = OpenSimplex2s.seed(1).sample2(point);
    let warp_y = OpenSimplex2s.seed(2).sample2(point);
    let warped = [point[0] + warp_x, point[1] + warp_y];
    OpenSimplex2s.sample2(warped)
};

let value = warped_noise(point);

let point = [1.0, 2.0, 3.0];

// 3d OpenSimplex2s noise
let value = OpenSimplex2s.sample3(point);

// 3d OpenSimplex2s noise with improved isotropy in the xy plane
let value = OpenSimplex2s.improve3_xy().sample3(point);

§Feature flags

  • std (enabled by default) — Uses floating point functions from the standard library.
  • libm — Uses libm for floating point functions. Required for no_std.
  • nightly-simd — Adds support for sampling with simd types.

Modules§

Structs§

  • 2/3/4 dimensional noise of the distance to the closest cell.
  • 2/3/4 dimensional noise of the squared distance to the closest cell.
  • 2/3/4 dimensional noise of the random value of the closest cell.
  • Wraps a function to make it implement Sample.
  • 2/3/4 dimensional OpenSimplex2 noise. Fast variant.
  • 2/3/4 dimensional OpenSimplex2 noise. Smooth variant.
  • 2/3/4 dimensional Perlin noise.
  • 2/3/4 dimensional Simplex noise.
  • 2/3/4 dimensional Value noise.
  • 2/3 dimensional Cubic Value noise.

Traits§

  • Provides modifier methods for noise types.
  • Provides modifier methods for OpenSimplex noises.
  • Trait for sampling noises.
  • Helper trait that provides sample2 for every Sample<2>.
  • Helper trait that provides sample3 for every Sample<3>.
  • Helper trait that provides sample4 for every Sample<4>.
  • Sample2anightly-simd
    Helper trait that provides sample2a for every Sample<2, f32x2>.
  • Sample3anightly-simd
    Helper trait that provides sample3a for every Sample<3, f32x4>.
  • Sample4anightly-simd
    Helper trait that provides sample4a for every Sample<4, f32x4>.
  • Trait for sampling noises with a seed.