Version: 2020.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. File > Build Settings に移動し、PlatformPC, Mac & Linux Standalone を選択します。Target PlatformWindows に、Architecturex86_64 に設定し、Development Build チェックボックスにチェックします。

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

  3. PIX を起動します

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

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

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

  7. Launch for GPU Capture を有効にし、Launch ボタンを押してアプリケーションを開始します。

  8. フレームをキャプチャする準備が整うまで、アプリケーションを通常どおりに使用します。フレームをキャプチャするには、キーボードの Print Screen を押すか、GPU Capture パネルのカメラアイコンをクリックします。キャプチャのサムネイルがパネルに表示されます。キャプチャを開くには、サムネイルをクリックします。

  9. キャプチャの分析を開始するには、強調表示されたテキストか、メニューバーの小さな 再生 アイコンをクリックします。

  10. Pipeline タブを選択し、Events ウィンドウを使用して、興味のあるドローコールを選択します。

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

  12. Pixel Details パネルで Debug Pixel を選択します。

  13. デバッグパネルの Shader Options を使用して、デバッグするシェーダーステージを選択します。

  14. ツールバーまたはキーボードショートカットを使用して、コードを 1 つずつ移動します。

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

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

  • 2018–09–17 公開ページ
Visual Studio を使った DirectX 11/12 シェーダーのデバッグ
シェーダーに固定関数 TexGen を実装する