本文为(转):Unreal 调试着色器编译过程
啟用 CVAR 以允许转储中间着色器
此刻您想要生成可调试的文件;启用 Cvar 将允许后续编译转储所生成的文件;要强制重建所有着色器,请在Engine/Shaders/Common.usf 中添加一个空格或进行更改然后重新运行编辑器。这将重新编译着色器并转储Project/Saved/ShaderDebugInfo 文件夹中的所有中间文件
转储的着色器的文件夹结构
让我们汾析转储的文件的完整路径:
现在,对于每种着色器格式/平台您可找到一个子文件夹,在本例中这是 PC D3D Shader Model 5:
现在,对于每个材质名称都有┅个对应的文件夹并且有一个名为 Global 的特殊文件夹。在本例中我们在 M_Egg 材质内:
着色器分组在贴图内并按顶点工厂排序,而这些顶点工厂通常最终对应于网格/元件类型;在本例中有一个"本地顶点工厂":
最后,下一路径是特性的排列;因为我们早先已启用 r.DumpShaderDebugShortNames=1所以名称已压缩(以减小路径长度)。如果将其设置为 0那么完整路径将是:
在该文件夹中,有一个批处理文件和一个 usf 文件这个 usf 文件就是要提供给平台編译器的最终着色器代码。您可通过这个批处理文件来调用平台编译器以查看中间代码。
从 4.11 版开始我们为 ShaderCompileWorker (SCW) 添加了一项功能,使其能够調试平台编译器调用;命令行如下所示:
有关此主题的更多信息请参阅虚幻re引擎和虚幻4哪个好文档的以下两个页面: