13个版本 (6个重大更改)
0.9.0 | 2023年7月25日 |
---|---|
0.7.0 | 2023年4月21日 |
0.6.1 | 2023年3月20日 |
0.4.0 | 2022年12月21日 |
0.1.0 | 2020年10月16日 |
#132 在 图形API
每月 233次下载
用于 krnlc
330KB
6.5K SLoC
spirv-builder
此crate提供 SpirvBuilder
,一个使用rust-gpu构建着色器的工具。
它负责将Rust的SPIR-V后端rustc_codegen_spirv
拉入,并使用适当的编译器选项执行嵌套构建,其中一些选项可以使用SpirvBuilder
API设置。
示例
use spirv_builder::{MetadataPrintout, SpirvBuilder};
fn main() -> Result<(), Box<dyn std::error::Error>> {
SpirvBuilder::new("my_shaders", "spirv-unknown-vulkan1.1")
.print_metadata(MetadataPrintout::Full)
.build()?;
Ok(())
}
此示例将构建一个名为my_shaders
的着色器crate。您通常会将此代码插入需要着色器二进制的crate的build.rs
中。着色器模块的二进制路径将设置在my_shaders.spv
环境变量中,您可以使用类似以下方式将其包含到项目中:
const SHADER: &[u8] = include_bytes!(env!("my_shaders.spv"));
使用spirv-builder
构建
由于 spirv-builder
依赖于为它构建 rustc_codegen_spirv
(通过 Cargo,作为直接依赖项),并且由于后者的特殊性质(作为一个 rustc
代码生成后端“插件”),两者最终都共享对非常特定版本的 Rust 夜间构建工具链的需求。
当前 Rust 工具链版本为:nightly-2023-05-27
。
自 rust-gpu
版本 0.4
以来,Rust 工具链版本历史(在 rust-gpu 发布 中)
spirv-builder 版本 |
Rust 工具链 版本 |
---|---|
0.9 |
nightly-2023-05-27 |
0.8 |
nightly-2023-04-15 |
0.7 |
nightly-2023-03-04 |
0.6 |
nightly-2023-01-21 |
0.5 |
nightly-2022-12-18 |
0.4 |
nightly-2022-10-29 |
由于补丁版本必须与 semver 兼容,它们将始终需要相同的工具链(例如,0.6.0
和 0.6.1
都使用 nightly-2023-01-21
)。*
仅支持那个精确的 Rust 夜间工具链版本。自 0.4
以来,会检查您当前 Rust 工具链的提交哈希,如果您使用错误的工具链构建 rustc_codegen_spirv
,则会遇到构建错误。
值得注意的是,错误还会显示 rust-toolchain.toml
文件应该包含的内容(以获取预期的工具链),您可以在更新到新版本时依赖于此。
如果您想尝试使用不同的、不受支持的
Rust 工具链版本,可以通过定义环境变量 RUSTGPU_SKIP_TOOLCHAIN_CHECK
来省略此检查。请注意,由于 rustc_codegen_spirv
严重依赖于 rustc
的内部 API,与支持的工具链版本差异过大将迅速导致编译错误(或者更糟,例如,在编译着色器时出现虚假错误和/或错误行为)。
依赖项
~4–15MB
~220K SLoC