#spir-v #reflection #vulkan #glsl #hlsl #graphics

spirv-layout

SPIRV反射工具,用于派生Vulkan DescriptorSetLayout

5个版本 (3个重大更新)

1.0.0 2022年1月26日
0.4.0 2022年1月28日
0.3.0 2022年1月26日
0.2.1 2022年1月25日
0.1.2 2021年12月22日

#918 in 游戏开发

每月35次下载

MIT许可证

38KB
858

SPIRV-Layout

MIT License Continuous integration Crates.io docs.rs

这个库解析SPIRV二进制文件并检索反射信息。它对于从着色器模块派生Vulkan DescriptorSetLayout以及查找着色器统一缓冲区中各个字段的偏移量和名称非常有用。

此crate被vulkan-engine项目使用。

用法

let bytes = std::fs::read(PATH).unwrap();
let words = unsafe { slice::from_raw_parts(bytes.as_ptr() as *const u32, bytes.len() / 4) };
let module = Module::from_words(words).unwrap();

println!("=== UNIFORMS ===");
for var in module.get_uniforms() {
    print_var(&module, var);
}

println!("=== PUSH CONSTANTS ===");
for var in module.get_push_constants() {
    print_var(&module, var);
}

有关实际用法的示例,请参阅examples/reflect-shader

依赖关系

~325–790KB
~19K SLoC