コンピュータグラフィックスでは、ミップマップ(ミップはラテン語のmultum in parvoの頭文字をとったもので、「小さなものの中に多くのもの」という意味です[ 1 ])は、事前に計算され最適化された一連の画像であり、それぞれの画像の解像度は前の画像の解像度の2分の1です。[ 2 ] [ 3 ] [ 4 ]その使用はミップマッピングとして知られています。
これらはレンダリング速度を向上させ、エイリアシングアーティファクトを低減することを目的としています。高解像度のミップマップ画像は、カメラに近いオブジェクトなど、高密度のサンプルに使用されます。オブジェクトが遠くにある場合は、低解像度の画像が使用されます。これは、元のテクスチャでスクリーンピクセルに寄与するすべてのテクセルをサンプリングするよりも、テクスチャをダウンスケールする効率的な方法です。適切にダウンフィルタリングされたテクスチャから一定数のサンプルを取得する方が高速です。ミップマップは定義上事前に割り当てられるため、それらを活用するには追加のストレージスペースが必要です。これらはウェーブレット圧縮にも関連しています。
ミップマップは、3Dコンピュータゲーム、フライトシミュレータ、テクスチャフィルタリング用のその他の3Dイメージングシステム、および2Dおよび3D GISソフトウェアで広く使用されています。ミップマップテクスチャは、3Dシーンでシーンのレンダリングに必要な時間を短縮するために使用されます。また、大きな視距離で発生するエイリアシングとモアレパターンを減らすことで画像品質を向上させますが、テクスチャごとに33%多くのメモリが必要になります[ 5 ]。
ミップマッピングは、1983 年にランス・ウィリアムズによって考案され、彼の論文「ピラミッド型パラメトリック」で説明されています。[ 1 ]要約には、「この論文では、エイリアシング効果を最小限に抑え、対象画像内および対象画像間の連続性を保証する「ピラミッド型パラメトリック」プリフィルタリングおよびサンプリングジオメトリを提案する」とあります。参照されているピラミッドは、互いに積み重ねられた一連のミップマップとして想像できます。
ミップマップとテクスチャ生成に関する最初の特許は、1983 年に Link Flight Simulation (Singer) の Johnson Yan、Nicholas Szabo、および Lish-Yann Chen によって発行されました。彼らのアプローチを使用すると、任意の方向のサーフェス (曲線および平面) にテクスチャを生成して重ね合わせることができ、リアルタイムで実行できます。テクスチャパターンは、表現しようとしている現実世界の素材を示唆するように連続的にモデル化でき、エイリアシングがなく、最終的に詳細レベルと段階的 (知覚できない) 詳細レベルの遷移を提供します。テクスチャ生成はフレームごとに再現可能で一貫性があり、正しい遠近法と適切な遮蔽を維持します。リアルタイムテクスチャリングの適用は初期の 3 次元フライトシミュレータ CGI システムに適用され、テクスチャはリアルなグラフィックスの前提条件であるため、この特許は広く引用され、これらの技術の多くは、長年にわたってアプリケーションが拡大するにつれて、後にグラフィックス コンピューティングとゲームに適用されました。[ 6 ]
mipmap という用語の起源は、ラテン語のmultum in parvo (「小さな中に多くのもの」) と、ビットマップをモデルにした map の頭文字をとったものです。[ 1 ]ピラミッドという用語は、 GIS の文脈で今でもよく使われています。GIS ソフトウェアでは、ピラミッドは主にレンダリング時間を短縮するために使用されます。

ミップマップセットの各ビットマップ画像は、メインテクスチャを縮小した複製ですが、詳細度は一定のレベルまで低下しています。ビューが十分な場合、メインテクスチャが引き続き使用されますが、テクスチャが遠くから、または小さいサイズで表示される場合、レンダラーは適切なミップマップ画像に切り替えます(実際には、三線形フィルタリングが有効になっている場合は、最も近い 2 つの画像の間を補間します)。より単純なミップマップテクスチャを使用すると、ディスプレイピクセルごとに処理されるテクスチャピクセル(テクセル)の数を大幅に減らして同様の結果を得ることができるため、レンダリング速度が向上します。ディスプレイピクセルごとに限られた数のテクスチャサンプルを使用する場合(バイリニアフィルタリングの場合など)、ミップマップ画像は実質的に既にアンチエイリアス処理されているため、アーティファクトが軽減されます。ミップマップを使用すると、縮小と拡大もより効率的になります。
テクスチャの基本サイズが 256 × 256 ピクセルの場合、関連付けられたミップマップ セットには、それぞれ前の画像の 4 分の 1 の面積を持つ 8 つの画像が含まれる可能性があります。128 × 128 ピクセル、64 × 64、32 × 32、16 × 16、8 × 8、4 × 4、2 × 2、1 × 1 (1 ピクセル)。たとえば、シーンがこのテクスチャを 40 × 40 ピクセルの空間にレンダリングする場合、32 × 32 の拡大バージョン (三線形補間なし) または 64 × 64 と 32 × 32 のミップマップの補間 (三線形補間あり) のいずれかが使用されます。これらのテクスチャを生成する最も簡単な方法は、連続平均化ですが、より高度なアルゴリズム (信号処理やフーリエ変換に基づくものなど) も使用できます。

これらすべてのミップマップに必要なストレージ容量の増加は、元のテクスチャの 3 分の 1 です。これは、1/4 + 1/16 + 1/64 + 1/256 + ⋯の面積の合計が 1/3 に収束するためです。3 つのチャンネルが別々のプレーンとして格納されている RGB 画像の場合、全体のミップマップは、各辺が元の画像の寸法の 2 倍の正方形領域にきれいに収まるように視覚化できます (各辺が 2 倍ということは、元の面積の 4 倍です。赤、緑、青それぞれに元のサイズの 1 つのプレーンがあると、元の面積の 3 倍になります。そして、より小さなテクスチャは元の 1/3 を占めるので、3 の 1/3 は 1 となり、元の赤、緑、または青のプレーンの 1 つと同じ合計スペースを占めます)。これがタグmultum in parvoの着想です。

ミップマップは以下の用途に使用されます。
テクスチャを急な角度で見る場合、フィルタリングは各方向で均一であってはならず(等方性ではなく異方性であるべき)、妥協した解像度が必要となります。より高い解像度を使用すると、キャッシュのコヒーレンスが低下し、一方の方向でエイリアシングが増加しますが、画像はより鮮明になる傾向があります。より低い解像度を使用すると、キャッシュのコヒーレンスは向上しますが、画像が過度にぼやけます。これは、エイリアシングとぼやけに対する MIP レベル オブ 詳細 (LOD) のトレードオフになります。しかし、異方性フィルタリングは、単に MIP LOD を調整するのではなく、各ピクセルに対して非等方性のテクスチャ フットプリントをサンプリングすることによって、このトレードオフを解決しようとします。この非等方性テクスチャ サンプリングには、より高度なストレージ スキームまたはより高い周波数でのより多くのテクスチャ フェッチの合計が必要です。[ 10 ]
{{cite web}}: CS1 maint: 複数の名前: 著者リスト (リンク)