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

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

diagram of the data flow in the direct3d 10 programmable pipeline

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

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

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