noise-functions

Crates.ionoise-functions
lib.rsnoise-functions
version0.2.1
sourcesrc
created_at2024-04-26 00:24:16.259518
updated_at2024-05-04 16:27:02.171748
descriptionFast and lightweight noise functions.
homepage
repositoryhttps://github.com/bluurryy/noise-functions
max_upload_size
id1220832
size189,745
(bluurryy)

documentation

https://docs.rs/noise-functions

README

Noise Functions

Crates.io Documentation Rust License

Fast and lightweight noise algorithm implementations.

Check out the live demo!

The implementation of these noise functions are from FastNoiseLite.

Base noises

Fractal noises

Domain warped noises

Why not noise or libnoise?

With noise, constructing a noise struct like Perlin creates a permutation table at runtime. So to use the noise efficiently, you need to keep that instance of Perlin around.

With noise-functions, Perlin and friends don't carry any state. This makes noise algorithms easier to use efficiently. For example, you can use the noise algorithms without having to carry around state, without sacrificing performance:

fn my_noise(point: Vec2) -> f32 {
    Perlin.fbm(3, 0.5, 2.0).seed(42).frequency(3.0).sample2(point)
}

Pros: noise has more noise functions, more dimensions for noise functions and more noise combinators.

Difference: noise uses f64 instead of f32.

Why not fastnoise-lite?

fastnoise-lite provides its noise generation via a big struct that you are to mutate to get the noise you want. If you already know what noise you want this api is inconvenient and inefficient. There is the noise-functions-config crate that provides a similar api if you need it.

Pros: fastnoise-lite provides more cellular noise variations and has domain warping built into the config struct.

Commit count: 95

cargo fmt