揺らぎシェーダが重い

コネクト3D では、「揺らぎブロック」という、ボールが通過したりぶつかったりすると壊れるブロックが登場します

揺らぎブロックが初登場する Level21 のステージです

揺らぎブロックが初登場する Level21 のステージです

この水色のモヤモヤエフェクトは、シェーダグラフのみで作っています。

テクスチャやParticleSystemは使っていません。模様はシェーダグラフの Noise ノードを使っています

このシェーダを「揺らぎシェーダ」とここでは呼びます。

開発中の段階ではこのステージが特に負荷が高く、特に Android だとFPSがヒトケタになるくらい遅くなりプレイに支障が出ていました。

重い負荷

Unityの Profiler で CPU 負荷を計測した結果が以下です

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/162dbc36-ddbf-4b79-b63e-aa28d2a6c148/_2021-01-11_11.10.56.png

画面のちょうど真ん中あたりで、このステージ(Level45)に入っています。

グラフの緑の部分が描画に関する負荷です。

明らかすぎるほど負荷が上昇してますね。描画だけで 66ms 近く使っており、15FPS まで下がっています

描画負荷についても計測した結果が以下です

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/bb961a70-8aff-408d-b771-d86a4dbea052/_2021-01-11_11.39.34.png

バッチ数(Batches)が113とかなり多いです。