テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】GPUベースでパーティクルを行うKvant/Spray

f:id:tsubaki_t1:20160522231425j:plain

UnityでGPUベースのパーティクルを行う話です。

GPUパーティクル

UnityのParticle System、通称「Shuriken」は現在CPUベースで動作しています。Unity 5.4では殆どの処理をメインスレッドから退避した感じの処理になっていますが、やはりCPUを使用がボトルネックになっているケースでは使用を避けたい所です。

f:id:tsubaki_t1:20160522232034j:plain

また膨大な量のパーティクルを生成・制御したいといったケースにおいては、GPUパーティクルの方が有効に働く事も事実です。

なのでGPUベースでパーティクルを使ってみます。

GPUベースでパーティクルを行うKvant/Spray v2

Kvant/Spray v2はGPUベースでパーティクルを生成するアセットみたいです。パーティクルの生成や、ある程度制御する機能も保持しています。

github.com

コンピュートシェーダーも使ってないっぽいので、多分モバイルでも動作するんじゃないでしょうか。モバイルでGPUが余ってるなら…ですが。

導入

  1. リポジトリをZipでダウンロードし、解凍します。
  2. KvantSpray.unitypackageをUnityにインポートします。

f:id:tsubaki_t1:20160522232801j:plain

f:id:tsubaki_t1:20160522232809j:plain

f:id:tsubaki_t1:20160522233013j:plain

使い方

オブジェクトにSprayコンポーネントをアタッチすると、パーティクルが使えます。

f:id:tsubaki_t1:20160522233811j:plain

設定はだいたいこんな感じです。

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の内の一つみたいです。他のエフェクトも中々に興味深いので、見てみると面白そうな感じがあります。

関連

github.com

github.com