因为做这个工具的需求就是要在Unity中还原,所以我需要还原程hlsl代码。为了尽量减少人工,因此我需要一版hlsl的编译结果。
已知SPIRV-Cross是可以做这个事情的,只是默认没配。那我们来配一下
在Renderdoc中配置和查看
- 先打开Settings-Shader Viewer

- 查看Process列,如果有转到HLSL的版本那当我没说,直接用就行
- 如果没有的话我们就需要自己新建,点击Add新增一项

- 已知SPRIV-Cross可以做这个,那我们就使用SPIRV-Cross作为Tool。把Executable设置为你本地的那个spirv-cross.exe文件
- 注意Tool Type必须选择Custom Tool,因为如果Tool Type直接选择为SPIRV-Cross会直接被Renderdoc锁死Input 和 Output不能修改,经典我教你做事
- 然后遵循上面一条,Input改为SPIR-V,Output改为HLSL

- 对于Custom Tool来说,Command Line是一定要有内容的,否则可执行文件不知道如何编译。这里只需要为它定义 输入输出的文件和编译方式,像这样
{input_file} --output {output_file} --hlsl
注意这里Renderdoc默认给出的指令对于输入文件是有如下标记的
--input
这个是否需要使用跟SPIRV-Cross的版本可能有关,中间换过API。我自己本地版本测试是不能带这个标记的,然后要把{input_file}放在最前(指令写法相当于上一篇文章CLI中的Command)。有可能你的版本需要遵循Renderdoc演示加上这个标记才能识别input file。
以及如果你“机智”的按照官方说明把 - - stage 的配置从{glsl_stage4}改为{hlsl_stage2},是编不出结果的,提示没这个stage,原因未知,把这个设置去掉就正常了
总之最后大致配置就是长上面截图那个样子
- 自行设置一个名字,我这里是设置为spirv-cross-HLSL,点OK保存后,在Disassembly type中可以查看到新增选项 HLSL,括号内是你自己的命名

- 然后运行正常的话就可以直接编译出结果了

使用Python代码配置和查看
基于上一篇进行修改
在上一篇Args这里我是使用了“-v”指令进行的编译,意思是—vulkan-semantics的缩写,把Vulkan生成的SPIR-V转为GLSL(这是SPIRV-Cross的默认规则)
如果你想转hlsl,实际上按照文档给出的,只要把-v换成—hlsl就可以了

同时也记得把- -stage设置也去掉
- 作者:Reguluz
- 链接:https://reguluz.site/article/15065fbc-2b71-8000-b325-e12ac8ffc85d
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章