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.
Se recomienda utilizar Visual Studio 2013, ya que contiene varios arreglos para el Depurador de Gráficos.
Nota: El Editor de Unity contiene varias ventanas hijas dentro, esto podría causar que el Depurador de Gráficos capture un frame de la ventana incorrecta, para asegurar que la ventana correcta será capturada, marque la pestaña ‘Maximize on Play’, y presione el botón de Play antes de capturar, pero incluso ahí no hay garantía que la ventana correcta será captura, esta es la razón por la cual no se recomienda usar el Editor de Unity para capturar un frame.
Nota: Los Frames solo se pueden capturar si Unity está ejecutándose bajo DirectX 11, usted puede seleccionar DirectX 11 de los Player Settings (PC, Mac & LinuxStandalone) -> Other Settings.
Pasos para capturar el frame desde el Editor de Unity o Windows Standalone:
Pasos para depurar el DirectX 11 shader:
Su shader (Sombreador) debería verse así:
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"
}
Si todo se hace correctamente, debe ver el siguiente frame capturado, haga clic derecho y seleccione Pixel History y seleccione el píxel de un objeto que tenga asignado su shader personalizado.
Haga clic en el botón play junto al Vertex Shader (rodeado en rojo en la captura de pantalla anterior), debe poder depurar el 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.
Los pasos para capturar el frame y la depuración de shader son iguales para el Editor de Unity o para Windows Standalone.
En el Editor de Unity, usted puede también usar RenderDoc para depurar los shaders, al capturar la escena dentro del editor y depurar la herramienta standalone.