GPUパイプラインの概略
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/08/31 11:52 UTC 版)
「シェーダー」の記事における「GPUパイプラインの概略」の解説
Direct3D 9世代までのGPUでは、頂点シェーダーおよびピクセルシェーダーを担当するハードウェアユニットの数はそれぞれ製品ごとに固定されていたが、Direct3D 10世代の統合型シェーダーアーキテクチャ(Unified Shader Architecture)では各シェーダーユニットが統合され、複数の汎用シェーダーユニットを使って上記3つのシェーダーステージに動的に振り分ける形となる 。 これらのシェーダーはGPUのパイプライン内で実行される。下記はパイプライン内にどのように埋め込まれているのかを示す例である。 CPUは命令とジオメトリデータをGPU側に送信する。 頂点シェーダー内でジオメトリを変換し、頂点単位ライティングの計算などを実行する。 ジオメトリシェーダーを使用する場合は、頂点シェーダーが出力したジオメトリに対してプリミティブ増減や変更を行なう。 これまでの処理で計算されたジオメトリをトライアングルセットアップに設定する。トライアングルはquadに変換される(1つのquadは2 × 2ピクセルのプリミティブである)。 ピクセルシェーダーを適用し、ピクセル単位ライティングなどを実行する。 視界判定を実行する。もし視界内にある場合はフレームバッファにピクセルを書き込む。 頂点シェーダー/ジオメトリシェーダーの出力をラスタライザーおよびピクセルシェーダーに渡すのではなく、バッファやテクスチャなどのメモリリソースに書き出した後、インプットアセンブラーや頂点シェーダー/ジオメトリシェーダーに再入力する、ストリームアウトプットという機能も存在する(OpenGLにはトランスフォームフィードバックと呼ばれる類似機能が存在する)。ストリームアウトプットはこれまでのようにGPU側でデータを参照するだけでなく、GPU自身が書き換えたデータを(CPUを介することなく)再利用することができるため、GPUパーティクルなどに応用できる。
※この「GPUパイプラインの概略」の解説は、「シェーダー」の解説の一部です。
「GPUパイプラインの概略」を含む「シェーダー」の記事については、「シェーダー」の概要を参照ください。
- GPUパイプラインの概略のページへのリンク