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