DDSの最適なミップマップフィルターの検証

CEDEC2015のフーリエ変換を用いたテクスチャ解像度推定とその応用
画像の周波数見れば最適なテクスチャ解像度が分かるのでは?というお話で、面白いし勉強になります。

そして、常日頃使っていて、たぶんそれなりに使われているであろうPhotoshopのNvidiaのDDSプラグインのmipmapのデフォルト設定が微妙だそうです(スライド178P)。
ボケすぎるのは薄々気づいてたんですが、フィルターのどれがいいのかは検証はしてなかったのでこの機会に配布されているツールで検証してみます。(バイリニアとバイキュービックを使って作るのが最適だそうですが、それが面倒くさい方向け)

そもそもミップマップって何?
ミップマップを使うと、テクスチャ出力時に解像度の半分ずつ縮小していき、それも一緒に保存します。
(下記のスケルトンテクスチャを参照)

テクスチャはポリゴンに貼られるので、そのポリゴンとの距離が遠いほど、テクスチャが小さく写りますよね?
そのテクスチャのサイズに合わせて、ミップマップから最適な解像度のマップを選んで表示する機能です。
一枚のテクスチャを適宜縮小するより効率が良いからです。

最小距離の時に本来の解像度のテクスチャが表示されるので、通常プレイ時にはあまり接近して見ないのでミップマップのほうが表示されてることも。そう思うとけっこう大事です。

検証
検証用にスカイリムのスケルトンのディフューズテクスチャを使いました。
理由はそこにあったからさ…
skeleton_original.jpg

で、Polyphonyのツールを使ってオリジナルのテクスチャを見るとこんな感じのヒストグラムになります。
若干右下がりですがおおむね良好。

original_.png

画像にも書いてますが、以下の性質があります。
  • 直線に沿っているほど良い
  • 各線がバラけてないほうが良い
  • 右肩上がりなほどノイズが強い
  • 右肩下がりなほどボケる
Triangletriangle.png

例のデフォルト設定です。案の定、低周波がカットされてボケてます。
目視してもディテールが潰れてるのが分かります。

Point
point.png
ミップマップで見るとくっきりしてますが、遠近感からいって距離が遠いほどディテールがくっきりしないほうがいいのでダメな例。

box.png
良かったのはこれです。Box。
ミップマップ見ても、これが良い感じでした。

ミップマップ見てよさそうだったKaiser、BlackmanもBoxには及ばず。
QuadricやCubicなどはプレビュー見て微妙だったので除外。
全部は試してないのでBoxより良いのがあれば教えてください。

Paint.NET編
supersampling.png

DDSのDXT圧縮のキレイさに定評があるPaint.NETですが、デフォルトのスーパーサンプリングでいいと思います。
Boxとほぼ近いですがこっちのほうが優秀かも。以上。

結論
フォトショップではNvidiaのDDSのミップマップ設定をTriangleからBoxにしましょう。
Paint.NETではデフォルトそのままのスーパーサンプリングで。

例外はあるかもしれませんし、サンプル一つの取り急ぎの検証なので結論が変わるかもしれません。

設定はMIP Map Filtering...から
DDSExp.png

Filter TypeをBoxにするだけ
BoxSetting.png

関連記事
コメントの投稿


Does not accept comments that are all written in English on this blog for blocking a spam. If you have any questions, send a e-mail: tktk11111[at]gmail.com

コメント