ミップマップは便利な半面、斜めの面や小さなパーティクルに対して「ボケすぎる」傾向があります。
実務でこれらをどう「ちょうど良く」調整するのか、その手法を整理しました。
質感の微調整:Mip Map Bias(ミップマップ・バイアス)
ミップマップが「どのレベルの解像度を選ぶか」に、人間側からオフセット(下駄)を履かせる設定です。
-
マイナスの値(例: -0.5 ~ -1.0): 本来の計算よりも「1段階精細な」レベルを強制します。地面に貼った魔法陣がボケて見える際、これを少し下げるだけで、質感が見違えるほどクッキリします。
-
プラスの値(例: +1.0): 本来よりも「1段階ボケた」レベルを強制します。背景に馴染ませたいフォグや、柔らかい光の表現に適しています。
[設定場所] Unityのテクスチャインポート設定の Advanced > Mip Map Bias で設定可能です。
斜め方向の守護神:Anisotropic Filtering(異方性フィルタリング)
カメラに対して斜めになっている面(地面や壁)のボケを防ぐための必須設定です。
-
なぜ必要か?:
通常のミップマップは「正方形」に縮小していきます。
しかし、地面を斜めに見ると「縦方向だけが急激に縮小」されます。
これに普通のミップを適用すると、横方向まで一緒にボケてしまいます。 -
効果:
この設定を有効にすると、斜め方向のテクセル変化を賢くサンプリングし、奥行きがあってもディテールを維持します。
地面に設置するエフェクトには必ず設定を検討しましょう。
表現としての制御:シェーダーでの LOD サンプリング
Shader Graph(またはHLSL)を使えば、距離に関係なく「あえて特定のボケ具合」を固定して描画できます。
-
手法:
Sample Texture 2DノードのSettingsをLODに変更します。 -
使い所:
-
距離に関係なく常にボカしたい:
LODレベルを固定(例:3.0)にすると、常に1/8サイズのボケた状態で描画されます。 -
動的なボケ演出:
パーティクルの生存期間(Life Time)に応じてLODレベルを 0 → 5 へ変化させれば、徐々に曇っていくような演出が可能です。
-
Unityでの生成設定:ボケ方の「品質」を選ぶ
テクスチャインポート設定の Generate Mip Maps をオンにすると現れる詳細設定も重要です。
-
Mip Selection:
-
Box: 高速ですが、ボケ方がやや単純です。
-
Kaiser: より高品質なフィルタリング。境界線のジャギーを抑えつつ、綺麗に縮小したい場合に選びます。
-
-
Mipmap Preserve Coverage(アルファ保護):
-
重要: アルファチャンネルを持つテクスチャ(特に細い線のエフェクト)で非常に有効です。
-
理由: ミップマップで縮小されると、アルファ値(透明度)が平均化されて「線が消えてしまう」ことがありますが、これをオンにすると透明部分と不透明部分の比率を維持してくれます。
-
【注意】「クッキリ」の代償
「じゃあ、全部Biasをマイナスにしてクッキリさせればいい」と思うのは危険です。以下のデメリットを必ず天秤にかけてください。
-
エイリアシング(ジャリジャリ感):
ミップマップの本来の役割は「チラつき防止」です。無理にクッキリさせると、カメラが動いた時にエッジがジャリジャリと点滅し、安っぽく見えてしまいます。 -
GPUキャッシュの効率低下:
より大きな解像度のテクスチャをサンプリングするため、GPUのビデオメモリ(VRAM)からの読み込み負荷がわずかに増加します。
まとめ:ミップマップ設定のチェックリスト
-
[ ] 地面系エフェクト:
Anisotropic Filteringを有効にし、必要に応じてBiasを-0.5程度にする。 -
[ ] UIエフェクト:
Mip Mapsを OFF にする(ボケを嫌うため)。 -
[ ] 細い線や紋様:
Preserve Coverageをオンにして、縮小による消失を防ぐ。 -
[ ] 演出: あえてボカしたい時は
Biasをプラスにするか、シェーダーでLOD指定を行う。
「ミップマップを制するものは、画面の『解像度感』を制する」と言っても過言ではありません。
