読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】iOSでASTCフォーマットのテクスチャ圧縮を使う

2D 3D Unity5.5 Unity iOS

今回はPVRTCと比較して割と綺麗で消費メモリも少ないASTCフォーマットのテクスチャ圧縮を使用する方法についてです。

ASTCについて

wlog.flatlib.jp

ブロックの大きさを指定可能で、ブロックのサイズが大きければ大きいほど圧縮率が高く、汚くなります。

PVRTCが1ピクセルを4ビットで表現しているのに対し、ASTC 6x6は3.56ビット、ASTC 12x12は0.89ビットという高圧縮率を誇ります。また、最も圧縮率が低くTrueColor並に綺麗なATSC 4x4でも1ピクセル8bitと、割とコンパクトに収まります。

f:id:tsubaki_t1:20160928235251j:plain

developer.nvidia.com

ASTC を使用する

f:id:tsubaki_t1:20160928234909p:plain

 

ASTCとPVRTCとTrueColorを比較してみる

5.5からだと思いますが、ASTCがiOSでも使用できるようになりました。

実際にiPad proに出力した物を比較してみます。

True ColorとATSC 4x4を比較すると、殆ど見分けはつかないレベルです。これでも消費メモリは半分以下になります。

PVRTCとASTC6x6は大体消費メモリは同じくらいですが、内側に滲んでいるPVRTCと比較してASTC 6x6の方が綺麗に見えます。
ASTC12x12まで行くと非常に汚く見えるようになりますが、消費メモリはガッツリと落ちます。

f:id:tsubaki_t1:20160928235440j:plain

 

使えるのはA8以降のCPU

割と綺麗なASTCですが、使用する為にはA8以上(iPhone6以降)のCPUが必要となります。
ソレ以前のA7のCPUを使用するとTrueColorに解凍し展開するため、汚くロードも長い割にメモリを超喰うという踏んだり蹴ったりな状況になります。

 

実際に解凍できなかった場合、以下のようなメッセージが表示されます。
WARNING: ASTC texture format is not supported, decompressing texture

 

AndroidでのASTC対応端末は、ココが参考になるかもしれません。

OpenGL ES Hardware Database - © 2013-2015 by Sascha Willems

 

関連

tsubakit1.hateblo.j