7 个版本 (4 个破坏性版本)
0.7.0 | 2024 年 3 月 26 日 |
---|---|
0.5.2 | 2023 年 8 月 14 日 |
0.3.0 | 2022 年 9 月 18 日 |
0.2.0 | 2022 年 9 月 12 日 |
0.1.0 | 2022 年 7 月 8 日 |
#309 在 图形 API
每月 129 次下载
36KB
394 行
Bevy Shader Utils
一个提供一系列噪声函数和其他工具的实用程序包,用于在 wgpu 着色器中使用。
快速入门
在 wgsl 文件的顶部使用导入,Bevy 会处理其余部分。
#import bevy_pbr::forward_io::VertexOutput
#import bevy_shader_utils::simplex_noise_3d::simplex_noise_3d
struct Material {
scale: f32
};
@group(2) @binding(0)
var<uniform> material: Material;
@fragment
fn fragment(
mesh: VertexOutput
) -> @location(0) vec4<f32> {
let f: f32 = simplex_noise_3d(material.scale * mesh.world_position.xyz);
let color_a = vec3(0.282, 0.51, 1.0);
let color_b = vec3(0.725, 0.816, 0.698);
let mixed = mix(color_a, color_b, f);
return vec4(mixed, 1.0);
}
上述着色器由以下方式定义的材料使用。
#[derive(Asset, AsBindGroup, Debug, Clone, Reflect)]
pub struct ScreenshotSimplex3dMaterial {
#[uniform(0)]
scale: f32,
}
impl Material for ScreenshotSimplex3dMaterial {
fn fragment_shader() -> ShaderRef {
"shaders/screenshot_simplex3d_material.wgsl".into()
}
}
函数
Perlin 噪声
二维
#import bevy_shader_utils::perlin_noise_2d::perlin_noise_2d
var value = perlin_noise_2d(vec2<f32>(5.0, 6.0))
三维
#import bevy_shader_utils::perlin_noise_3d::perlin_noise_3d
var value = perlin_noise_3d(vec3<f32>(5.0, 6.0, 7.0))
Simplex 噪声
二维
#import bevy_shader_utils::simplex_noise_2d::simplex_noise_2d
var value = simplex_noise_2d(vec2<f32>(5.0, 6.0))
三维
#import bevy_shader_utils::simplex_noise_3d::simplex_noise_3d
var value = simplex_noise_3d(vec3<f32>(5.0, 6.0, 7.0))
Voronoise
Voronoi 和噪声:https://iquilezles.org/articles/voronoise/
#import bevy_shader_utils::voronoise::voronoise
var value = voronoise(vec2<f32>(5.0, 6.0), 0.0, 1.0)
依赖项
~18–45MB
~719K SLoC