(2012/06/13 追記)
コメント欄にて椿さんより2の乗数でない場合は圧縮テクスチャを選択しても圧縮が行われないとの指摘を頂きました。その点、全く考慮していませんでした。
その為、改めて別の記事で2の乗数の画像で改めて検証を行いました。圧縮テクスチャ以外については参考にして貰って問題ないかと思います。
(追記ここまで)
UnityでiOSの画面を再現する様な場合に適したテクスチャの設定ってどれなんだろ?と思って検証してみました。
この様にUnityで2D描画をする時にはテクスチャのピクセル(テクセル)と画面のピクセルが1対1になったピクセルパーフェクトな状態な場合が一番綺麗に表示されます。
サンプルプログラムとしてはSafariで表示した画面を画面キャプチャした以下の様な画像をテクスチャ画像として準備して、iPhone 4S上でピクセルパーフェクトな描画に成るようにUnityのプログラムを作成し、検証しました。
【テスト環境】
テクスチャの元サイズは 150KB
Texture Type が GUI の時
まずは Texture Type が GUI の時はどうなるのか検証してみました。
Formatの設定とその時のテクスチャサイズは以下の様になりました。テクスチャサイズはアプリをビルドするに生成される Editor.log に記載されているものを記述しています。
名前 | Format | テクスチャサイズ |
---|---|---|
GUI_comp | Compressed | 1.8MB |
GUI_16bit | 16 bits | 1.2MB |
GUI_true | Truecolor | 1.8MB |
※「名前」はキャプチャ画像を区別する為に画像の左下記載している名前です。
実機で表示したものをキャプチャした画像はこちら(そのまだと大きいので同じ位置で切り取っています)。
いずれもそれほどはっきりと分かるくらいの違いは無いみたいです。今回の様な用途の場合にはGUIの設定の場合には 16 bits で良いかな?
Texture Type が Advanced の時
次に Advanced の時はどうなるか試してみました。
名前 | Format | 生成されたテクスチャのサイズ |
---|---|---|
Adv_AC | Automatic Compressed | 1.8MB |
Adv_RGB_DXT1 | RGB Compressed DXT1 | 1.8MB |
Adv_RGB_ETC4 | RGB Compressed ETC 4 bits | 1.8MB |
Adv_RGB_PVRTC2 | RGB Compressed PVRTC 2bits | 1.8MB |
Adv_RGBA_PVRTC2 | RGBA Compressed PVRTC 2bits | 2.3MB |
Adv_RGB_PVRTC4 | RGB Compressed PVRTC 4bits | 1.8MB |
Adv_RGBA_PVRTC4 | RGBA Compressed PVRTC 4bits | 2.3MB |
Adv_RGB_ATC4 | RGB Compressed ATC 4bits | 1.8MB |
Adv_RGBA_ATC8 | RGB Compressed ATC 8bits | 1.8MB |
Adv_A16 | Automatic 16 bits | 1.2MB |
Adv_RGB16 | RGB 16 bit | 1.2MB |
Adv_RGBA16 | RGBA 16 bit | 1.2MB |
Adv_AT | Automatic Truecolor | 1.8MB |
Adv_RGB24 | RGB 24 bits | 1.8MB |
Adv_ARGB32 | ARGB 32bits | 2.3MB |
Adv_RGBA32 | RGBA 32bits | 2.3MB |
※流石に Alpha 8 はここで取り上げても意味が無いので含めていません。
実機のキャプチャ画像はこちら。
「Automatic 16 bits」、「RGBA 16 bit」など16bitのものはキャプチャ画像の中央の帯のグラデーションの所を見るとちょっと描画が汚くなっているのが確認できます。グラデーションを含まない画像であれば使えそうですが含む場合には要検討なクオリティになるみたいです。
「RGBA 16 bit」に至ってはかなりクオリティが低いものになってしまっています。これについては使える場面はかなり限定されてしまいそうです。
それ以外はいずれもそれほど大きな差は出てない様です。今回の様な用途であればアルファを使ってないのでRGBのものを使い、透過部分が必要なGUIパーツを自前で準備する様な場合にはRGBAのものを使うという方針で良いような気がします。
もろもろを考えると GUI の「16 bits」か、 Advanced の「Automatic Compressed」辺りを使うのが良いかな?
今回検証に使ったプログラムはこちらにアップして有りますので気になる人は自分で検証してみて下さい。 Test01 のSceneが今回検証で使ったものになります。