個人的に偶然キレイなビジュアルが作れたので、PCではなくスマホで動かしたくなりました。
購入したUnityアセットを組み合わせたら、UnityChanのダンス影練に遭遇みたいな絵になった。#Unity #madewithunity pic.twitter.com/u7wKPoiN8H
— 大庭俊介@UXエンジニア (@ohbashunsuke) September 24, 2020
Androidビルドした所、UniversalToonシェーダのコンパイルエラーで失敗。
Shader error in 'Universal Render Pipeline/Toon': invalid subscript 'vertexSH' at /Unityプロジェクトまでのパス/Packages/UnityChanToonShaderVer2_Project-release-urp-2.2/Runtime/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl(41) (on gles3)
上記のようなエラーが出力されていました。
シェーダの確認
エラー内容に従ってシェーダを調査します。


おおお、、エラー沢山。。。
とりあえずinvalid subscript 'vertexSH'
が原因ぽい。
シェーダのReimportで解決
UniversalToonを右クリックからReimport実行。

なぜかと言われると答えられませんが、UniversalToonシェーダをReimportすると直ります。

するとこのようにきれいなインスペクタに戻ります。
ビルドは成功しませんでした
インスペクタ上ではコンパイルは成功しているのですが、実機ビルドでは失敗します。また、再度シェーダのインスペクタを見てみるとエラーは元に戻っていました。
OpenGLES3.1をターゲットにする

Require ES3.1
にチェックを入れることでビルドが成功しました。
詳しく調べられてはいませんが、ES3.0以下では対応していないシェーダがあったということだと思われます。
無事に動いた!!
無事にUnityChanSSUがAndroid実機で動くようになりました。
何もチューニングせずにPixel3aで動かしてみたが6FPSくらいしか出なかった。。。(重いだろうな〜っていうことは分かってた。)
— 大庭俊介@UXエンジニア (@ohbashunsuke) September 28, 2020
何が一番のボトルネックなのか調査してみよう。(おそらくGPU負荷だと思うけど)。#Unity #unitychan pic.twitter.com/4j0RR0E9xQ