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

Download history 230/week @ 2024-03-12 327/week @ 2024-03-19 160/week @ 2024-03-26 113/week @ 2024-04-02 46/week @ 2024-04-09 64/week @ 2024-04-16 91/week @ 2024-04-23 80/week @ 2024-04-30 61/week @ 2024-05-07 105/week @ 2024-05-14 80/week @ 2024-05-21 72/week @ 2024-05-28 56/week @ 2024-06-04 53/week @ 2024-06-11 70/week @ 2024-06-18 45/week @ 2024-06-25

每月 233次下载
用于 krnlc

MIT/Apache

330KB
6.5K SLoC

spirv-builder

Rust version

此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.00.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