概要
VFXGraphを大量に配置した際処理負荷を計測するとCPU負荷が高かったのでParticleSystem(Shuriken)と比べて処理負荷が軽いのか気になったので調査してみました
環境
Unity2023.2.61f
調査内容
生成するエフェクトプレハブの数は1000個
パーティクルの数が0の状態とある程度パーティクルの数を出したものをVFXGraphとShurikenでCPU負荷を比較する
パーティクルの数や寿命などはほぼ一致させてます
VFXGraphの設定
ParticleSystemの設定
調査結果
パーティクルの数が0の場合
VFXGraph | ParticleSystem |
---|---|
0.72ms | 0.83ms + 0.34ms = 1.17ms |
パーティクルの数がある程度出したの場合
VFXGraphの方が重いです
VFXGraph | ParticleSystem |
---|---|
4.5ms | 0.94ms + 0.36ms = 1.3ms |
VFXGraphは同じVFXGraphならbatch処理することで処理負荷軽減できるので出来るのでそちらも調査します
参考
同じVFXGraphをbatch処理した場合
0.68ms
なぜVFXGraphは大量に配置すると重いのか
コマンドバッファのGPUに情報を送る処理が処理負荷になってます
これはFraneDebuggerで確認することが出来ます
batch処理だとGPUに情報を送る処理がまとまる分処理負荷が軽くなってるみたいです
結論
・1つのエフェクトプレハブで大量にパーティクルを出す場合や同じエフェクトプレハブを大量に出す場合はVFXGraphの方が処理負荷が軽いです。
・複数の種類で大量のエフェクトプレハブを出す場合はParticleSystemの方が処理負荷が軽くなりそうです。