Microsoft が Visual Studio 2012 で導入したグラフィックスデバッガは、Unity エディター、Windows スタンドアロン、ユニバーサル Windows プラットフォーム などのプラットフォームからのフレームをキャプチャするために使用することができます。
最近、グラフィックスデバッガにいくつかの修正が行われたので、Visual Studio 2013 を使用することをお勧めします。
注意: Unity エディターは、内部に複数の子ウィンドウが含まれています。これは、グラフィックスデバッガが誤ったウィンドウのフレームをキャプチャすることがあるためです。正しいウィンドウをキャプチャすることを確実にするために、‘Maximize on Play’ タブをチェックして、キャプチャする前に Play ボタンをクリックしましょう。ですが、これでも正しいウィンドウがキャプチャされるという保証はありません。これがフレームのキャプチャで Unity エディターの使用を推奨していない理由です。
注意: Unity が DirectX 11 で実行されている場合、フレームは、キャプチャのみすることができます。Player Settings (PC、Mac、LinuxStandalone) -> Other Settings から DirectX 11 を選択することができます。
Unity エディターや 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 ボタン(上のスクリーンショットで赤丸部分)をクリックすると、vertex シェーダーをデバッグすることができるはずです。
ユニバーサル Windows プラットフォームに関しては、Unity がすでにプロジェクトを作成していて、ダミーの Visual Studio プロジェクトを作成する必要はないので、少しは簡単です。
フレームのキャプチャとシェーダーをデバッグするための手順は、Unity Editor や Windows スタンドアロンと同じようなものです。
Unity エディターでは、RenderDoc を使用してシェーダーをデバッグすることもできます。エディター内部からシーンをキャプチャして、スタンドアロンツールでデバッグを行います。