テクスチャ圧縮フォーマットを決めるときに地味に悩むので、
現時点での自分なりのテクスチャ圧縮の方針をメモしておきます。
テクスチャフォーマットとサイズ
まず使いそうなテクスチャフォーマットとその情報を並べてみます。
フォーマット | サイズ(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については下記の記事を参照してください。
フォーマット選択方針
まずiOSについては、あまりに古い端末まで対応しようとしなければASTCで問題ありません。
なので以下のような方針にしてみました。
- クオリティが許容できるものはサイズ節約のためASTC 8x8
- アルファが無くてクオリティを高くしたいものはASTC RGB 4x4
- アルファがあるものはASTC RGBA 4x4
Androidは対応端末でASTCを使えるかによって方針が変わります。
また前提として、ETC1はもう対応しなくていいだろうということで使っていません。
まずASTCが使える場合です。
- クオリティが許容できるものはサイズ節約のためASTC 8x8
- アルファが無くてクオリティを高くしたいものはASTC RGB 4x4
- アルファがあるものはASTC RGBA 4x4
次にASTCが使えない場合です。
- アルファがないものはETC2 RGB
- アルファがあるものはETC2 RGBA8