UnityWebGLでテクスチャを扱うとメモリ消費がえぐいことで知られているがモバイル向けに無理矢理表示すると
普通のPC以上に消費する傾向があるように見えたので文献をいくつか見て考察したい、
ちゃんとパフォーマンストレースできる手法を確立できてないので辛いところ・・・
UnityWebGLのテクスチャ圧縮
高速テクスチャサンプリングに最適化された専用の形式でテクスチャを圧縮する必要があります。異なるプラットフォームとデバイスにはそれぞれ独自のフォーマットがあります。
Unity側でテクスチャを圧縮してくれる機能があってWebGLはWebGLで専用の圧縮形式があるんですね
ノート: sRGB DXT をサポートしないウェブブラウザーの リニアレンダリング では、テクスチャはランタイムに RGBA32 に解凍されます。
RGBA Compressed DXT・RGB Compressed DXTでWebGLの場合圧縮してくれてるんですがこれがブラウザー依存の挙動になります
ブラウザー側の対応状況
WebGL APIでDXT形式は定義されているんですが WEBGL_compressed_texture_s3tc
の実装がブラウザーによって違うみたいです
WEBGL_compressed_texture_s3tc
https://developer.mozilla.org/en-US/docs/Web/API/WEBGL_compressed_texture_s3tc
MozillaのWebGLリファレンスで対応状況が書かれていますが
2021/03/27現在 現状ではFirefoxだけ言及がないですが(Mozillaさん・・・自分のですよね・・・)
モバイル版ブラウザでは対応がない状況です
所感
DXTアルゴリズムの圧縮率は6/1:8/1と結構高いのでただでさえメモリ消費にギャアギャアうるさいモバイルブラウザでは致命傷になる気がします ※圧縮率に関してはWikipedia引用
今後やってみたいこと
ブラウザごとの挙動をトレースして実際にどのようなパフォーマンスなのか把握してみたい
参考文献
https://ics.media/entry/17863/
https://ja.wikipedia.org/wiki/DXTC
本当のところはよくわからないから変なこと言ってたら指摘お願いします