Version: 2018.2
使用 Visual Studio 来调试 DirectX 11/12 着色器
在着色器中实现固定函数 TexGen

使用 PIX 来调试 DirectX 12 着色器

PIX 是 Microsoft 为 Windows 开发人员提供的性能调优和调试工具。此工具提供了一系列用于分析应用程序性能的模式,并包括从应用程序中捕获 DirectX 项目的帧以进行调试的功能。

使用 PIX 可调查 Windows 64位 (x86_64) 独立平台或通用 Windows 平台应用程序中的问题。

要安装 PIX,请下载并运行 Microsoft PIX 安装程序,按照说明进行操作。

有关 PIX 的更多信息,请参阅 Microsoft 的 PIX 说明 (Introduction)PIX 文档 (Documentation)

使用 PIX 来调试 DirectX 着色器

应使用已构建的 Unity 应用程序版本来捕获帧,而不是使用 Unity Editor 中运行的版本。这是因为需要从 PIX 中启动目标应用程序来才能捕获 GPU 帧。

使用开发版可为 PIX 添加额外的信息,从而使得场景捕获操作更加容易。

使用支持调试的着色器来创建项目

要在 PIX 中使用源代码调试着色器,必须将以下 pragma 插入到着色器代码中:#pragma enable_d3d11_debug_symbols

示例

以下演练程序使用一个基本示例演示整个操作过程。

创建一个基本项目:

1.创建新的 Unity 项目(请参阅入门文档)。

2.在顶部菜单中,选择 Assets > Create > Shader > Standard Surface Shader。此时将在 Project 文件夹中创建一个新的着色器文件。

3.选择着色器文件,然后在 Inspector 窗口中单击 Open。此时将在脚本编辑器中打开着色器文件。将 #pragma enable_d3d11_debug_symbols 插入到着色器代码中的其他 #pragma 行下面。

4.创建新的材质(菜单:__Assets__ > Create > __Material__)。

5.在 Material Inspector 窗口中,选择 Shader 下拉选单,选择 __Custom__,然后选择刚创建的着色器。

6.创建 3D 立方体游戏对象(菜单:__GameObject__ > 3D Object > __Cube__)。

7.将新材质分配给新的游戏对象。要执行此操作,请将材质从 Project 窗口拖到 3D 立方体上。

从 Windows 独立平台应用程序中捕获帧:

1.选择 File > Build Settings__,然后在 Platform__ 下选择 PC, Mac & Linux Standalone。将 Target Platform 设置为 Windows__,将 Architecture__ 设置为 x86_64__,然后单击 Development Build__ 复选框。

![](../uploads/Main/PIXDebugBuildSettings.png)

2.单击 Build

3.启动 PIX

4.单击 Home__,然后单击 Connect__。

5.选择计算机 localhost 以使用您的 PC 进行捕获,然后单击 Connect

6.在 Select Target Process 对话框中,选择 Launch Win32 选项卡,然后使用 Browse 按钮选择应用程序的可执行文件。注意,这里的“Win32”表示非 UWP 应用程序;您的应用程序文件必须是 64 位二进制文件。

7.启用 Launch for GPU Capture__,然后使用 Launch__ 按钮启动应用程序。

![](../uploads/Main/PIXDebugTargetProcess.png)

8.照常使用应用程序,直到准备好捕获帧。要捕获帧,请按键盘上的 Print Screen 键,或单击 GPU Capture 面板上的摄像机图标。在面板中将显示捕获的缩略图。要打开捕获结果,请单击缩略图。

![](../uploads/Main/PIXDebugGPUCapture.png)

9.要开始分析捕获结果,请单击突出显示的文本或菜单栏上的小 Play 图标。

![](../uploads/Main/PIXDebugAnalysisArrow.png)

10.选择 Pipeline __ 选项卡,然后使用 Events__ 窗口导航到您感兴趣的绘图调用。

![](../uploads/Main/PIXDebugPiplineTab.png)

11.在 Pipeline 选项卡的下半部分,从 OM (Output Merger) 列表中选择一个渲染目标以查看绘制调用的输出。在要调试的对象上选择一个像素。请注意,为了查找感兴趣的绘制调用,一种方法是可以右键单击像素以查看绘制调用历史记录。

12.在 Pixel Details 面板上选择 Debug Pixel

![](../uploads/Main/PIXDebugPixelDetails.png)

13.在调试面板上,使用 Shader Options 选择要调试的着色器阶段。

![](../uploads/Main/PIXDebugShaderOptions.png)

14.使用工具栏或键盘快捷键逐步执行代码。

![](../uploads/Main/PIXDebugShaderDebugger.png)

有关使用 PIX 调试着色器的更多信息,请参阅 Microsoft 的视频系列 Windows 上的 PIX (PIX on Windows),尤其是第 5 部分 - Debug 选项卡 (Part 5 - Debug Tab)

有关 PIX 中的 GPU 捕获的更多信息,请参阅 Microsoft 的 GPU 捕获 (GPU Captures) 文档。

使用 Visual Studio 来调试 DirectX 11/12 着色器
在着色器中实现固定函数 TexGen