Mipmap(ミップマップ)は、3D空間におけるカメラとオブジェクトの距離(画面上での表示サイズ)に応じて、自動的に縮小・最適化されたテクスチャ画像に切り替えてレンダリングするグラフィックス最適化技術です。

現実世界での例え:遠くの巨大看板を読む目の疲労と『小さな手元用パンフレット』

Mipmapの仕組みは、「遠くにある巨大な看板の文字を読む目の疲労(メモリ帯域幅)と、あらかじめ手元に用意した『縮小版パンフレット』の読み分け」に例えることができます。

  • 従来(Mipmapなし): 2km先にある超巨大な文字で書かれた看板(4Kなどの超高解像度テクスチャ)を、肉眼(カメラ)で直接凝視して読もうとします。文字が視界に対して極端に小さく潰れているため、目を細めてピントを合わせるために脳(GPUのメモリ帯域幅)に甚大な処理ストレスがかかり、ピクセルがモザイクのように激しくチラついて見えます(ジャギー・エイリアシングの発生)。
  • Mipmapによる解決: 看板を遠くから見るときのために、あらかじめ文字や絵を綺麗に縮小印刷した「小さな手元用パンフレット(段階別の縮小テクスチャ)」を用意しておきます。遠くを見るときは、脳(GPU)が自動的にこのパンフレットに目を落として文字を確認します。超長距離のデータロード(高解像度サンプリング)を行う必要が完全になくなるため、目の疲労(VRAM読み込み帯域)が激減し、チラつきのない滑らかな見た目を維持できます。
Unity Texture Mipmap level generation diagram

図:距離に応じて1/2、1/4へとテクスチャ解像度レベル(LOD)を自動遷移させるMipmapのインフォグラフィック

仕組みと動作原理

テクスチャインポート時に「Generate Mip Maps」を有効にすると、Unityは元のテクスチャ(例えば 1024x1024)から、512x512、256x256...と解像度を半分に縮小した画像(ミップレベル)をピラミッド状に事前作成し、1つのテクスチャアセット内にパッケージングします。ゲーム実行時、GPUは描画するオブジェクトの「画面上でのピクセル面積」を瞬時に計測し、最適なミップレベルのテクスチャを自動選択してサンプリングします。