Version: Unity 6.0 (6000.0)
言語 : 日本語
パーティクルシステムのカスタムデータストリーム
パーティクルシステム - スタンダードシェーダーとカスタム頂点ストリームの例

パーティクルシステムのカスタム頂点ストリーム

自分でシェーダーを作成できる場合は、Renderer モジュールカスタム頂点ストリーム機能を使用して、カスタムシェーダーにより広範なデータを渡せるようにパーティクルシステムを設定することができます。

速度、サイズ、中心位置など、選択できるビルトインデータストリームが多数用意されています。非常に効果的なカスタムシェーダーを作成できる点とは別に、これらのストリームでは、より多くの普遍的な利点があります。

  • 法線マップされたパーティクルをサポートするには、Tangent (接線) ストリームを使用します。
  • Color を削除してから、Tangent UV2 ストリームと AnimBlend ストリームを追加して、パーティクルにスタンダードシェーダーを使用できます。
  • フリップブックのリニアテクスチャブレンディングを簡単に実行するには、UV2 と AnimBlend ストリームを加え、Particles/Anim Alpha Blended シェーダーを設定します (これを設定する方法は後の例を参照)。

また、完全にカスタムのパーティクルごとのデータストリームが 2 つ (ParticleSystemVertexStreams.Custom1ParticleSystemVertexStreams.Custom2) があり、スクリプトからデータを入力することができます。使用するデータ配列で SetCustomParticleDataGetCustomParticleData を呼び出します。これを使用するには、2 つの方法があります。

  • 独自のデータをパーティクルにアタッチしてスクリプトのカスタム動作を実行します。例えば、「体力」値を各パーティクルに設定します。
  • このデータをシェーダーに渡すには、他のストリームをシェーダーに送信するのと同じ方法で、2 つのカスタムストリームの 1 つを追加します (ParticleSystemRenderer.EnableVertexStreams を参照してください)。最初の例を詳しく説明すると、カスタムの健全性属性が、スクリプトベースのゲームロジックを駆動するだけでなく、何らかの視覚効果も生み出す可能性があります。

頂点ストリームを追加するとき、Unity はついくつかの情報を各項目の横に括弧で示し、シェーダーでデータを正しく理解できるようにしています。

括弧内の各項目は、頂点シェーダーの入力に関連するものです。ユーザーはこれらの項目をシェーダーで指定する必要があります。これを設定するための正しい入力構造を以下に示します。

            struct appdata_t {
                float4 vertex : POSITION;
                float3 normal : NORMAL;
                fixed4 color : COLOR;
                float4 texcoords : TEXCOORD0;
                float texcoordBlend : TEXCOORD1;
            };

UV と UV2 の両方が TEXCOORD0 の異なる部分で渡されるため、両方に 1 つの宣言を使用します。シェーダー内のそれぞれにアクセスするには、xy および zw スウィズルを使用します。これにより、頂点データを効率的にパックできます。

追加リソース

パーティクルシステムのカスタムデータストリーム
パーティクルシステム - スタンダードシェーダーとカスタム頂点ストリームの例