桌面 API:优化着色器
要确定着色器是否导致选定 draw call 的性能瓶颈,可在 Graphics Frame Analyzer 内部更改着色器代码,无需重新编译代码即可检查性能影响。
要试验着色器代码:
- 选择一个或多个想对其分析着色器代码的 draw calls。
- 从 Resource List 中选择选定的 draw call 中使用的着色器。Graphics Frame Analyzer显示着色器源代码以及该着色器使用的所有资源。
- 在Shader Resource List中,分析按类型分组的着色器中使用的资源:
- 常量缓冲区视图 (CBV)(仅 DirectX)
- 渲染目标视图 (RTV)
- 采样器
- 着色器资源视图 (SRV)(仅 DirectX)
- 存储缓冲区对象 (SBO)(仅 Vulkan)
- 存储纹理(仅 Vulkan)
- 纹理(仅 Vulkan)
- 统一缓冲区对象 (UBO)(仅 Vulkan)
- 无序访问视图 (UAV)(仅 DirectX)
- Vertext 缓冲区视图 (VBV)(仅 Vulkan)
Graphics Frame Analyzer 显示各种资源参数,使用该资源的着色器类型,以及每种资源绑定到的着色器寄存器。资源以如下格式列出:要打开资源,点击相应的资源名称。<shader name>:<register ID> <resource type>:<resource ID> (<view type><view ID>) <resource debug name> - 在Shader Type下拉列表中,从
下拉菜单中选择希望分析的着色器类型。着色器代码在
Shader Editor中打开。为了更加方便阅读,可点击
- 汇编代码为只读时,如果这些代码适用于您的着色器,则可以针对 DirectX* 试用 HLSL 代码,针对 Vulkan* 试用 HLSL 和 GLSL 代码。在此情况下,从
下拉菜单中选择 HLSL 或 GLSL,直接在
Shader Viewer中编辑代码。着色器动态重新编译。如果出错,可在Shader Editor下面的Notification窗格中看到相应的消息。 - 如果代码看起来不错,点击Main条形图中的Metrics窗格中显示新数据。提示点击
- 如果要撤消编辑,请点击