自分でシェーダーを作成できる場合は、Renderer モジュールのカスタム頂点ストリーム機能を使用して、カスタムシェーダーにより広範なデータを渡せるようにパーティクルシステムを設定することができます。
速度、サイズ、中心位置など、選択できるビルトインデータストリームが多数用意されています。非常に効果的なカスタムシェーダーを作成できる点とは別に、これらのストリームでは、より多くの普遍的な利点があります。
また、完全にカスタムのパーティクルごとのデータストリームが 2 つ (ParticleSystemVertexStreams.Custom1 と ParticleSystemVertexStreams.Custom2) があり、スクリプトからデータを入力することができます。使用するデータ配列で SetCustomParticleData と GetCustomParticleData を呼び出します。これを使用するには、2 つの方法があります。
頂点ストリームを追加するとき、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 スウィズルを使用します。これにより、頂点データを効率的にパックできます。