Version: Unity 6.0 (6000.0)
言語 : 日本語
パーティクルシステム最適化
サーフェスシェーダーのパーティクルシステム GPU インスタンシングの例

パーティクルシステムへの GPU インスタンシングの適用

GPU インスタンシングは、CPU レンダリングと比較して著しくパフォーマンスを向上させます。パーティクルシステムで、デフォルトの レンダリングモードビルボード パーティクルではなく、メッシュ パーティクルをレンダリングしたい場合に使用できます。

パーティクルシステムで GPU インスタンシングを使用できるようにするには、以下の手順を行います。

  • パーティクルシステムの Render Mode を Mesh に設定します。

  • GPU インスタンシングをサポートする Renderer の Material のシェーダーを使用します。

  • GPU インスタンシングをサポートするプラットフォームでプロジェクトを実行します

パーティクルシステムの GPU インスタンシングを使用可能にするには、パーティクルシステムの Renderer モジュールの Enable GPU Instancing チェックボックスにチェックを入れる必要があります。

Renderer モジュールでパーティクルシステムの GPU インスタンシングを有効にするオプション
Renderer モジュールでパーティクルシステムの GPU インスタンシングを有効にするオプション

Unity には、GPU インスタンシングをサポートするビルトインのパーティクルシェーダーがありますが、デフォルトのパーティクルマテリアルはそれを使用しません。そのため、GPU インスタンシングを使用するには、これを変更する必要があります。GPU インスタンシングをサポートするパーティクルシェーダーは、Particles/Standard Surface と呼ばれます。これを使用するには、独自の新しい マテリアル を作成し、マテリアルのシェーダーを Particles/Standard Surface に設定する必要があります。次に、この新しいマテリアルをパーティクルシステムの Renderer モジュールの Material フィールドに割り当てます。

パーティクルシステム GPU インスタンシングと互換性のあるビルトインシェーダー
パーティクルシステム GPU インスタンシングと互換性のあるビルトインシェーダー

パーティクルに別のシェーダーを使用する場合は、‘#pragma target 4.5’ 以上を使用する必要があります。詳細については、シェーダーコンパイルターゲット を参照してください。この要件は Unity の通常の GPU インスタンシングよりも高くなります。なぜなら、パーティクルシステムは複数のドローコールにインスタンシングを分割するのではなく、すべてのインスタンスデータを 1 つの大きなバッファに書き込むからです。

カスタムシェーダーの例

GPU インスタンシングを使用するカスタムシェーダーも作成できます。詳細は、以下のセクションを参照してください。

パーティクルシステム最適化
サーフェスシェーダーのパーティクルシステム GPU インスタンシングの例