36个版本
使用旧的Rust 2015
0.8.3 | 2023年11月30日 |
---|---|
0.8.2 | 2023年1月20日 |
0.8.1 | 2022年12月10日 |
0.8.0 | 2022年4月14日 |
0.2.0 | 2017年2月7日 |
#221 in 图形API
21,304 每月下载量
用于 少于 63 crate
28MB
620K SLoC
shaderc-rs
Rust对shaderc库的绑定。
免责声明
这不是一个官方的Google产品(实验性或其他),这只是Google拥有的代码。
用法
包含的shaderc-sys crate使用build.rs
来发现或构建shaderc库的副本。请参阅设置部分。
首先添加到您的Cargo.toml
[dependencies]
shaderc = "0.8"
然后添加到您的crate根目录
extern crate shaderc;
文档
shaderc提供了编译GLSL/HLSL源代码到SPIR-V二进制模块或汇编代码的Compiler
接口。它还可以将SPIR-V汇编转换为二进制模块。默认的编译行为可以使用CompileOptions
进行调整。成功的结果保存在CompilationArtifact
中。
示例
编译着色器到SPIR-V二进制模块和汇编文本
use shaderc;
let source = "#version 310 es\n void EP() {}";
let mut compiler = shaderc::Compiler::new().unwrap();
let mut options = shaderc::CompileOptions::new().unwrap();
options.add_macro_definition("EP", Some("main"));
let binary_result = compiler.compile_into_spirv(
source, shaderc::ShaderKind::Vertex,
"shader.glsl", "main", Some(&options)).unwrap();
assert_eq!(Some(&0x07230203), binary_result.as_binary().first());
let text_result = compiler.compile_into_spirv_assembly(
source, shaderc::ShaderKind::Vertex,
"shader.glsl", "main", Some(&options)).unwrap();
assert!(text_result.as_text().starts_with("; SPIR-V\n"));
设置
shaderc-rs需要C++的shaderc库。它包含在Vulkan SDK中。您可能可以使用一些Linux发行版的包管理器直接安装它。C++ shaderc项目提供了工件下载。您也可以从源代码构建它。
在尝试获取本地 shaderc 的优先级顺序中,可以通过几个选项控制构建脚本,这些选项在构建 shaderc-rs 时传递给 shaderc-sys
- 如果指定了选项
--features build-from-source
,则从源码构建。 - 如果将环境变量
SHADERC_LIB_DIR
设置为/path/to/shaderc/libs/
,则会搜索该路径以查找本地动态或静态 shaderc 库。 - 如果设置了环境变量
VULKAN_SDK
,则会在$VULKAN_SDK/lib
搜索本地动态或静态 shaderc 库。 - 在 Linux 上,如果未设置
SHADERC_LIB_DIR
,则会额外搜索系统库路径,如/usr/lib/
,以查找本地动态或 shaderc 库。 - 如果通过以上步骤找不到本地 shaderc 库,则从源码构建。
对于每个库目录,构建脚本将首先尝试查找并链接到动态本地 shaderc 库 shaderc_shared
,然后是静态本地 shaderc 库 shaderc_combined
。要优先搜索静态库然后是动态库,可以使用选项 --features prefer-static-linking
。
从源码构建
shaderc-sys 的 build.rs
会自动检出并编译本地 C++ shaderc 的副本,并将其链接到生成的工件,这需要 git
、cmake
和 python
在 PATH
中存在。
此外
- 在 windows-msvc 上需要 Ninja,但在所有其他平台上是可选的。
这些需求可以使用您喜欢的包管理器或从项目的网站上的安装程序进行安装。下面是一些示例设置方法。
windows-msvc 示例设置
rustupdefault stable-x86_64-pc-windows-msvc
- 安装 Build Tools for Visual Studio 2017。如果您已经使用过此工具链,则它可能已经安装。
- 安装上述列出的必要工具,并将它们的路径添加到环境变量
PATH
中。
windows-gnu 示例设置
windows-gnu 工具链不受支持,但您可以从 windows-msvc 交叉编译到 windows-gnu。
步骤 1 和 2 是通过使用与 rust 相同的 mingw 来解决 https://github.com/rust-lang/rust/issues/49078。
- 下载并解压 https://s3-us-west-1.amazonaws.com/rust-lang-ci2/rust-ci-mirror/x86_64-6.3.0-release-posix-seh-rt_v5-rev2.7z
- 将 mingw64\bin 的绝对路径添加到您的环境变量
PATH
中。 - 运行命令:
rustup default stable-x86_64-pc-windows-msvc
- 运行命令:
rustup target install x86_64-pc-windows-gnu
- 安装 Build Tools for Visual Studio 2017。如果您已经使用过此工具链,则它可能已经安装。
- 安装 msys2,按照所有说明进行。
- 然后在 msys2 终端中运行:
pacman --noconfirm -Syu mingw-w64-x86_64-cmake mingw-w64-x86_64-make mingw-w64-x86_64-python3 mingw-w64-x86_64-ninja
- 将 msys2 mingw64 二进制路径添加到环境变量
PATH
中。 - 任何构建项目的货物命令都需要包含
--target x86_64-pc-windows-gnu
,例如运行:cargo run --target x86_64-pc-windows-gnu
Linux 示例设置
使用您的包管理器安装所需的开发工具
例如在 ubuntu 上
sudo apt-get install build-essential cmake git ninja python3
在 Arch Linux 上,您可以直接安装 shaderc 包。
macOS 示例设置
假设 Homebrew
brew install git cmake ninja [email protected]
贡献
该项目遵循 Apache 2 许可协议。在贡献之前,请参阅 贡献指南。
作者
该项目由 Zhang Lei (@antiagainst) 初始化并主要开发。