頂点シェーダーのデバッグ

このチュートリアルでは、頂点シェーダーのデバッグについて説明します。ブレークポイントの設定、頂点シェーダー コードのステップ実行、レジスタ値の監視について解説します。このチュートリアルは以下の手順に分かれています。

  • セットアップ
  • 手順 1 - 頂点シェーダー デバッガーの起動
  • 手順 2 - HLSL またはアセンブリでの頂点シェーダーの表示
  • 手順 3 - ブレークポイントの設定
  • 手順 4 - 頂点シェーダー コードのステップ実行

セットアップ

この頂点シェーダーのデバッグの使用に関するチュートリアルをセット アップするには

  1. Direct3D 9 用の BasicHLSL サンプルか、Direct3D 10 用の BasicHLSL10 サンプルの 2 つの BasicHSL サンプルのいずれかをビルドします。

    このサンプルは、ソースレベルのシェーダー デバッグを可能にするため、コンパイルする必要があります (「PIX で使用するアプリケーションのビルド」を参照)。

  2. PIX を開き、実験を新規作成して、生成される実行可能ファイルを PIX ターゲット プログラムとして設定します。

  3. データの収集には、シングル フレーム キャプチャー オプションを選択します。

手順 1 - 頂点シェーダー デバッガーの起動

セットアップの後に、頂点シェーダー デバッグを起動するには

  1. PIX で実験を開始し、PIX からシングル フレーム キャプチャーを実行します。

  2. フレームがキャプチャーされたら、イベント ビューを使用してデバッグする描画イベントを選択し、詳細ペインレンダリング タブを使用して、強制的にフレームの再レンダリングを行います。

ここでは、次の 2 つの方法のいずれかでシェーダー デバッガーを起動して頂点シェーダーをデバッグできます。

  • 手順 1a - デバッガー タブのピクセル履歴ビューから頂点シェーダー デバッガーを起動
  • 手順 1b - メッシュ データ ビューから頂点シェーダー デバッガーを起動

手順 1a - デバッガー タブのピクセル履歴ビューから頂点シェーダー デバッガーを起動

デバッガー タブピクセル履歴ビューから頂点シェーダーのシェーダー デバッガーを使用するには

  1. レンダリング タブで、対象のピクセルを右クリックし、コンテキスト メニューから [このピクセルをデバッグ](Debug This Pixel) を選択して、ピクセル履歴タブを起動します。

    Figure 1.  ピクセル履歴ビューの起動

    Ee417194.dxsdk_pix_ps_tutorial_Get_Hist_Tab(ja-jp,VS.85).png

  2. 頂点シェーダー デバッガーのインスタンスを起動するには、デバッガー タブピクセル履歴ビューに表示されたいずれかのイベントでアクティブな [頂点のデバッグ](Debug Vertex) リンクをクリックします。

    Figure 2.  ピクセル履歴タブからの頂点シェーダー デバッグの起動

    Ee417194.dxsdk_pix_vs_tutorial_history_tab(ja-jp,VS.85).png

手順 1b - メッシュ データ ビューから頂点シェーダー デバッガーを起動

メッシュ データ ビューからシェーダー デバッガーを起動するには

  1. メッシュ データ ビューがアクティブな状態で [PostVS] タブを選択して、トランスフォームされたメッシュ データを調べます。

  2. 下線付きの頂点の上にマウスを合わせ、コンテキスト メニューから項目 [この頂点をデバッグ](Debug this vertex) を選択してシェーダー デバッガーを開きます。

    Figure 3.  メッシュ データ ビューからの頂点シェーダー デバッグの起動

    Ee417194.dxsdk_performance_tools_pix_vs_debug_mesh_tab(ja-jp,VS.85).png

手順 2 - HLSL またはアセンブリでの頂点シェーダーの表示

PIX では、アセンブリ コードまたは HLSL ソースを使用して頂点シェーダーをデバッグできます。

手順 2a - HLSL での頂点シェーダーの表示

デバッガー タブが開き、シェーダーの HLSL コードが表示されます。下のセクションは空白ですが、変数を使用しているシェーダー コード行でデバッガーが停止したときに、シェーダーの変数の内容が表示されます。

Figure 4.  頂点シェーダー HLSL ソースの表示

Ee417194.dxsdk_pix_vs_tutorial_Source_Debug(ja-jp,VS.85).png

デバッガーはシェーダーの最初の実行可能行で停止し、その行は黄色の矢印でマークされます。表示される変数は、このコード行で使用されている変数です。

Direct3D 9 と Direct3D 10 の違い

Direct3D 9 と Direct3D 10 とでは、ソース デバッグの実装方法が異なるため、この 2 つのバージョン間で動作の違いが発生することがあります。

Direct3D 10 の場合、実験の実行によって生成された PIXRun ファイルに PIX がシェーダー HLSL ソース コードを直接埋め込みます。

Direct3D 9 の場合、PIXRun ファイルに HLSL ソースは格納されません。その代わりに、ターゲット プログラムのビルド時に使用された HLSL ソース コードへのリンクが格納されます。ソース コードを元の場所から移動すると、PIX は現在の場所を指定するように要求します。ソースが開発システム上に存在しない場合は、アセンブリ デバッグのみがサポートされます。

手順 2b - アセンブリでの頂点シェーダーの表示

シェーダーのアセンブリ コードを表示するには、[Disassembly] タブをクリックします。下のセクションは空白ですが、レジスタを使用しているシェーダー コード行でデバッガーが停止したときに、シェーダーのレジスタの内容が表示されます。

Figure 5.  頂点シェーダー アセンブリ コードの表示

Ee417194.dxsdk_pix_vs_tutorial_assembly(ja-jp,VS.85).png

デバッガーはシェーダーの最初の実行可能行で停止し、ここでもその行は黄色の矢印でマークされます。

手順 3 - ブレークポイントの設定

1 つ以上のブレークポイントを設定するには、アセンブリまたは HLSL ソースのシェーダーのコード行の左側をクリックします。

Figure 6.  ブレーク ポイントの設定

Ee417194.dxsdk_pix_vs_tutorial_4(ja-jp,VS.85).png

ブレークポイントを示す赤い点が表示されます (ブレークポイントをクリックするとそのブレークポイントは削除されます)。

手順 4 - 頂点シェーダー コードのステップ実行

シェーダー コードの実行を制御するには、ツール バーのボタンを使用します。

関連項目

PIX のチュートリアルとサンプル