#hlsl #shader #pipeline #dxc #wrapper #directx #intellisense

hassle-rs

HLSL 编译器库,这个包提供了对新的 DXC HLSL 编译器和验证器的 FFI 层和惯用 Rust 包装器

23 个版本

0.11.0 2023 年 11 月 1 日
0.10.0 2023 年 1 月 28 日
0.9.0 2022 年 3 月 24 日
0.5.4 2021 年 10 月 18 日
0.1.6 2018 年 12 月 15 日

#18 in 图形 API

Download history 22901/week @ 2024-04-23 20502/week @ 2024-04-30 17918/week @ 2024-05-07 18347/week @ 2024-05-14 20744/week @ 2024-05-21 24102/week @ 2024-05-28 22674/week @ 2024-06-04 22765/week @ 2024-06-11 21408/week @ 2024-06-18 22677/week @ 2024-06-25 23549/week @ 2024-07-02 28585/week @ 2024-07-09 32197/week @ 2024-07-16 29057/week @ 2024-07-23 29348/week @ 2024-07-30 26438/week @ 2024-08-06

123,355 每月下载量
1,047 个包(6 个直接) 中使用

MIT 许可证

105KB
2.5K SLoC

🌤 hassle-rs

Actions Status Latest version Documentation Lines of code MIT Contributor Covenant

Banner

这个包提供了对新 DirectXShaderCompiler 库的 FFI 层和惯用 Rust 包装器。

用法

将此内容添加到您的 Cargo.toml

[dependencies]
hassle-rs = "0.11.0"

然后在 Windows 上直接从 AppVeyor 获取 dxcompiler.dll 或在 Linux 上直接从 DirectXShaderCompiler GitHub 仓库中编译它,并确保它处于可执行环境中。请参阅下面的 支持表 以获取非 Windows 操作系统上的特定兼容性说明。

DxcValidator 还需要 dxil.dll,可以从任何最近的 DXC 发布版中获取:https://github.com/microsoft/DirectXShaderCompiler/releases/latest 更多信息:https://www.wihlidal.com/blog/pipeline/2018-09-16-dxil-signing-post-compile/

非 Windows 操作系统上支持的 DXC 版本

在Windows之外(例如Unix)的环境中,模拟的COM API需要大量修正才能与Windows上的布局匹配。这导致API反复崩溃,从hassle-rs内部难以检测到:务必将hassle-rs的发布版本与最低的DXC提交版本对应起来,以防止在Windows之外出现运行时错误!

hassle-rs DXC版本发布 Git提交
0.10.0 v1.7.2212 https://github.com/microsoft/DirectXShaderCompiler/commit/47f31378a9b51894b0465b33ac1d10ce6349a468
0.5.1(如果使用intellisense release-1.6.2012 https://github.com/microsoft/DirectXShaderCompiler/commit/2ade6f84d6b95bfd96eec1d6d15e3aa3b519d180

在MacOS上使用clang或Linux上使用gcc编译时,务必至少有https://github.com/microsoft/DirectXShaderCompiler/commit/af14220b45d3ce46e0bad51ce79655e41d07c478(也包含在release-1.6.2012中)。

与Unix支持相关的有趣DXC提交

这些补丁随着时间的推移对hassle-rs的兼容性产生了影响

用法示例

将HLSL编译成SPIR-V

let spirv = compile_hlsl(
    "shader_filename.hlsl",
    code,
    "copyCs",
    "cs_6_5",
    &vec!["-spirv"],
    &vec![
        ("MY_DEFINE", Some("Value")),
        ("OTHER_DEFINE", None)
    ],
);

将HLSL编译成DXIL并验证它

let dxil = compile_hlsl("test.cs.hlsl", test_cs, "main", "cs_6_5", args, &[]).unwrap();
let result = validate_dxil(&dxil); // Only a Windows machine in Developer Mode can run non-validated DXIL

if let Some(err) = result.err() {
    println!("validation failed: {}", err);
}

许可证

在MIT许可证下授权(LICENSEhttp://opensource.org/licenses/MIT

贡献

  • Graham Wihlidal
  • Tiago Carvalho
  • Marijn Suijten
  • Tomasz Stachowiak
  • Manon Oomen

贡献

除非您明确声明,否则您提交给此crate的任何有意包含的贡献均应按上述方式许可,不附加任何额外条款或条件。

贡献总是受欢迎的;请查看问题跟踪器以查看已记录的已知改进。

依赖

~1–6.5MB
~31K SLoC