Unity 2017.3 から「RGB Crunched ETC」と「RGBA Crunched ETC2」というテクスチャフォーマットが追加されました。
Updated Crunch texture compression library – Unity Blog
https://blogs.unity3d.com/jp/2017/11/15/updated-crunch-texture-compression-library/
こちら iOS でも使える様ですが iOS は PVRTC で Android は ETC というイメージが有るので iOS 環境でもこれらのフォーマットは有用なのか検証してみました。
検証方法
- Unityのバージョンは 2017.3.0f3 を使用。
- 512x512/1024x1024/2048x2048 の3種類のサイズのテクスチャを透過無し(RGB)と透過有り(RGBA)のものを準備して検証。テクスチャ名が image〜 のものが透過なし、 imageTrans〜 が透過有りのもの。
- 実機でのメモリ消費量は MemoryProfiler (https://bitbucket.org/Unity-Technologies/memoryprofiler)にて確認。
- 「PNGファイル」のサイズは Mac のターミナル上で ls -alh コマンドにて確認。
- カッコ内のファイルサイズは Build Report で確認した値。
検証に使用したプロジェクトはこちら。
iOS
※画像をクリックした先のページにてオリジナルサイズの画像を表示可能。
iOS 環境ではグラフィック API (Metal/OpenGL ES 3/OpenGL ES 2)により、差異が発生しました。
- Metal は ETC 未対応( ETC2 には対応)為、「RGB Crunched ETC」を Metal 環境で実行した場合には実際には RGBA 32bit サイズのメモリが消費される。ファイルサイズは多少増えるが透過が無いテクスチャでも「RGBA Crunched ETC2」を使った方がメモリ使用量は抑えれる。
- OpenGL ES 2 環境は ETC/ETC2 未対応の為、「RGB Crunched ETC」や「RGBA Crunched ETC2」を使用した場合、実行時には RGBA 32bit サイズのメモリが消費される。
- PVRTC ではグラフィック API の差異によるサイズの差異は発生せず。
- ストレージ容量を抑えるのが最重要なゲーム以外は基本的に PVRTC がバランスが良くてオススメ。
関連情報
Crunch compression of ETC textures – Unity Blog
https://blogs.unity3d.com/jp/2017/12/15/crunch-compression-of-etc-textures/