Microsoft는 Visual Studio 2012에 그래픽스 디버거를 도입했습니다. 이 디버거를 사용하여 Unity 에디터, Windows 스탠드얼론 또는 유니버설 Windows 플랫폼 같은 플랫폼에서 프레임을 캡처할 수 있습니다.
그래픽스 디버거의 문제를 몇 개 수정한 Visual Studio 2013을 사용하는 것이 좋습니다.
참고: Unity 에디터 안에는 여러 자식 창이 있기 때문에 그래픽스 디버거가 잘못된 창에서 프레임을 캡처할 수 있습니다. 올바른 창이 캡처되도록 하려면 ‘Maximize on Play’ 탭을 선택하고 캡처 전에 플레이 버튼을 눌러야 합니다. 하지만 그래도 올바른 창이 캡처된다는 보장이 없기 때문에 Unity 에디터를 사용하여 프레임을 캡처하는 것은 권장되지 않습니다.
참고: Unity가 DirectX 11에서 실행 중인 경우에만 프레임이 캡처됩니다. Player Settings(PC, Mac 및 Linux 스탠드얼론) -> 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 버튼을 클릭하면 버텍스 셰이더를 디버그할 수 있습니다.
유니버설 Windows 플랫폼의 경우 Unity에서 프로젝트를 미리 만들기 때문에 더미 Visual Studio 프로젝트를 만들지 않아도 되므로 좀 더 편리합니다.
프레임 캡처 및 셰이더 디버깅 절차는 Unity 에디터 또는 Windows 스탠드얼론의 경우와 동일합니다.
Unity 에디터에서는 RenderDoc을 사용하여 셰이더를 디버그할 수도 있습니다. 에디터 안에서 씬을 캡처하고 스탠드얼론 툴에서 디버그하면 됩니다.