パイプライン ステージ (Direct3D 10)

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

direct3d 10 プログラミング可能なパイプラインのデータ フローの図

すべてのステージは、API を使用して構成できます。 共通シェーダー コア (丸められた四角形のブロック) を特徴とするステージは、HLSL プログラミング言語を使用してプログラミングできます。 ご覧のように、これによりパイプラインは非常に柔軟で適応可能になります。 各ステージの目的を以下に示します。

  • Input-Assembler ステージ - 入力アセンブラー ステージは、パイプラインにデータ (三角形、線、ポイント) を提供する役割を担います。
  • 頂点シェーダー ステージ: 頂点シェーダー ステージでは頂点を処理し、通常は、変換、スキンの適用、照明の適用などの操作を実行します。 頂点シェーダーは常に 1 つの入力頂点を受け取り、1 つの出力頂点を生成します。
  • Geometry-Shader ステージ - geometry-shader ステージはプリミティブ全体を処理します。 入力は完全なプリミティブです (三角形の場合は 3 つの頂点、線の場合は 2 つの頂点、ポイントの場合は 1 つの頂点)。 さらに、各プリミティブには、エッジ隣接プリミティブの頂点データを含めることもできます。 これには、1 つの三角形に対して最大で 3 つの頂点が追加されるか、1 つの線に対して 2 つの頂点が追加される場合があります。 ジオメトリ シェーダーは、限定的なジオメトリの増幅と減幅もサポートしています。 ジオメトリ シェーダーは、入力プリミティブに対して、プリミティブを破棄することも、1つまたは複数の新しいプリミティブを出力することもできます。
  • Stream-Output Stage - ストリーム出力ステージは、ラスタライザーに向かう途中でパイプラインからメモリにプリミティブ データをストリーミングするように設計されています。 データはラスタライザーにストリーミングするか、渡すことができます。 メモリにストリーミングされたデータは、CPU からの入力データまたはリード バックとして、パイプラインに再循環させることができます。
  • ラスタライザー ステージ - ラスタライザーは、クリッピング プリミティブ、ピクセル シェーダーのプリミティブの準備、およびピクセル シェーダーの呼び出し方法の決定を担当します。
  • ピクセル シェーダー ステージ: ピクセル シェーダー ステージがプリミティブの補間データを受信し、カラーなどのピクセル単位のデータを生成します。
  • Output-Merger Stage - 出力合併ステージは、さまざまな種類の出力データ (ピクセル シェーダー値、深度、ステンシル情報) とレンダー ターゲットの内容と深度/ステンシル バッファーを組み合わせて最終的なパイプライン結果を生成します。

Direct3D 10 のプログラミング ガイド