コンピュータグラフィックスにおいて、テクスチャマッピングユニット(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 の役割です。グラフィック プロセッサのテクスチャ ユニットの数は、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バンクの間にはクロスバーディスパッチャが存在する。
レンダー出力パイプラインは継承された用語であり、より一般的にはレンダー出力ユニットと呼ばれます。その役割はピクセルのサンプリングを制御することであり(各ピクセルは無次元の点です)、複数のサンプルが1つのピクセルに結合する際のアンチエイリアシングを制御します。レンダリングされたすべてのデータは、フレームバッファに書き込まれるためにROPを通過する必要があり、そこからディスプレイに送信されます。
したがって、ROPはGPUの出力がビットマップ画像に組み立てられ、表示可能な状態になる場所です。
GPGPUでは、 1次元、2次元、または3次元のテクスチャマップを使用して任意のデータを格納できます。テクスチャマッピングユニットは補間機能を提供することで、データテーブルを用いて任意の関数を近似する便利な手段を提供します。