0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

なんでUnityWebGLを無理矢理モバイルで動かすとメモリ効率が悪いのかの考察

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さん・・・自分のですよね・・・)
モバイル版ブラウザでは対応がない状況です
image.png

所感

DXTアルゴリズムの圧縮率は6/1:8/1と結構高いのでただでさえメモリ消費にギャアギャアうるさいモバイルブラウザでは致命傷になる気がします ※圧縮率に関してはWikipedia引用

今後やってみたいこと

ブラウザごとの挙動をトレースして実際にどのようなパフォーマンスなのか把握してみたい

参考文献

https://ics.media/entry/17863/
https://ja.wikipedia.org/wiki/DXTC

本当のところはよくわからないから変なこと言ってたら指摘お願いします

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?