コンピュータグラフィックスでは、ミップマップ(ミップはラテン語の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 つの画像の間を補間します)。より単純なミップマップテクスチャを使用すると、ディスプレイピクセルごとに処理されるテクスチャピクセル(テクセル)の数を大幅に減らして同様の結果を得ることができるため、レンダリング速度が向上します。ディスプレイピクセルごとに限られた数のテクスチャサンプルを使用する場合(バイリニアフィルタリングの場合など)、ミップマップ画像は実質的に既にアンチエイリアス処理されているため、アーティファクトが軽減されます。ミップマップを使用すると、縮小と拡大もより効率的になります。
If the texture has a basic size of 256 by 256 pixels, then the associated mipmap set may contain a series of 8 images, each one-fourth the total area of the previous one: 128×128 pixels, 64×64, 32×32, 16×16, 8×8, 4×4, 2×2, 1×1 (a single pixel). If, for example, a scene is rendering this texture in a space of 40×40 pixels, then either a scaled-up version of the 32×32 (without trilinear interpolation) or an interpolation of the 64×64 and the 32×32 mipmaps (with trilinear interpolation) would be used. The simplest way to generate these textures is by successive averaging; however, more sophisticated algorithms (perhaps based on signal processing and Fourier transforms) can also be used.

The increase in storage space required for all of these mipmaps is a third of the original texture, because the sum of the areas 1/4 + 1/16 + 1/64 + 1/256 + ⋯ converges to 1/3. In the case of an RGB image with three channels stored as separate planes, the total mipmap can be visualized as fitting neatly into a square area twice as large as the dimensions of the original image on each side (twice as large on each side is four times the original area - one plane of the original size for each of red, green and blue makes three times the original area, and then since the smaller textures take 1/3 of the original, 1/3 of three is one, so they will take the same total space as just one of the original red, green, or blue planes). This is the inspiration for the tag multum in parvo.

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