3个不稳定版本
0.1.1 | 2022年10月1日 |
---|---|
0.1.0 | 2022年10月1日 |
0.0.1 | 2022年10月1日 |
#1082 in 图形API
105KB
2.5K SLoC
SPIR-Q 反射工具
spirq-reflect
是着色器反射库 spirq
的命令行前端。它从SPIR-V着色器二进制文件生成反射JSON。您可以使用以下命令安装 spirq-reflect
cargo install spirq-reflect
用法
运行以下命令以反射SPIR-V二进制文件并生成JSON报告
spirq-reflect assets/spirv-spec.frag.spv
或者以下命令,如果您希望反射所有声明的资源,即使它们在着色器中从未使用。
spirq-reflect assets/spirv-spec.frag.spv --ref-all-rscs
请运行 spirq-reflect -h
以获取所有可用的命令行选项的详细描述。
示例输出
spirv-spec.frag.spv
二进制文件在 spirq
仓库中给出了以下输出
{
"EntryPoint": "main",
"ExecutionModel": "Fragment",
"Variables": {
"Inputs": [
{
"Name": "_42",
"Location": 2,
"Component": 0,
"Type": "vec4<f32>"
},
{
"Name": "_57",
"Location": 1,
"Component": 0,
"Type": "vec4<f32>"
},
{
"Name": "_33",
"Location": 0,
"Component": 0,
"Type": "vec4<f32>"
}
],
"Outputs": [
{
"Name": "_31",
"Location": 0,
"Component": 0,
"Type": "vec4<f32>"
}
],
"Descriptors": [
{
"Name": "_20",
"Set": 0,
"Binding": 0,
"DescriptorType": "UniformBuffer",
"Type": {
"Kind": "Struct",
"Members": [
{
"Name": "_18_0",
"Offset": 0,
"MemberType": {
"Kind": "Struct",
"Members": [
{
"Name": "_17_0",
"Offset": 0,
"MemberType": "u32"
},
{
"Name": "_17_1",
"Offset": 16,
"MemberType": {
"Kind": "Array",
"ElementType": "vec4<f32>",
"Count": 5,
"Stride": 16
}
},
{
"Name": "_17_2",
"Offset": 96,
"MemberType": "i32"
}
]
}
},
{
"Name": "_18_1",
"Offset": 112,
"MemberType": "u32"
}
]
},
"Count": 1
}
],
"PushConstants": [],
"SpecConstants": []
}
}
依赖项
~2.7–4MB
~72K SLoC