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

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

Direct3D 11 のプログラム可能なパイプラインでのデータ フローの図

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

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

このセクションの内容

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