強火で進め

このブログではプログラム関連の記事を中心に書いてます。

Unity 2017.3 で導入された「RGB Crunched ETC」と「RGBA Crunched ETC2」についての検証

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 がバランスが良くてオススメ。

Android


Android 環境では特に問題は無い様なのでグラフィック品質に問題無ければ積極的に使用してOKそうです。

関連情報

Crunch compression of ETC textures – Unity Blog
https://blogs.unity3d.com/jp/2017/12/15/crunch-compression-of-etc-textures/