15 个版本
使用旧的 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.4.0 |
|
924 在 图形 API 中
17,296 每月下载量
在 shaderc 中使用
28MB
619K SLoC
shaderc-rs
Rust 对 shaderc 库的绑定。
免责声明
这不是一个官方的 Google 产品(实验性的或其他),它只是 Google 拥有的代码。
用法
包含的 shaderc-sys 包使用 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
- 安装Visual Studio 2017构建工具。如果您已经使用此工具链,则它可能已经安装。
- 安装上面列出的必要工具,并将它们的路径添加到环境变量
PATH
中。
windows-gnu示例设置
windows-gnu工具链不受支持,但您可以从windows-msvc交叉编译到windows-gnu。
步骤1和2是为了解决https://github.com/rust-lang/rust/issues/49078问题,通过使用rust使用的相同mingw来解决问题。
- 下载并解压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
- 安装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) 初始化和主要开发。