UnityでGPUベースのパーティクルを行う話です。
GPUパーティクル
UnityのParticle System、通称「Shuriken」は現在CPUベースで動作しています。Unity 5.4では殆どの処理をメインスレッドから退避した感じの処理になっていますが、やはりCPUを使用がボトルネックになっているケースでは使用を避けたい所です。
また膨大な量のパーティクルを生成・制御したいといったケースにおいては、GPUパーティクルの方が有効に働く事も事実です。
なのでGPUベースでパーティクルを使ってみます。
GPUベースでパーティクルを行うKvant/Spray v2
Kvant/Spray v2はGPUベースでパーティクルを生成するアセットみたいです。パーティクルの生成や、ある程度制御する機能も保持しています。
コンピュートシェーダーも使ってないっぽいので、多分モバイルでも動作するんじゃないでしょうか。モバイルでGPUが余ってるなら…ですが。
導入
- リポジトリをZipでダウンロードし、解凍します。
- KvantSpray.unitypackageをUnityにインポートします。
使い方
オブジェクトにSprayコンポーネントをアタッチすると、パーティクルが使えます。
設定はだいたいこんな感じです。
Emitter
- Center:生成の中心部
- Size:生成範囲
- Throttle:勢い。高いと沢山出る
- Life:寿命
- Life Randomness:寿命を真っ当出来ない割合。1だと0.01で死ぬ。
Velocity
- Initial Velocity:勢い
- Directional Speed:向き
- Speed Randomness:速度の割合
- Acceleration:加速度
- Drag:減速率
Rotation
- Spin:回転
- Speed to spin:回転速度
- Spin Randomness:回転速度の割合
Turbulent Noise
- Amplitude:振り幅。大きいと拡散する
- Frequency:周波数
- Motion:?
- Shapes:生成するパーティクルの形状。何も設定しないとビルボード
- Scale:サイズ
- Scale Randomness:サイズの割合
- Material:パーティクルの材質表現
- Cast Shadow:影を描画するか
- Recieve shadow:影の影響を受けるか
- Random Seed:ランダム値
結構色々な事が出来そうです。
なお、このエフェクトは Kvant effect suiteの内の一つみたいです。他のエフェクトも中々に興味深いので、見てみると面白そうな感じがあります。