WebGLライブラリとGPUパーティクルの実装についてメモ
Curl Flowに関しては、挙動をGLSLで定義していて、glslifyによって読み込み、
Three.jsのGPUComputeRenderer?によって表現しているっぽい
Spiritはまだあまり解読できていないけど、CurlFlowのほうがソースコードは読みやすそう
個人的にはこういうことをBabylonでも再現したい
しかしBabylonではComputeShaderはWebGPUじゃないと動かないようになっている
i一応GPUパーティクルはあるけど、複雑な動きを再現するものではない
強引実装しようと思えば、vertシェーダでCurlノイズによる複雑な動きをする挙動を定義して、
点群モードで表示するとか
見栄えはちょっとアレかもだし、パーティクルよりも扱いにくそうではある
ここが良さげである
ノリで登壇するので、とりま↑を見て見よう~
上に挙げたwebgpuサンプルのparticleを見ている
サンプルの作り的に、canvasオブジェクトを依存性注入して
initするのを別のユーティリティの中でやっているだけで、
基本やってることはmain.tsに閉じていそう
なのでパーティクルのサンプルだけ切り出して別のプロジェクト作ったほうが見やすいかもしれないな
特段Nextとか使わないで
サンプルの中で使われているwebgpu-matrixは
webgpuのための数学計算用ライブラリっぽいですね
ちなみにサンプルはBSDライセンスっぽい
コピーライトを明記すればコードの再配布は可能とのこと
そういえば、コンピュータシェーダのドキュメントあった
WGSLでかくやつ
これやりたいな?
上のドキュメントと、サンプルを見ていると何となく使い方がわかってきた
これを使ってBabylon.jsのパーティクルをGPUで更新できるようにしたい
カプコンのモンハンにおけるパーティクルについてのスライド
GPU Particleとは?という話も載ってて良き
位置の更新だけどGPUでやってみて、それが本当にGPUパーティクルと言えるのか微妙な気がしてきた
WebGPUサンプルも見て見よう!
UnityパーティクルシステムにおけるGPUインスタンシング