【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 RGB 8x8 2 両方 A8以降のiOS
条件を満たすAndroid(下記参照)
ASTC RGBA 8x8 2 両方 A8以降のiOS
条件を満たすAndroid(下記参照)

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

light11.hatenadiary.com

フォーマット選択方針

まずiOSについては、あまりに古い端末まで対応しようとしなければASTCで問題ありません。
なので以下のような方針にしてみました。

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

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

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

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

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

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

関連

light11.hatenadiary.com

light11.hatenadiary.com