[Unity]コンピュートシェーダ(GPGPU)で1万個のパーティクルを動かす

無題
Pocket

前回、前々回で紹介した、コンピュートシェーダとハードウェアインスタンシングで大量のパーティクルを動かしてみます。

 

[Unity]コンピュートシェーダーで画面を動かす | Puzzle & Programing
コンピュートシェーダの使い方

 

 

 

[Unity]ハードウェアインスタンシングで1万の板ポリゴンを描画 | Puzzle & Programing
ハードウェアインスタンシングの使い方

基本的には前に説明したとおりです。

ふたつの技術を組み合わせてパーティクルを表現しています。

 

パーティクルの画像はこちら。

Bullet

 

C#スクリプト

新しい物として、構造化バッファ(コンピュートバッファ)を使っています。

シェーダから、読み書き可能な構造体の配列として使うことが出来ます。

シリアライズに対応していないらしく、開放時に明示的にReleaseを呼び出してやる必要があります。

 

シェーダー

テクスチャを貼り、ビルボード(カメラの方を向くオブジェクト)を実装しています。

頂点IDから構造化バッファにアクセスし、位置に加算しています。

 

コンピュートシェーダー

コンピュートシェーダは簡単。

構造化バッファから値を取り出し、移動ベクトルを加算して再代入しています。

結果

bbbb

大量のパーティクルが動きました!

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

(Required)

Proudly powered by WordPress   Premium Style Theme by www.gopiplus.com