Version: 2018.1
Visual Studio로 DirectX 11/12 셰이더 디버깅
셰이더에서 고정 함수 TexGen 구현

PIX로 DirectX 12 셰이더 디버깅

PIX는 Windows 개발자를 위한 Microsoft의 튜닝 및 디버깅 툴입니다. 이 디버깅 툴은 애플리케이션의 성능을 분석하기 위한 다양한 모드를 제공하며, 디버깅을 위해 애플리케이션에서 DirectX 프로젝트의 프레임을 캡처하는 기능을 포함하고 있습니다.

PIX를 사용하여 Windows 64비트(x86_64) 스탠드얼론 또는 유니버설 Windows 플랫폼 애플리케이션에서 문제를 조사하십시오.

PIX를 설치하려면 Microsoft PIX 설치 프로그램을 다운로드하고 실행한 후 해당 지침을 따르십시오.

PIX에 대한 자세한 내용은 Microsoft의 PIX 소개PIX 문서를 참조하십시오.

PIX로 DirectX 셰이더 디버깅

프레임을 캡처하려면 Unity 에디터에서 실행되는 버전이 아니라 Unity 애플리케이션의 빌드된 버전을 사용해야 합니다. 이는 GPU 프레임을 캡처하려면 타겟 애플리케이션을 PIX 내에서 시작해야 하기 때문입니다.

개발용 빌드를 사용하면 PIX에 정보가 추가되어 씬 캡처를 탐색하기가 한결 쉽습니다.

디버그가 활성화된 셰이더로 프로젝트 만들기

PIX의 소스 코드로 셰이더를 디버그하려면 #pragma enable_d3d11_debug_symbols pragma를 셰이더 코드에 삽입해야 합니다.

예제

다음 단계별 안내에서는 기본 예제를 사용하여 전체 프로세스를 설명합니다.

기본 프로젝트 만들기

  1. 새 Unity 프로젝트를 만듭니다(시작하기 문서 참조).

  2. 상단 메뉴에서 Assets > Create > Shader > Standard Surface Shader 로 이동합니다. 그러면 Project 폴더에 새 셰이더 파일이 생성됩니다.

  3. 셰이더 파일을 선택하고, Inspector 창에서 Open 을 클릭합니다. 그러면 스크립팅 에디터에서 셰이더 파일이 열립니다. 셰이더 코드의 다른 #pragma 줄 아래에 #pragma enable_d3d11_debug_symbols를 삽입합니다.

  4. 새 머티리얼(메뉴: Assets > Create > Material)을 생성합니다.

  5. 머티리얼의 Inspector 창에서 Shader 드롭다운을 선택하고 Custom 으로 이동한 후 방금 생성한 셰이더를 선택합니다.

  6. 3D 큐브 게임 오브젝트(메뉴: GameObject > 3D Object > Cube)를 생성합니다.

  7. 새 게임 오브젝트에 새 머티리얼을 할당합니다. 이렇게 하려면 머티리얼을 Project 창에서 3D 큐브로 드래그합니다.

Windows 스탠드얼론 애플리케이션에서 프레임 캡처

  1. File > Build Settings 로 이동한 후 Platform 아래에서 PC, Mac & Linux Standalone 을 선택합니다. Target PlatformWindows 로 설정하고, Architecturex86_64_ 로 설정한 후 Development Build 체크박스를 클릭합니다.

  2. Build 를 클릭합니다.

  3. PIX 를 실행합니다.

  4. Home 을 클릭한 후 Connect 를 클릭합니다.

  5. 캡처에 PC를 사용할 수 있도록 컴퓨터 localhost 를 선택하고 connect 를 클릭합니다.

  6. Select Target Process 상자에서 Launch Win32 탭을 선택하고 Browse 버튼을 사용하여 애플리케이션의 실행 파일을 선택합니다. 이때 “Win32”는 비UWP 애플리케이션을 의미합니다. 사용하는 애플리케이션 파일은 64비트 바이너리 파일이어야 합니다.

  7. Launch for GPU Capture 를 활성화한 후 Launch 버튼을 사용하여 애플리케이션을 시작합니다.

  8. 프레임을 캡처할 준비가 될 때까지 애플리케이션을 노멀로 사용합니다. 프레임을 캡처하려면 키보드의 Print Screen 키를 누르거나, GPU 캡처 패널의 카메라 아이콘을 클릭합니다. 그러면 캡처의 썸네일이 패널에 나타납니다. 캡처를 열려면 썸네일을 클릭합니다.

  9. 캡처에 대한 분석을 시작하려면 강조 표시된 텍스트를 클릭하거나 메뉴 바의 작은 Play 아이콘을 클릭합니다.

  10. Pipeline 탭을 선택하고 Events 창을 사용하여 원하는 드로우 콜로 이동합니다.

  11. Pipeline 탭의 아래쪽에 있는 OM (Output Merger) 리스트에서 렌더 타겟을 선택하여 드로우 콜의 출력을 확인합니다. 디버그할 오브젝트에 대한 픽셀을 선택합니다. 이때 원하는 드로우 콜을 찾기 위한 한 가지 방법으로, 픽셀을 마우스 오른쪽 버튼으로 클릭하여 드로우 콜 이력을 확인할 수 있습니다.

  12. Pixel Details 패널의 Debug Pixel 을 선택합니다.

  13. 디버그 패널에서 셰이더 옵션을 사용하여 디버그할 셰이더 단계를 선택합니다.

  14. 툴바 또는 키보드 단축키를 사용하여 코드를 단계별로 확인합니다.

PIX를 사용한 셰이더 디버깅에 대한 자세한 내용은 Microsoft의 Windows용 PIX 동영상 시리즈의 5부 - 디버그 탭을 참조하십시오.

PIX의 CPU 캡처에 대한 자세한 내용은 GPU 캡처에 관한 Microsoft 문서를 참조하십시오.

Visual Studio로 DirectX 11/12 셰이더 디버깅
셰이더에서 고정 함수 TexGen 구현