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
123,355 每月下载量
在 1,047 个包(6 个直接) 中使用
105KB
2.5K SLoC
🌤 hassle-rs
这个包提供了对新 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许可证下授权(LICENSE 或 http://opensource.org/licenses/MIT)
贡献
- Graham Wihlidal
- Tiago Carvalho
- Marijn Suijten
- Tomasz Stachowiak
- Manon Oomen
贡献
除非您明确声明,否则您提交给此crate的任何有意包含的贡献均应按上述方式许可,不附加任何额外条款或条件。
贡献总是受欢迎的;请查看问题跟踪器以查看已记录的已知改进。
依赖
~1–6.5MB
~31K SLoC