In Visual Studio 2012, Microsoft has indroduced Graphics Debugger, you can use it to capture a frame from platforms like Unity Editor, Windows Standalone or Windows Store Apps.
建议使用 Visual Studio 2013,因为它包含几个适用于图形调试器的修订。
注意:Unity Editor 中包含多个子窗口,这可能会导致图形调试器从不正确的窗口捕获帧,为了确保捕获正确的窗口,选中“Maximize on Play”选项卡,然后在捕获前点击 Play 按钮,但即便如此也无法保证将捕获正确的窗口,这就是为什么不建议使用 Unity Editor 来捕获帧的原因。
注意:只有 Unity 在 DirectX 11 下运行时才能捕获帧,您可以从 Player Settings (PC, Mac & LinuxStandalone) > Other Settings 中选择 DirectX 11。
从 Unity Editor 或 Windows 独立平台中捕获帧的步骤:
调试 DirectX 11 着色器的步骤:
着色器应如下所示:
Shader "Custom/NewShader" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert
#pragma enable_d3d11_debug_symbols
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o) {
half4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
如果正确执行了所有操作,应看到以下捕获的帧,右键单击并选择 Pixel History,然后选择分配了自定义着色器的对象的像素。
单击 Vertex Shader 旁边的 Play 按钮(以上截屏中用红色圈出),应该能够调试顶点着色器。
For Windows Store Apps, it’s a bit easier, because you don’t need to create a dummy Visual Studio project, the project is already created by Unity.
捕获帧和进行着色器调试的步骤与 Unity Editor 或 Windows 独立平台的步骤相同。
在 Unity Editor 中,还可使用 RenderDoc 来调试着色器,方法是在 Editor 中捕获场景并在独立工具中进行调试。