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 IntroductionPIX Documentation を参照してください。

PIX を使った DirectX シェーダーのデバッグ

Unity エディターで実行しているバージョンではなく、Unity アプリケーションのビルドバージョンを使用して、フレームをキャプチャする必要があります。理由は、GPU フレームをキャプチャするには PIX から対象のアプリケーションを開く必要があるためです。

開発ビルドを使用すると PIX に追加情報が加えられ、シーンのキャプチャをより簡単に操作できます。

デバッグが可能なシェーダーでプロジェクトを作成

PIX のソースコードでシェーダーをデバッグするには、シェーダーコードに次のプラグマを挿入する必要があります。 #pragma enable_d3d11_debug_symbols

以下は基本的な例を使用してプロセス全体を紹介します。

基本的なプロジェクトを作成

  1. 新しい Unity プロジェクトを作成します (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. Go to File > Build Settings, and under Platform, select PC, Mac & Linux Standalone. Set the Target Platform to Windows, set the Architecture to x86_64, and click the Development Build checkbox.

  2. Build をクリックします。

  3. PIX を起動します

  4. Home をクリックし、Connect をクリックします。

  5. キャプチャに PC を使うために、PC の localhost を選択し、connect をクリックします。

  6. Select Target ProcessLaunch Win32 タブを選択し、Browse ボタンを使用してアプリケーションの実行ファイルを選択します。ここで、“Win32” は非 UWP アプリケーションを意味します。アプリケーションファイルは 64 ビットのバイナリファイルである必要があります。

  7. Enable Launch for GPU Capture, then use the Launch button to start the application.

  8. Use your application as normal until you are ready to capture a frame. To capture a frame, press Print Screen on your keyboard, or click the camera icon on the GPU Capture Panel. A thumbnail of the capture appears in the panel. To open the capture, click the thumbnail.

  9. To start analysis on the capture, click the highlighted text or the small Play icon on the menu bar.

  10. Select the Pipeline tab and use the__ Events__ window to navigate to a draw call you are interested in.

  11. Pipeline タブの下方で OM (Output Merger) リストからレンダーターゲットを選択し、ドローコールの出力を表示します。デバッグしたいオブジェクト上のピクセルを選択します。興味のあるドローコールを見つけるのと同様の方法で、ピクセルを右クリックすると、ドローコールの履歴を見ることができます。

  12. Select Debug Pixel on the Pixel Details panel.

  13. On the debug panel, use the Shader Options to select which shader stage to debug.

  14. Use the toolbar or keyboard shortcuts to step through the code.

PIX を使ってシェーダーをデバッグする詳しい情報については、Microsoft のビデオシリーズ PIX on Windows、特に Part 5 - Debug Tab を参照してください。

PIX での GPU キャプチャの詳細は、Microsoft ドキュメンテーションの GPU Capture を参照してください。

Visual Studio を使った DirectX 11/12 シェーダーのデバッグ
シェーダーに固定関数 TexGen を実装する