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