3个不稳定版本
0.2.0 | 2024年7月13日 |
---|---|
0.1.1 | 2024年6月1日 |
0.1.0 | 2024年5月29日 |
6 在 #shaders
每月120次下载
43KB
1K SLoC
bevy_compute_noise
一个用于使用计算着色器生成可平铺的2D/3D噪声纹理的bevy 0.14
插件。
查看此插件的演示: https://jadedbay.com/demo/bevy_compute_noise (仅限Chrome)
用法
将bevy_compute_noise
依赖项添加到Cargo.toml
[dependencies]
bevy_compute_noise = "0.2.0"
添加噪声插件
use bevy_compute_noise::prelude::*;
App::default()
.add_plugins(DefaultPlugins)
.add_plugins(ComputeNoisePlugin::<Perlin2D>::default()) // add new plugin for each type of noise needed
.run();
排队噪声生成
fn setup(
mut images: ResMut<Assets<Image>>,
mut perlin_2d_queue: ResMut<ComputeNoiseQueue<Perlin2D>>
) {
// Create and queue noise image
let noise_image: Handle<Image> = perlin_2d_queue.add(
&mut images,
ComputeNoiseSize::D2(128, 128), // Use ComputeNoiseSize::D3 for 3D noise
Perlin2d {
seed: 0,
frequency: 5,
octaves: 4
}
);
}
或者,您可以将ComputeNoiseComponent<T: ComputeNoise>
添加到实体中,每当它被更新时,它将自动排队
fn setup(
commands: Commands,
mut images: ResMut<Assets<Image>>,
) {
// Manually create noise image, so it can be used elsewhere.
let noise_image = ComputeNoiseImage::create_image(ComputeNoiseSize::D2(128, 128));
commands.spawn(ComputeNoiseComponent::<Perlin2d> {
image: noise_image.clone();
noise: Perlin2d {
seed: 0,
frequency: 5,
octaves: 4
}
});
}
噪声类型
- Worley2D
- Worley3D
- Perlin2D
待办事项
- 添加更多噪声类型。
- 允许组合噪声。
- 允许写入特定纹理通道。
读取回显
如果您需要将噪声纹理读取回CPU,您可以克隆readback分支并查看那里的示例。我对实现并不完全满意,而且最好还是使用另一个crate在CPU上生成噪声。
依赖项
~34–70MB
~1M SLoC