3个稳定版本
1.1.1 | 2021年10月11日 |
---|---|
1.1.0 | 2021年10月10日 |
1.0.0 | 2021年4月29日 |
在 过程宏 中排名第2049
9KB
79 代码行
include_wgsl
一个小型过程宏,用于将WGSL文件包含到您的二进制文件中,并在编译时验证其有效性。
示例
这是如何创建一个 wgpu
着色器模块的示例
let shader_str = include_wgsl!("shader.wgsl");
device.create_shader_module(&ShaderModuleDescriptor {
source: ShaderSource::Wgsl(Cow::Borrowed(&shader_str)),
flags: ShaderFlags::default(),
label: None,
})
这个宏的功能与使用 include_str!("shader.wgsl")
完全相同,但它还确保使用 naga
在编译时验证您的WGSL。
如果您的WGSL代码有效,编译将继续,但如果您的WGSL无效,您将收到一个友好的naga错误,并且编译将中断
error: Unable to parse shader.wgsl
error: invalid field accessor `world_positoon`
┌─ wgsl:33:9
│
33 │ out.world_positoon = world_position.xyz;
│ ^^^^^^^^^^^^^^ invalid accessor
语法错误通常是很容易理解的,但到目前为止,naga验证错误有点密集。我不认为改进它们是这个项目的范围之内,但我会很高兴在naga使它们更易于接近时更新这个crate。
Nightly
这个crate目前只支持nightly版本。如果我在nightly和更少的依赖项之间必须做出选择,我选择nightly,并且在crate中我坚持了这一理念。
依赖项
~5–14MB
~158K SLoC