0
0

VFXGraphとParticleSystemで大量に配置した際の処理負荷を比較してみた

Posted at

概要

VFXGraphを大量に配置した際処理負荷を計測するとCPU負荷が高かったのでParticleSystem(Shuriken)と比べて処理負荷が軽いのか気になったので調査してみました

環境

Unity2023.2.61f

調査内容

生成するエフェクトプレハブの数は1000個

パーティクルの数が0の状態とある程度パーティクルの数を出したものをVFXGraphとShurikenでCPU負荷を比較する

パーティクルの数や寿命などはほぼ一致させてます

49d7cb64-3083-4ab4-bcb3-f45835278585.gif

VFXGraphの設定

14b7bf58-6f58-4d2d-8059-ac0c4187d480.png

ParticleSystemの設定

c3fef1c5-0635-4d21-b322-1887a0646449.png

調査結果

パーティクルの数が0の場合

VFXGraph ParticleSystem
0.72ms 0.83ms + 0.34ms = 1.17ms
77d14f91-2ca8-4c17-98ba-d5c59b72c054.png 7ef2f6bc-24db-4dce-a409-fd7c9dee2217.png

パーティクルの数がある程度出したの場合

VFXGraphの方が重いです

VFXGraph ParticleSystem
4.5ms 0.94ms + 0.36ms = 1.3ms
b8a33f74-bf35-44a2-8e4e-4821957bc064.png e8690ce5-4512-43e2-984f-ef922800072f.png

VFXGraphは同じVFXGraphならbatch処理することで処理負荷軽減できるので出来るのでそちらも調査します

参考

355311e3-9dbe-4c08-b69a-0ba849812ca7.png

同じVFXGraphをbatch処理した場合

0.68ms

7650e640-300d-4518-bfa6-87cf745b04ae.png

なぜVFXGraphは大量に配置すると重いのか

コマンドバッファのGPUに情報を送る処理が処理負荷になってます

これはFraneDebuggerで確認することが出来ます

245dbcc7-1104-4240-a2bb-11218a2d6979.png

batch処理だとGPUに情報を送る処理がまとまる分処理負荷が軽くなってるみたいです

45783ae5-f1ed-4e89-b244-3f97d9c72ffc.png

結論

・1つのエフェクトプレハブで大量にパーティクルを出す場合や同じエフェクトプレハブを大量に出す場合はVFXGraphの方が処理負荷が軽いです。

・複数の種類で大量のエフェクトプレハブを出す場合はParticleSystemの方が処理負荷が軽くなりそうです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0