🎨
モバイル環境においてtex2Dで色をfloatで取れない場合の対処方法
概要
VRChatのQuest単機やAndroidスマホ環境において、tex2Dを使って32bitのDepth Textureなどの色の値をfloatで取得しようとすると、取得値の精度が勝手にhalfかfixedに落とされることがあります。この問題の対処方法をご紹介します。
環境
- Unity 2022.3.22f1
- VRChat SDK - Base 3.7.6
- VRChat SDK - Worlds 3.7.6
対処方法
以下のように、本来の処理に影響のないくらいの小さい値を演算してあげると、テクスチャの色をfloatで取得できるようになります。詳しい理由はわかりません...
float Depth = tex2D(_DepthTex, i.uv).r + 0.0000001;
また、手持ちのモバイル機の中で、Snapdragonを搭載しているQuest2単機やタブレット(CHUWI Hipad Max)では問題なくこの方法が使えますが、Helio G99というプロセッサを搭載しているタブレット(ALLDOCUBE iPlay50mini Pro NFE)ではこの方法が使えませんでした。
もしかすると機種によってこの方法が使えたり使えなかったりするのかもしれません。
Discussion