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 Universal Windows Platform.
Рекомендуется использовать Visual Studio 2013, так как в этой версии есть некоторые исправления отладчика графики.
На заметку: Unity Editor содержит несколько других окон внутри, из-за этого отладчик графики может захватить кадр не из нужного окна. Чтобы убедиться, что захват произойдёт из нужного окна, включите режим ‘Maximize on Play’ и нажмите кнопку Play перед началом захвата, но даже тогда нет гарантии, что захват произойдёт из нужного окна. Именно поэтому не рекомендуется использовать Unity Editor для захвата кадра.
На заметку: Кадры могут быть захвачены, только если Unity работает в режиме DirectX 11. Вы можете включить режим DirectX 11 в пункте меню Player Settings (PC, Mac & LinuxStandalone) -> Other Settings.
Шаги для захвата кадра из Unity Editor или standalone приложения 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 и выберите пиксель объекта, который использует ваш шейдер.
Нажмите на кнопку play рядом с пунктом Vertex Shader (обведена красным на скриншоте ниже). Теперь вы сможете заняться отладкой вершинного шейдера.
For Universal Windows Platform, it’s a bit easier because you don’t need to create a dummy Visual Studio project as the project is already created by Unity.
Шаги для захвата кадра и отладки шейдера точно такие же, как и для Unity Editor или приложения Windows.
In the Unity Editor, you can also use RenderDoc to debug shaders, by capturing the scene from within the editor and debugging in the standalone tool.