Pipeline State
IA (Input Assembler)
Input Assemblerステージは、頂点データを収集し、後続のステージに渡す役割を担います。このステージでは、頂点バッファやインデックスバッファがバインドされ、頂点データの構造(頂点フォーマット)と描画するプリミティブの種類(例えば、三角形、ライン、ポイント)が設定されます。
VS (Vertex Shader)
Vertex Shaderは、各頂点に対して実行されるシェーダーステージです。このステージでは、頂点の位置や色、テクスチャ座標などの頂点属性を処理します。主な目的は、頂点をローカル空間からスクリーン空間に変換することです。ここで行われる典型的な処理には、モデルの変換や照明計算があります。
Hull Shader
Hull Shader(HS)は、テッセレーションステージの一部で、パッチ(プリミティブの集合)を処理します。テッセレーションを使用する場合、Hull Shaderはパッチのコントロールポイントを変換し、テッセレーション因子を計算して、次のテッセレーションステージに渡します。
DS (Domain Shader)
Domain Shader(DS)は、テッセレーションステージの後に実行され、テッセレートされた頂点を処理します。Domain Shaderは、テッセレーションされた頂点の新しい位置を計算し、最終的な頂点データを生成します。
GS (Geometry Shader)
Geometry Shader(GS)は、頂点のプリミティブ(例えば、ポイント、ライン、三角形)に対して実行されるシェーダーステージです。このステージでは、プリミティブを追加、削除、変更することができます。例えば、一つの三角形を入力として受け取り、追加の頂点を生成して新しい三角形を作成することができます。
Rasterizer
Rasterizerステージは、頂点をフラグメントに変換する役割を担います。このステージでは、プリミティブが画面のどのピクセルに影響を与えるかが決定されます。加えて、カリング(背面フェースの削除)やポリゴンモード(フィル、ライン、ポイント)などの設定も行われます。
PS (Pixel Shader)
Pixel Shaderは、各ピクセルに対して実行されるシェーダーステージです。このステージでは、ピクセルの色や深度、アルファ値などを計算します。通常、テクスチャマッピングやライティング、影の処理などが行われます。
OM (Output Merger)
Output Mergerステージは、最終的なピクセルデータをフレームバッファに書き込む役割を担います。このステージでは、ブレンディングや深度テスト、ステンシルテストなどの操作が行われ、最終的なピクセルの値が決定されます。
CS (Compute Shader)
Compute Shaderは、グラフィックスパイプラインとは独立して実行されるシェーダーステージで、一般的な計算を行うために使用されます。例えば、物理シミュレーションや画像処理、データの並べ替えなど、グラフィックス以外の計算タスクに利用されます。