#perlin-noise #noise #simplex-noise #perlin #simplex #random #procedural

无 std noise-functions

快速且轻量级的噪声函数

7 个版本

0.2.1 2024 年 5 月 4 日
0.2.0 2024 年 5 月 4 日
0.1.3 2024 年 5 月 3 日
0.1.2 2024 年 4 月 26 日
0.0.0 2024 年 4 月 26 日

#459 in 算法


用于 noise-functions-config

MIT/Apache

180KB
4.5K SLoC

噪声函数

Crates.io Documentation Rust License

快速且轻量级的噪声算法实现。

查看实时演示

这些噪声函数的实现来自 FastNoiseLite.

基础噪声

分形噪声

域扭曲噪声

为什么不使用 noiselibnoise

使用 noise,构建如 Perlin 的噪声结构时会在运行时创建一个排列表。因此,为了有效地使用噪声,您需要保留 Perlin 的实例。

使用 noise-functionsPerlin 和其他结构不携带任何状态。这使得噪声算法更容易高效地使用。例如,您可以在不携带状态的情况下使用噪声算法,而不会牺牲性能

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

优点: noise 有更多的噪声函数、更多的噪声函数维度和更多的噪声组合器。

差异: noise 使用 f64 而不是 f32

为什么不使用 fastnoise-lite

fastnoise-lite 通过一个大的结构体提供其噪声生成,您需要对其进行修改以获取所需的噪声。如果您已经知道需要什么噪声,此 API 不方便且效率低下。如果需要,有提供类似 API 的 noise-functions-config 库。

优点: fastnoise-lite 提供了更多的细胞噪声变体,并将域扭曲内置到配置结构体中。

依赖项

~130KB