分かっているような分かっていないような、そしてたいていは分かっていなくても何とかなる圧縮テクスチャ。 そんな圧縮テクスチャについての試行錯誤と2021年のココネのベタープラクティス。 デザイナーの要求レベルが高い弊社での試行錯誤をお話できたらなと思います。
2021年版2Dスマホゲームにおける圧縮テクスチャについて倉 秀一/KURA Shuichi
View Slide
本日の内容(20分くらい)1. 自己紹介2. 圧縮テクスチャって?3. 圧縮テクスチャの種類とか4. 2021年のベタープラクティス2
1. 自己紹介倉秀一群馬県みどり市出身。3人の子どもがいます。長いこと埼玉の北浦和に住んでいました。今は三茶に住んでいます。飲み屋行きたいです。I LOVE:ビール, 家系ラーメン, 焼肉, 音楽(中田ヤスタカ/tofubeats/やくしまるえつこ), CUI, Vim, Solarized, Tesla,SF/ファンタジー/ホラー, Google, 自転車, Steam, Netflix, 料理, 香り物(香水/ディフューザ/バスソルト)
こんな事やってました2003〜2010年コナミ ネットワーク対戦アーケードゲーム開発(サーバ担当、通信、クイズ周り、ディレクターもちょっと)2011〜2015年GREE ソーシャルゲーム開発(主にサーバ担当)2015〜現在ココネ 新規アプリの立ち上げ(主にクライアント担当) ・某IP初の着せ替えアプリ ・ポケコロツイン ・リヴリーアイランド4
2. 圧縮テクスチャって?5
圧縮テクスチャじゃない場合(JPGやPNGなど)6元画像JPGへ変換非圧縮に展開
圧縮テクスチャの場合(PVRTC,ETC2,ASTCなど)7元画像圧縮テクスチャへ変換そのまま使える。ステキ!
圧縮テクスチャのメリット● 圧縮率は無圧縮と比べて ¼, ⅛, 1/16 位に○ PNGやJPGなどに比べると圧縮効率は良くない● 描画時のパフォーマンス向上○ 転送時帯域削減○ 変換不要● メモリ容量の削減(VRAM)● アプリ容量の削減(ストレージ、トラフィック)○ ファイルサイズ的な話● 消費電力削減8
圧縮テクスチャのデメリット● プラットフォームによって使える形式がまちまち○ 対応していない形式を無理に使おうとするとVRAM上では非圧縮に展開されます。● 不可逆圧縮なのでもちろん画像が劣化します○ グラデーションや透過を使っている画像では顕著です。○ 色が大きく違うものが密集しているものも苦手です。9
3. 圧縮テクスチャの種類とか10
モバイルで使える圧縮テクスチャの種類(iOS)11https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdfテクスチャ圧縮形式サポートしているチップセットPVRTC すべてETC2/EAC iPhone 5s (A7以降)ASTC iPhone 6 (A8以降)● PVRTC はアルファが苦手です
モバイルで使える圧縮テクスチャの種類(Android)12テクスチャ圧縮形式サポートしている Google Play デバイスの割合1ETC1 99%ETC2 87%ASTC 77%ATC 35%PVRTC 11%DXT1 0.7%https://developer.android.com/guide/app-bundle/asset-delivery/texture-compression?hl=ja1 2020 年 9 月にアクティブな Google Play デバイスから収集したデータを使用して算出
ASTC をサポートしているチップセット(Android)● Qualcomm GPUs since Adreno 4xx / Snapdragon 415 (2015)● ARM GPUs since Mali T624 (2012)● NVIDIA GPUs since Tegra K1 (2014)● PowerVR GPUs since GX6250 (2014)13
ちなみに PVRTC, ETC1 時代(5年位前)はこんな事していました14
輪郭部分にアルファで抜かれる黒がにじむ問題15
輪郭部分にアルファで抜かれる黒がにじむ問題16外縁の色を引き伸ばして対処しました。
4. 2021年のベタープラクティス17
最近5,6年以内に発売された端末をターゲットにするのでしたら、iOS/Android 共に ASTC 一択で良いと思う!ブロックサイズを選択できるので画像によって変更できるのがとても良いです。● 標準は ASTC 6x6● ブロックノイズや劣化が気になるものに関しては、ASTC 4x4● それすらも許容できない場合はTrue ColorRGB24/RGBA32 で。○ UI のボタンや背景 9Slice 使うものなど18
19Unity での設定方法(インスペクタ)
ただし、ASTC テクスチャが一部の Android 端末で透けるハードウェア的な問題があるようなのでご注意を。Unity では下記の組み合わせで発生します。● Adreno GPU 端末● プロジェクト設定はリニア色空間● テクスチャの色空間は sRGB【参考】https://qiita.com/khattorij/items/90fab5c3fc67a811e71f20注意
HAPPY HACKING!ANY QUESTIONS?21