3个稳定版本
1.1.1 | 2024年3月5日 |
---|---|
1.1.0 | 2023年10月15日 |
1.0.1 | 2023年10月6日 |
在 图像 类别中排名第 80
每月下载量 818
用于 noise-functions
140KB
2.5K SLoC
FastNoise Lite
FastNoise Lite 是一个极其便携的开源噪声生成库,具有大量噪声算法选择。此库专注于高性能,同时避免特定平台/语言的特性,允许轻松移植到尽可能多的语言。
特性
- 2D & 3D采样
- OpenSimplex2噪声
- OpenSimplex2S噪声
- 细胞(沃罗诺伊)噪声
- Perlin噪声
- 值噪声
- 值立方噪声
- 基于OpenSimplex2的域扭曲
- 基本网格梯度域扭曲
- 所有上述内容的多重分形选项
- 支持X/Y采样位置使用
f32
或f64
精度浮点数(请参阅下方的“特性标志”) no_std
(请参阅下方的“特性标志”)
特性标志
您可以在 Cargo.toml
文件中通过您的 fastnoise-lite
依赖项选择性地启用以下选项。
"f64"
:使用f64
而不是默认的f32
,X/Y坐标采样输入。"std"
:使用Rust标准库进行浮点数操作(sqrt()
、trunc()
、和abs()
)。必须启用此选项之一或"libm"
。如果没有指定功能标志,则默认启用(但请注意,指定"f64"
将意味着此选项不再是默认选项,并且也必须指定)。"libm"
:启用no_std
支持。必须启用此选项之一或"std"
。使用libm可选依赖项(通过num-traits可选依赖项)允许进行浮点数操作(sqrt()
、trunc()
、和abs()
),而不依赖于Rust标准库的实现。除非使用此功能标志,否则FNL无依赖项,此时将引入这些可选依赖项。
入门指南
- 首先,使用
FastNoiseLite::new()
或FastNoiseLite::with_seed(seed)
构造FastNoiseLite
结构体。 - 接下来,你可以调用各种设置函数来配置对象的噪声生成设置,以满足你的需求。
- 可选地,你可以使用
domain_warp_2d(x, y)
和domain_warp_3d(x, y, z)
将你的原始采样坐标转换为域扭曲坐标,然后再使用它们在下一步中采样噪声。 - 最后,通过调用
get_noise_2d(x, y)
或get_noise_3d(x, y, z)
在每个像素的X/Y(/Z)坐标处采样噪声值。你可能需要将输出范围从-1..1重新映射到你的所需范围。
有关项目入门和文档的信息,请参阅其GitHub维基页面的入门和文档页面。
以下是一个创建128x128 OpenSimplex2噪声数组的示例。
use fastnoise_lite::*;
// Create and configure the FastNoise object
let mut noise = FastNoiseLite::new();
noise.set_noise_type(Some(NoiseType::OpenSimplex2));
const WIDTH: usize = 128;
const HEIGHT: usize = 128;
let mut noise_data = [[0.; HEIGHT]; WIDTH];
// Sample noise pixels
for x in 0..WIDTH {
for y in 0..HEIGHT {
// Domain warp can optionally be employed to transform the coordinates before sampling:
// let (x, y) = noise.domain_warp_2d(x as f32, y as f32);
let negative_1_to_1 = noise.get_noise_2d(x as f32, y as f32);
// You may want to remap the -1..1 range data to the 0..1 range:
noise_data[x][y] = (neg_1_to_1 + 1.) / 2.;
// (Uses of `as f32` above should become `as f64` if you're using FNL with the "f64" feature flag)
}
}
// Do something with this data...
依赖项
~99KB