vvvv gammaでBufferをパーティクルとして飛ばす
はじめに
Bufferからいろんな値をParticleとして飛ばせそうなのですが、いくつかアプローチが思いついたので備忘録として書き残します。
vvvv gamma 5.2
VL.Fuse Version 1.0.2
StructuredBufferResource(Fuse.Compute)からパーティクルを飛ばす
ビジュアルを作成する目的であれば、FuseのStructuredBufferResourceを使うのが良さそうです。BufferにPositionやColorを予め確保しなくても Fuse.Partcile.Attribute のノードを使えば自動的にBuffer側で確保されそうでした。
EmissionStage でパーティクルの生成、ComputeStageで、各パーティクルの位置を動かしたりできます。また、今回は使っていませんがSumillationStage なども存在し、ここでもパーティクルの挙動を変化させたりできるので、特に理由がなければこの方法がマネージドな感じがして良さそうです。

ComputeBuffer(stride.Buffer)からパーティクルを飛ばす
シンプルにComputeBufferをパーティクルとして出すにはstride側のGPU Instancingの仕組みを使う必要がありそうでした。
Float3を扱うComputeBufferを一度MatrixのBufferに変換して、InstancingBufferComponentを経由すれば描画することができそうでした。
Float3からMatrixの変換はTranslate -> MakeInstanceTranceformで行うことができました。(このノードの存在を知らなくてFloat4*4として扱おうとしたらうまくいきませんでした)

ComputeBufferの値をComputeStageでSetしていく
StructuredBufferResource も準備しておきComputeStageでComputeBufferの値をSet していくアプローチもありそうです。前述の2つの方式を組み合わせたような形なイメージとなっています。
この場合ComputeBuffer からStructuredBufferResource に対してSetをしている形になるのでEmissionStage は不要になっています。

おまけ
AddCurlNoizeはProsessNodeとしてこんな感じに定義していました。

ちなみに、HelpBrowserのLearnタブからFuse.Particlesのサンプルを見ると「Use CurlForce」というサンプルがあるので、今はこっちで扱われているほうが使いやすいかもです。
Discussion