2015年06月19日

Unityで画像fを圧縮する際のフォーマットのお話し(ASTCとETC)

仕事でどうしてもAndroidのAPKのサイズを減らさないといけない事態になってたので画像圧縮に関して色々調べてた。
Unityは何もしないと
ETC1/RGBA16というフォーマットになるらしい。

Androidは主に
ETC系
PVRTC系
ASTC系

他にもあるが、多分主流はこの三つ。

ETC系は上記でも述べたように全てのAndroid端末で使用可能。
ただし、ETC2はOpenGL ES 3.0以上推奨。

PVRTC系はiOSのほぼ全てに適応されているらしい。
Androidは少ないのかも。なのでこれにするのは却下w

ASTC系もETC2同様、OpenGL ES 3.0以上が推奨。
比較的新しいフォーマットでETC2よりも対応圧縮の種類が豊富らいしい。

ASTCでしか試してないが、縦横が2の乗算でないと圧縮ができないと思われ。

とりあえずアルファは持っておきたいので、「RGBA Commpressed ASTC 4x4 block」にしてみる。

結果:2.0MB -> 1.0MB

画質も比較的いい感じ。
12x12で試したがさすがに粗かった。サイズは111KB位になってた!!!すっげ!

Unity上でOverride for Androidをオンにすると、Build SettingsのTexture CompressionがDon't Overrideでも適応される(いいのかそれでw)。

きになるのが、果たしてASTCで古い端末でも動くのか?ってとこ。

一応、
新しいやつではNexus5、Nexus7で動作確認。

古い端末では
Galaxy S4
Galaxy S3
Galaxy S2
でとりあえず動作することは確認した。

ので、大方そこらへんで使われてる端末なら問題ないんでないかと。。^^;

ただーし!!
透過が上手くいかない。。T~T
これは致命的すぎ!

RGBA Comppressed ETC2 8 bits」にしたら透過は上手くできた。
圧縮率もASTC 4x4とほぼ同じ。

結局ETCかい。。orz


参考リンク
OpenGL 4.3/ES 3.0 ETC2 Texture 圧縮の仕組み (PVRTC2,ASTC)
Android OpenGL ES 2.0 の圧縮テクスチャ
OpenGL ES 3.0 / OpenGL 4.3 ASTC 圧縮テクスチャの比較
posted by へっぽこぷー at 11:00| Comment(0) | Unity | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: