グラフィックス パイプライン

Direct3D 11 プログラミング可能なパイプラインは、リアルタイム ゲーム アプリケーション用のグラフィックスを生成するように設計されています。 このセクションでは、Direct3D 11 プログラミング可能なパイプラインについて説明します。 次の図は、プログラム可能な各ステージを通じて入力から出力までのデータ フローを示しています。

diagram of the data flow in the direct3d 11 programmable pipeline

Microsoft Direct3D 11 のグラフィックス パイプラインでは、 Direct3D 10 グラフィックス パイプラインと同じステージがサポートされ、高度な機能をサポートするための追加ステージが用意されています。

Direct3D 11API を使用して、すべてのステージを構成できます。 一般的なシェーダー コア (角丸四角形のブロック) の機能を利用するステージは、HLSL プログラミング言語を使用することによってプログラミングできます。 ご覧のとおり、これにより、パイプラインは非常に柔軟で適応可能になります。

このセクションの内容

トピック 説明
入力アセンブラー ステージ
Direct3D 10 以降の API では、パイプラインの機能領域がステージに分割されます。パイプラインの最初のステージは、入力アセンブラー (IA) ステージです。
頂点シェーダー ステージ
頂点シェーダー (VS) ステージは、入力アセンブラーの頂点を処理し、変換、スキニング、モーフィング、頂点ごとの照明などの頂点ごとの操作を実行します。 頂点シェーダーは常に、1 つの入力頂点を処理して 1 つの出力頂点を生成します。 パイプラインを実行するには、頂点シェーダー ステージが常にアクティブになっている必要があります。 頂点の変更や変換が必要ない場合は、パススルー頂点シェーダーを作成してパイプラインに設定する必要があります。
テッセレーション ステージ
Direct3D 11 ランタイムでは、テッセレーションを実装する 3 つの新しいステージがサポートされています。このステージでは、詳細度の低いサブ区分サーフェスを GPU 上のより詳細なプリミティブに変換します。 テッセレーションは、高次サーフェスをレンダリングに適した構造体にタイル化 (または分割) します。
ジオメトリ シェーダー ステージ
geometry-shader (GS) ステージは、頂点を入力として使用し、出力時に頂点を生成する機能を持つアプリケーション指定のシェーダー コードを実行します。
ストリーム出力ステージ
ストリーム出力ステージの目的は、ジオメトリ シェーダー ステージ (またはジオメトリ シェーダー ステージが非アクティブな場合は頂点シェーダー ステージ) からメモリ内の 1 つ以上のバッファーに頂点データを継続的に出力 (またはストリーム) することです (ストリーム出力ステージのはじめにを参照)。
ラスタライザー ステージ
ラスター化ステージは、リアルタイム 3D グラフィックスを表示するために、(図形やプリミティブで構成された) ベクター情報を (ピクセルで構成された) ラスター画像に変換します。
ピクセル シェーダー ステージ
ピクセル シェーダー ステージ (PS) を使用すると、ピクセル単位の照明や後処理などの豊富なシェーディング手法が可能になります。 ピクセル シェーダーは、定数変数、テクスチャ データ、補間された頂点単位の値などのデータを組み合わせて、ピクセル単位の出力を生成するプログラムです。 ラスタライザー ステージは、プリミティブでカバーされるピクセルごとにピクセル シェーダーを 1 回呼び出しますが、シェーダーの実行を回避するために NULL シェーダーを指定できます。
出力マージャー ステージ
出力マージャー (OM) ステージでは、パイプライン状態、ピクセル シェーダーによって生成されるピクセル データ、レンダー ターゲットの内容、深度/ステンシル バッファーの内容の組み合わせを使用して、最終的なレンダリングされたピクセルカラーが生成されます。 OM ステージは、表示されるピクセル (深度ステンシル テストを使用) を決定し、最終的なピクセル カラーをブレンドするための最後の手順です。