【最適化深掘り】テクスチャとマテリアル:場面ごとの「戦略的使い分け」とミップマップの正体

Unity(デザイナー向け)

「同じようなテクスチャを1枚にまとめるべきか、用途ごとにサイズを分けて作るべきか」

これはVFX制作の現場で常に議論される、「ディスク容量」と「実行負荷(ランタイム性能)」のトレードオフそのものです。

このパズルを解く鍵は、「ミップマップ(Mipmaps)」という自動最適化の仕組みを正しく理解し、その上でプラットフォームごとの「攻め所」を見極めることにあります。

実務で迷わないための、テクスチャ・マテリアル設計の決定版ガイドをお届けします。

スポンサーリンク

究極のジレンマ:1枚にまとめるか、サイズ違いを作るか?

データ総量を減らすなら「1枚を使い回す」のが正解に見えますが、実行時のメモリ帯域を考えると「小さいものは小さいテクスチャにする」のが定説……。
この矛盾を解消するのがミップマップです。

基本戦略:3D空間なら「大は小を兼ねる」

結論から言うと、3D空間に配置するエフェクトに関しては、「高品質な大きいテクスチャを1枚作り、小さなエフェクトにもそれを使い回す」 のが最も賢い選択です。

  • 理由: ミップマップがあるからです。512pxのテクスチャ1枚を、巨大な爆発にも、足元の小さな砂埃にも共有してOKです。

  • メリット:

    • 管理コストの低下: 素材管理がシンプルになる。

    • ドローコールのバッチング: 同じテクスチャ(マテリアル)を使っていれば、Unityが描画命令を一つにまとめてくれる可能性が高まります。


スポンサーリンク

ミップマップの正体:なぜ「大は小を兼ねる」のか?

ミップマップは単なる「遠景用のボケ画像」ではありません。
内部的には、GPUが「テクセル密度」を監視し、最適な解像度を秒速で選び続ける守護神 です。

ミップマップは「距離」だけを見ていない

ミップマップが画像を切り替える基準は、距離ではなく 「画面上の1ピクセルに、テクスチャの何ピクセル(テクセル)を押し込もうとしているか?」 という勾配(Gradient)です。

勾配(Gradient)の計算式

GPUは、隣り合ったピクセルのテクスチャ座標(UV)がどれだけ変化したかを計算しています。

この値が大きければ大きいほど、GPUは「おっと、今の描画サイズに対してテクスチャが細かすぎる(縮小されている)」と判断し、自動的に1段低い(ボケた)ミップレベルに切り替えます。

ミップレベルの選択に影響する5つの要素

  1. カメラとの距離: 遠いほど縮小される。

  2. TransformのScale: 縮小設定ならミップマップが効く。

  3. Particle SystemのStart Size / Size over Lifetime: 描画されるポリゴンが小さければ、自動的にボケた画像が選ばれる。

  4. 画面解像度: モニターの1ピクセルが小さいほど、より精細なレベルが選ばれる。

  5. テクスチャのTiling: 1枚の板に10回タイルさせれば、1ピクセルあたりのUV変化が激しくなり、ミップマップが適用されます。


スポンサーリンク

用途別・テクスチャサイズの設計図

ミップマップが「自動でサボってくれる」ことを踏まえつつ、それでも「別データ」として切り出すべき境界線を引いてみましょう。

カテゴリ 標準サイズ Mipmaps 戦略
目立つFX(必殺技) 512px ~ 1024px ON 最高の品質を基準にする。
汎用・小FX(火花等) 128px ~ 256px ON 基本は「目立つFX」の素材を使い回す。
画面全域(砂嵐・雨) 512px ~ 1024px ON タイリングが目立たない中解像度。
UI(アイコン・演出) 256px ~ 512px OFF 絶対に共有不可。 くっきり見せる専用設計。

なぜUIは「独立」させるのか?

UIエフェクトは、常に1:1に近い解像度で表示されるため、Mipmapをオフにします。
3D用のMipmapオン設定のテクスチャをUIに流用すると、メモリ容量を33%無駄に消費した上に、エッジがボケて見えるという最悪の結果を招くからです。


スポンサーリンク

モバイル vs コンシューマ:最適化の攻め所

モバイル(中〜高スペック)

  • 課題: メモリ帯域(バス)が細いため、テクスチャの「枚数」に敏感。

  • 解決策: “Channel Packing(チャンネルパッキング)” が必須です。
    1枚のRGBAテクスチャの各チャンネルに、R=炎、G=煙、B=火花……と情報を詰め込みます。
    マテリアルを共通化し、シェーダーで読み出すチャンネルを変えることで、メモリ帯域とドローコールの両方を節約します。

コンシューマ(PS5 / PC)

  • 課題: 4K環境での「解像度不足(ボケ)」がプレイヤーの没入感を削ぐ。

  • 解決策: 解像度のメリハリ。目立つキャラエフェクトには2048pxを奢る代わりに、背景環境用のエフェクトには徹底的にミップマップを効かせ、テクスチャのインポート設定で解像度を制限します。


スポンサーリンク

マテリアルの「階級制度」

テクスチャを共通化しても、マテリアル(シェーダー)が重ければ意味がありません。

  • マスターシェーダー戦略: 1つの高機能シェーダーを使い回すのは開発効率が良いですが、計算が複雑になりがちです。

  • 階級の切り分け:

    • Class A: 屈折、ディゾルブ、高度なライティング(ボス・自キャラ用)。

    • Class B: 汎用加算、アルファブレンド、簡単なノイズ(雑魚・環境用)。

    • Class C: 単色、頂点カラーのみ(大量のパーティクル用)。


スポンサーリンク

結論:賢いエフェクト制作の3箇条

  1. 3D空間なら「大は小を兼ねる」: Mipmapの勾配計算を信じて、中〜大規模FX用の解像度に統一して共有。ディスク容量の増加よりも、描画バッチングの恩恵を取る。

  2. UIは「聖域」: 3D用アセットとは設定もデータも完全に分ける。

  3. 計算の重心を意識する: モバイルならテクスチャのサンプリング回数を、コンシューマならピクセルの見た目の精細さを優先して設計する。

タイトルとURLをコピーしました