11个版本
0.2.10 | 2024年6月8日 |
---|---|
0.2.9 | 2023年9月20日 |
0.2.8 | 2022年3月28日 |
0.2.7 | 2021年5月5日 |
0.1.0 | 2019年2月26日 |
#172 in 渲染
每月 661 次下载
在 4 crate 中使用
17KB
292 代码行
vk-shader-macros
用于将GLSL编译为SPIR-V常量的过程宏。
与标准 include_bytes
宏不同,路径目前是相对于crate根目录解析的。这是由于过程宏API的一个临时限制。
示例
const VERT: &[u32] = include_glsl!("shaders/example.vert");
const FRAG: &[u32] = include_glsl!("shaders/example.glsl", kind: frag);
const RGEN: &[u32] = include_glsl!("shaders/example.rgen", target: vulkan1_2); // vulkan1_2 is required to build with GL_EXT_ray_tracing
默认生成调试信息;将 strip
传递给宏以省略它,或使用具有 strip
功能构建crate。
为什么是 [u32]
?
SPIR-V是一系列32位单词,而不是字节,这在消费它的API中得到反映。特别是,如果传递给Vulkan的SPIR-V不是4字节对齐的 [u8]
,则会发生未定义行为。以SPIR-V的原生格式存储它保证了这永远不会发生,而不需要复制或不安全的代码。
依赖项
此crate目前依赖于外部的 shaderc 库。默认情况下,它将尝试使用已安装的shaderc库。但是,如果它不存在,它将回退到从源代码构建,需要git、cmake、python 3以及构建环境中可用的支持的C++编译器。当使用预编译的shaderc时,必须注意使用与 shaderc crate 检出的版本兼容的版本。您可以通过在vk-shader-macros上启用 build-from-source
功能来强制shaderc从源代码构建。
依赖项
~29MB
~642K SLoC