コンピュータグラフィックスにおいて、テクスチャマッピングユニット(TMU )は、現代のグラフィックス処理装置(GPU)のコンポーネントです。テクスチャマッピングと呼ばれるプロセスで、ビットマップ画像を回転、サイズ変更、歪曲して、特定の3Dモデルの任意の平面にテクスチャとして配置することができます。現代のグラフィックスカードでは、グラフィックスパイプラインの個別のステージとして実装されていますが、[1]最初に導入されたときは、 Voodoo2グラフィックスカードのように、別のプロセッサとして実装されていました。
背景と歴史
TMU は、平面画像 (テクスチャ マップなど) をサンプリングして、3D 空間で必要な正しい角度と遠近感に変換するという計算要求のために生まれました。計算操作は大規模な行列乗算であり、当時の CPU (初期のPentiumなど) では許容できるレベルのパフォーマンスで対応できませんでした。
2013 年、TMU はシェーダー パイプラインの一部となり、レンダリング出力パイプライン(ROP) から分離されました。たとえば、AMD の Cypress GPU では、各シェーダー パイプライン (20 個) に 4 つの TMU があり、GPU には 80 個の TMU があります。これは、チップ設計者がシェーダーと、それらが使用するテクスチャ エンジンを密接に結合するために行われます。
幾何学
3D シーンは、一般的に3D ジオメトリとそのジオメトリを覆うテクスチャの 2 つから構成されます。ビデオ カードのテクスチャ ユニットは、テクスチャを取得して、それをジオメトリの一部に「マップ」します。つまり、テクスチャをジオメトリの周りにラップして、テクスチャ ピクセルを生成し、それを画面に書き込むことができます。テクスチャは、実際の画像、ライトマップ、または高度な表面照明効果のための法線マップにすることができます。
テクスチャ充填率
3D シーンをレンダリングするには、ポリゴン メッシュの上にテクスチャをマッピングします。これはテクスチャ マッピングと呼ばれ、ビデオカード上のテクスチャ マッピング ユニット (TMU) によって実行されます。テクスチャ フィル レートは、特定のカードがテクスチャ マッピングを実行できる速度の尺度です。
ピクセル シェーダ処理の重要性は増していますが、この数字は依然として重要な意味を持っています。その最たる例は、X1600 XT です。このカードのピクセル シェーダ プロセッサとテクスチャ マッピング ユニットの比率は 3 対 1 です。その結果、X1600 XT は、同時代および同クラスの他の GPU (nVidia の 7600GT など) と比較するとパフォーマンスが低くなります[要出典]。ミッドレンジでは、テクスチャ マッピングが依然としてボトルネックになる可能性があります。ただし、ハイエンドでは、X1900 XTX が同じ 3 対 1 の比率ですが、画面解像度が最高に達し、あらゆるディスプレイを処理するのに十分なテクスチャ マッピング パワーを備えているため、問題なく動作します。
詳細
テクスチャ マッピング ユニット (TMU)
テクスチャは、アドレス指定およびフィルタリングされる必要があります。この作業は、ピクセル シェーダ ユニットおよび頂点シェーダユニットと連携して動作する TMU によって行われます。ピクセルにテクスチャ操作を適用するのは、TMU の仕事です。グラフィックス プロセッサ内のテクスチャ ユニットの数は、テクスチャリングのパフォーマンスについて 2 つの異なるカードを比較するときに使用されます。TMU の数が多いカードの方が、テクスチャ情報の処理が高速であると想定するのは妥当です。最新の GPU では、TMU にテクスチャ アドレス ユニット (TA) とテクスチャ フィルタリング ユニット (TF) が含まれています。テクスチャ アドレス ユニットは、テクセルをピクセルにマップし、テクスチャ アドレッシング モードを実行できます。テクスチャ フィルタリング ユニットは、オプションでハードウェア ベースのテクスチャ フィルタリングを実行します。
パイプライン
パイプラインはグラフィック カードのアーキテクチャであり、グラフィック プロセッサの計算能力を概ね正確に把握できます。
パイプラインは、正式には技術用語として認められていません。グラフィックス プロセッサ内には、常に別々の機能が実行されているため、さまざまなパイプラインがあります。歴史的には、専用の TMU に接続されたピクセル プロセッサと呼ばれてきました。Geforce 3 には 4 つのピクセル パイプラインがあり、それぞれに 2 つの TMU がありました。パイプラインの残りの部分は、深度やブレンディング操作などを処理していました。
ATI Radeon 9700 は、ピクセル シェーダーから独立した複数の頂点シェーダー エンジンを配置することで、この型を初めて打ち破りました。Radeon 9700 で使用された R300 GPU には 4 つのグローバル頂点シェーダーがありましたが、レンダリング パイプラインの残りの部分は半分に分割されていました (いわばデュアル コアでした)。各半分はクアッドと呼ばれ、4 つのピクセル シェーダー、4 つの TMU、4 つの ROP がありました。
一部のユニットは他のユニットよりも頻繁に使用され、プロセッサ全体のパフォーマンスを向上させるために、余分なシリコンを必要とせずに最適な効率を得るために必要なユニット数の「スイートスポット」を見つけようとしました。このアーキテクチャでは、ピクセル プロセッサが単一の TMU に接続されなくなったため、ピクセル パイプラインという名前は意味を失いました。
頂点シェーダは R300 から長い間分離されてきましたが、ピクセル シェーダはカラー データ (テクスチャ サンプルなど) の処理が必要であり、TMU と密接に結合する必要があったため、それほど簡単に分離できませんでした。
この結合は今日まで続いており、頂点データまたはピクセル データのいずれかを実行できるユニットで構成されたシェーダ エンジンは TMU に密接に結合されていますが、その出力と ROP バンクの間にはクロスバー ディスパッチャがあります。
レンダリング出力パイプライン (ROP)
レンダリング出力パイプラインは継承された用語であり、レンダリング出力ユニットと呼ばれることが多いです。その役割はピクセルのサンプリングを制御することです (各ピクセルは無次元の点です)。そのため、複数のサンプルが 1 つのピクセルに結合されるときに、アンチエイリアシングを制御します。レンダリングされたすべてのデータは、フレームバッファに書き込まれるために ROP を通過する必要があり、そこからディスプレイに転送できます。
したがって、ROP は GPU の出力が表示可能なビットマップ画像に組み立てられる場所です。
GPGPUでの使用
GPGPUでは、 1 次元、2 次元、または 3 次元のテクスチャ マップを使用して任意のデータを保存できます。補間を提供することにより、テクスチャ マッピング ユニットは、データ テーブルを使用して任意の関数を近似する便利な手段を提供します。
参照
参考文献
- ^ 「Dev Hardware - The Graphics Pipeline」。2006 年 5 月 28 日時点のオリジナルよりアーカイブ。2006 年5 月 11 日閲覧。
外部リンク
- 「テクスチャマッピングとシェーディングの微分幾何学」
