
3Dコンピュータグラフィックスの分野では、統合シェーダーモデル(Direct3D 10では「シェーダーモデル4.0 」として知られている)は、グラフィックス処理ユニット(GPU)内のシェーダーハードウェアの一種を指し、レンダリングパイプラインのすべてのシェーダーステージ(ジオメトリ、頂点、ピクセルなど)が同じ機能を持ちます。それらはすべてテクスチャとバッファを読み取ることができ、ほぼ同一の命令セットを使用します。 [ 1 ]
初期のGPUは一般的に2種類のシェーダーハードウェアを搭載しており、頂点シェーダーはより単純なピクセルシェーダーよりも命令数が大幅に多かった。これによりGPU全体の実装コストが削減され、1つのユニットに搭載できるシェーダーの総数も増加した。しかし、この方式はシステムの柔軟性を低下させ、ワークロードが一方のシェーダーを他方よりも多く使用する場合には、一方のシェーダーがアイドル状態になるという欠点があった。製造技術の進歩に伴い、この区別は次第に重要性を失っていった。ATI TechnologiesはXbox 360向けに開発したハードウェアに統合アーキテクチャを導入した。NvidiaはすぐにTesla設計でこれに続いた。AMDは2年後、 TeraScaleシリーズでカード型の統合シェーダーを導入した。このコンセプトはそれ以来、広く普及している。
初期のシェーダー抽象化( Shader Model 1.xなど)では、頂点シェーダーとピクセルシェーダーで命令セットが大きく異なり、頂点シェーダーの方がはるかに柔軟な命令セットを持っていました。後のシェーダーモデル(Shader Model 2.x や 3.0 など)では、これらの違いが縮小され、統一されたシェーダーモデルに近づきました。統一されたモデルであっても、異なるシェーダータイプ間で命令セットが完全に同一であるとは限りません。異なるシェーダーステージでは、いくつかの違いが残る場合があります。フラグメントシェーダー(ピクセルシェーダー)は暗黙的なテクスチャ座標勾配を計算できますが、ジオメトリシェーダーはレンダリングプリミティブを出力できます。[ 1 ]
統合シェーダーアーキテクチャ(または統合シェーディングアーキテクチャ)とは、グラフィックスハードウェアのすべてのシェーダー処理ユニットがあらゆる種類のシェーディングタスクを処理できるハードウェア設計のことです。統合シェーディングアーキテクチャのハードウェアは、多くの場合、演算ユニットのアレイと、すべての演算ユニットが可能な限り頻繁に動作するようにする動的なスケジューリング/負荷分散システムで構成されています。
統合シェーダーアーキテクチャにより、グラフィックスレンダリングハードウェアをより柔軟に使用できます。[ 2 ]例えば、ジオメトリワークロードが重い状況では、システムはほとんどの計算ユニットを頂点シェーダーとジオメトリシェーダーの実行に割り当てることができます。頂点ワークロードが軽く、ピクセルワークロードが重い場合は、より多くの計算ユニットをピクセルシェーダーの実行に割り当てることができます。
統一シェーダーアーキテクチャのハードウェアと統一シェーダーモデルのプログラミングインターフェースは互いに必須ではないが、統一シェーダーモデルを提供するAPIをサポートすることを目的としたハードウェアを設計する際には、統一アーキテクチャを採用するのが最も合理的である。
(統合シェーダーモデルを提供する) OpenGL 3.3は、統合シェーダーアーキテクチャを持たないハードウェア上でも実装可能です。同様に、統合シェーダーモデルを持たないAPIをサポートするハードウェアでも、統合シェーダーアーキテクチャに基づいている場合があります。例えば、Xbox 360のXenosグラフィックスチップがその例です。
統合シェーダーアーキテクチャは、Nvidia GeForce 8シリーズ、ATI Radeon HD 2000シリーズ、S3 Chrome 400、Intel GMA X3000シリーズ、Xbox 360のGPU、Qualcomm Adreno 200シリーズ、Mali Midgard、PowerVR SGX GPUで導入され、以降のすべてのシリーズで使用されています。
例えば、統合シェーダーはNVIDIA製GPUでは「CUDAコア」または「シェーダーコア」と呼ばれ、Intel製GPUでは「ALUコア」と呼ばれます。
NVIDIA
インテル
ATI/AMD