【Unity】テクスチャ圧縮フォーマットの決め方(2018年版)

テクスチャ圧縮フォーマットを決めるときに地味に悩むので、
現時点での自分なりのテクスチャ圧縮の方針をメモしておきます。

テクスチャフォーマットとサイズ

まず使いそうなテクスチャフォーマットとその情報を並べてみます。

フォーマット サイズ(bits/px) OS 備考
RGBA 32 bit 32 両方 無圧縮
ETC RGB 4 Android GLES 2.0以上
ETC2 RGB 4 Android GLES 3.0以上
ETC2 RGBA8 8 Android GLES 3.0以上
PVRTC RGB4 4 iOS
PVRTC RGBA4 4 iOS
ASTC RGB 4x4 8 両方 A8以降のiOS
条件を満たすAndroid(下記参照)
ASTC RGBA 4x4 8 両方 A8以降のiOS
条件を満たすAndroid(下記参照)

ASTCに対応しているAndroidについては下記の記事を参照してください。

light11.hatenadiary.com

フォーマット選択方針

まずiOSについて。
前提として、アルファ付きのPVRTCであるPVRTC RGBA4については
かなり荒くなってしまうので使わない方針にします。

そのうえで以下のような方針にしてみました。

  1. アルファが無くてかつクオリティが許容できるものはサイズ節約のためPVRTC RGB4
  2. アルファが無くてクオリティを高くしたいものはASTC RGB 4x4
  3. アルファがあるものはASTC RGBA 4x4

Androidは対応端末でASTCを使えるかによって方針が変わります。
また前提として、ETC1はもう対応しなくていいだろうということで使っていません。

まずASTCが使える場合です。

  1. アルファが無くてかつクオリティが許容できるものはサイズ節約のためETC2 RGB
  2. アルファが無くてクオリティを高くしたいものはASTC RGB 4x4
  3. アルファがあるものはASTC RGBA 4x4

次にASTCが使えない場合です。

  1. アルファがないものはETC2 RGB
  2. アルファがあるものはETC2 RGBA8

関連

light11.hatenadiary.com

light11.hatenadiary.com