グラフィックス パイプライン ステージ

[グラフィックス パイプライン ステージ] ウィンドウでは、個々の描画の呼び出しが Direct3D グラフィックス パイプラインの各ステージでどのように変換されるのか理解できます。

[パイプライン ステージ] ウィンドウを次に示します。

パイプライン ステージを通過する 3D オブジェクト。

[グラフィックス パイプライン ステージ] ウィンドウについて

[パイプライン ステージ] ウィンドウは、各描画呼び出しについて、グラフィックス パイプラインの各ステージの結果を個別に視覚化します。 通常なら、パイプラインの途中のステージの結果は表示されず、レンダリングの問題が始まった場所を特定することは困難です。 [パイプライン ステージ] ウィンドウでは、各ステージを個別に視覚化することによって、問題が始まった場所がわかりやすくなります。たとえば、頂点シェーダーのステージでオブジェクトが予期せず画面外に描画された時点が簡単にわかります。

問題が発生したステージを識別したら、その他の Graphics Analyzer ツールを使用して、データがどのように解釈または変換されたかを確認できます。 多くの場合、レンダリングに関してパイプライン ステージで発生する問題は、頂点の書式記述子が不適切であること、シェーダー プログラムでバグが発生していること、または状態が正しく構成されていないことに関連します。

場合によっては、描画呼び出しが特定の方法でグラフィックス パイプラインと対話する理由を判断するために、追加のコンテキストが必要になります。 この追加のコンテキストを容易に見つけられるようにするために、[グラフィックス パイプライン ステージ] ウィンドウは、グラフィックス パイプラインで起こっていることに関連する追加のコンテキストを提供する、1 つ以上のオブジェクトにリンクします。

  • Direct3D 12 では、このオブジェクトは通常、コマンドの一覧です。

  • Direct3D 11 では、このオブジェクトは通常、グラフィックス デバイス コンテキストです。

    これらのリンクは、[グラフィックス パイプライン ステージ] ウィンドウの左上隅にある現在のグラフィックス イベントのシグネチャの一部です。 オブジェクトに関する追加の詳細について調べるには、これらのリンク先を表示します。

シェーダー コードの表示およびデバッグ

[パイプライン ステージ] ウィンドウのそれぞれのステージの下部にあるコントロールを使用して、頂点シェーダー、ハル シェーダー、ドメイン シェーダー、ジオメトリ シェーダー、およびピクセル シェーダーのコードを検証してデバッグできます。

シェーダーのソース コードを表示するには

  • [グラフィックス パイプライン ステージ] ウィンドウで、検証するシェーダーに対応するシェーダーのステージを見つけます。 次に、プレビュー イメージの下で、シェーダーのステージのタイトル リンク先を表示します。たとえば、リンク [頂点シェーダー obj:30] をクリックし、頂点シェーダーのソース コードを表示します。

    ヒント

    オブジェクト番号 obj:30 は、オブジェクト テーブルや [ピクセル履歴] ウィンドウなどの Graphics Analyzer インターフェイス全体でこのシェーダーを識別します。

シェーダーをデバッグするには

  • [グラフィックス パイプライン ステージ] ウィンドウで、デバッグするシェーダーに対応するシェーダーのステージを見つけます。 次に、プレビュー イメージの下で、 [デバッグの開始] を選択します。 既定で、HLSL デバッガーへのこのエントリ ポイントは、対応するステージのシェーダーの最初の呼び出しに設定されます。つまり、この描画呼び出し中にシェーダーによって処理される最初のピクセル、頂点、またはプリミティブです。 特定のピクセルまたは頂点に対するこのシェーダーの呼び出しは、 [グラフィックス ピクセル履歴] 経由でアクセスできます。

パイプライン ステージ

[パイプライン ステージ] ウィンドウには、描画呼び出し中にアクティブであったパイプラインのステージだけが視覚化されます。 グラフィックス パイプラインの各ステージは、前のステージからの入力を変換し、次のステージに結果を渡します。 最初のステージである入力のアセンブラーは、アプリからのインデックスおよび頂点のデータを入力として取得します。最後のステージである出力マージャーは、新しくレンダリングされたピクセルをフレームバッファーの現在の内容と結合するか、ターゲットを出力としてレンダリングして、画面に表示する最終的なイメージを生成します。

注意

計算シェーダーは、 [グラフィックス パイプライン ステージ] ウィンドウではサポートされていません。

入力アセンブラー: 入力アセンブラーは、アプリによって指定されるインデックスと頂点のデータを読み取り、それらをグラフィックス ハードウェア用にアセンブルします。

[パイプライン ステージ] ウィンドウで、入力アセンブラーの出力がワイヤー フレーム モデルとして視覚化されます。 結果を詳しく確認するには、 [グラフィックス パイプライン ステージ] ウィンドウの [入力アセンブラー] を選択して、モデル エディターを使用し、アセンブルされた頂点をフル 3D で表示します。

注意

POSITION セマンティックが入力アセンブラーの出力内に存在しない場合、 [入力アセンブラー] ステージには何も表示されません。

頂点シェーダー: 頂点シェーダー ステージは、通常、変換、スキンの適用、照明の適用などの操作を実行して、頂点を処理します。 頂点シェーダーは入力として取得するのと同じ数の頂点を生成します。

[パイプライン ステージ] ウィンドウで、頂点シェーダーの出力がワイヤー フレーム ラスター イメージとして視覚化されます。 結果を詳しく確認するには、 [グラフィックス パイプライン ステージ] ウィンドウの [頂点シェーダー] を選択し、イメージ エディターで処理済みの頂点を表示します。

注意

POSITION または SV_POSITION セマンティックが頂点シェーダーの出力内に存在しない場合、 [頂点シェーダー] ステージには何も表示されません。

ハル シェーダー (Direct3D 11 および Direct3D 12 のみ): ハル シェーダー ステージでは、行、三角形、四角形などの下位画面を定義するコントロール ポイントが処理されます。 出力として、固定機能テセレーション ステージに渡される上位のジオメトリ パッチとパッチ定数を生成します。

ハル シェーダー ステージは、[パイプライン ステージ] ウィンドウで視覚化されません。

テッセレータ ステージ (Direct3D 11 and Direct3D 12 only): テッセレータ ステージは、ハル シェーダーの出力によって表されるドメインを前処理する、機能が固定された (プログラミング不可能な) ハードウェア ユニットです。 出力として、ドメインのサンプリング パターンと、これらのサンプルを接続する小さいプリミティブのセット (ポイント、線、三角形) を作成します。

テッセレータ ステージは、[パイプライン ステージ] ウィンドウで視覚化されません。

ドメイン シェーダー (Direct3D 11 と Direct3D 12 のみ): ドメイン シェーダー ステージでは、ハル シェーダーからの上位ジオメトリ パッチと、テセレーション ステージからのテセレーションの要因がまとめて処理されます。 テセレーションの要因には、テッセレータ入力の要因と出力の要因を含めることができます。 出力として、テッセレータの要因に基づいて、出力パッチのポイントの頂点の位置を計算します。

ドメイン シェーダー ステージは、[パイプライン ステージ] ウィンドウで視覚化されません。

ジオメトリ シェーダー: ジオメトリ シェーダー ステージでは、点、線、三角形などのプリミティブ一式、および端が隣接するプリミティブの頂点に関する省略可能な頂点データが処理されます。 頂点シェーダーとは異なり、ジオメトリ シェーダーが生成するプリミティブは、入力として取得した数より多くても少なくてもかまいません。

[パイプライン ステージ] ウィンドウで、ジオメトリ シェーダーの出力がワイヤー フレーム ラスター イメージとして視覚化されます。 結果を詳しく確認するには、 [グラフィックス パイプライン ステージ] ウィンドウの [ジオメトリ シェーダー] を選択し、イメージ エディターで処理済みのプリミティブを表示します。

ストリーム出力ステージ: ストリーム出力ステージでは、ラスタライズする前に変換されたプリミティブが取得され、それをメモリに書き込むことができます。そこからデータをグラフィックス パイプラインの初期段階への入力として再利用したり、CPU によって再び読み取ることができます。

ストリーム出力ステージは、[パイプライン ステージ] ウィンドウで視覚化されません。

ラスタライザー ステージ: ラスタライザー ステージは、スキャン ライン変換を実行することで、ベクター プリミティブ (ポイント、線、三角形) をラスター イメージに変換する、機能が固定された (プログラミング不可能な) ハードウェア ユニットです。 ラスタライズ処理中に、頂点は同種のクリップ領域に変換され、クリップされます。 ピクセル シェーダーは出力としてマップされ、頂点ごとの属性がプリミティブで補間され、ピクセル シェーダーのための準備が完了します。

ラスタライザー シェーダー ステージは、[パイプライン ステージ] ウィンドウで視覚化されません。

ピクセル シェーダー: ピクセル シェーダー ステージでは、ラスタライズされたプリミティブと、補間された頂点データをまとめて処理し、色や深度などのピクセル単位の値が生成されます。

[パイプライン ステージ] ウィンドウで、ピクセル シェーダー出力は、フルカラー ラスター イメージとして視覚化されます。 結果を詳しく確認するには、 [グラフィックス パイプライン ステージ] ウィンドウの [ピクセル シェーダー] ウィンドウを選択し、イメージ エディターで、処理済みのプリミティブを表示します。

出力マージャ― : 出力マージャー ステージでは、新しく描画されるピクセルと、該当するバッファーの既存のコンテンツ (色、深度、ステンシル) の効果が結合され、これらのバッファーで新しい値が生成されます。

[パイプライン ステージ] ウィンドウで、出力マージャー出力は、フルカラー ラスター イメージとして視覚化されます。 結果について詳しく確認するには、 [グラフィックス パイプライン ステージ] ウィンドウの [出力マージャー] を選択して、マージされたフレームバッファーを表示します。

頂点とジオメトリ シェーダーのプレビュー

[パイプライン ステージ] ウィンドウで頂点またはジオメトリ シェーダー ステージを選択すると、シェーダーへの入力とシェーダーからの出力を下部パネルで確認できます。 ここで、入力アセンブラー ステージによってアセンブルされた後でシェーダーに供給された頂点の一覧の詳細を確認します。

頂点シェーダー ステージの入力バッファー ビューアー

頂点シェーダー ステージの結果を表示するには、頂点シェーダーによって変換された後で、頂点シェーダー ステージ サムネイルを選択して、フルサイズのラスタライズされたメッシュのワイヤー フレームを表示します。

頂点シェーダー ステージの結果プレビュー

関連項目