VFX Graph
#Unity
https://www.youtube.com/watch?v=Xwmdl4sbsjY
メモ
Randomのseedをper componentにしつつ、ParticleId mod 10をseedにするとパーティクル10個ごとに同じ乱数を使える
https://www.youtube.com/watch?v=6Ff7S4ocNGs
ParticleStripでTrailをやるのはこの動画が良い
https://www.youtube.com/watch?v=iCEHarLRCzI
Visual Effect Graphともいう
ShaderGraphと連携できる
https://learning.unity3d.jp/6541/
ShaderGraphでプロパティをExposeするとVFXGraph側から操作できる
age over lifetimeを渡せばパーティクルの生成時間に0になってる時間がとれるのでアニメーションが簡単に組める
乱数系もVFXGraphから渡すと良さそう
velocityとかも取れるわね...
Output Event
パーティクルの生成イベントをCPU側で取得できる
最初の生成イベントのみで、GPU Eventは取れないので注意
CPU側からBurstを呼ぶような場合だとそもそも不要そう
VisualEffect.Reinit
C#でVFXを初期化できる
lifetimeが無限なパーティクルの生成時にしか使わないパラメータをランタイムで更新したときに初期化するのに使う
Periodic BurstのDelayとlifetimeに合わせることでも(ラグがあるとはいえ)同じことを再現できるがCapacityの半分までしか生成できなさそうなのでReinitをした方がよさそう
Spawnイベントにパラメータを渡す
VFXEventAttribute を使う
https://docs.unity3d.com/ja/Packages/com.unity.visualeffectgraph@10.7/manual/ComponentAPI.html#event-attributes
PropertyをIntializeのフェーズでだけ使う、でも代用できるかもしれないけど、EventAttributeを使う方が正攻法っぽい
ExposedPropertyをC#から取得する
https://docs.unity3d.com/ja/2020.3/ScriptReference/VFX.VisualEffectAsset.GetExposedProperties.html