如果习惯编写自己的着色器,请使用渲染器模块 (Renderer Module) 的自定义顶点流 (Custom Vertex Streams) 的功能来配置粒子系统,从而将更多数据传入自定义着色器。
有许多内置数据流可供选择,例如速度、大小和中心位置。除了能够创建强大的自定义着色器之外,这些流还可以带来大量其他好处:
此外,还有两个完全自定义的每粒子数据流(ParticleSystemVertexStreams.Custom1 和 ParticleSystemVertexStreams.Custom2),可通过脚本填充。请使用数据数组调用 SetCustomParticleData 和 GetCustomParticleData,以便使用它们。有两种方式使用它们:
添加顶点流时,Unity 会在每一项旁边的括号中提供一些信息,用于在着色器中读取正确的数据:
括号中的每一项对应于一个顶点着色器输入,应在着色器中指定。以下是此配置的正确输入结构。
struct appdata_t {
float4 vertex : POSITION;
float3 normal : NORMAL;
fixed4 color : COLOR;
float4 texcoords : TEXCOORD0;
float texcoordBlend : TEXCOORD1;
};
请注意,UV 和 UV2 均传递到 TEXCOORD0 的不同部分中,因此我们对两者使用单个声明。要访问着色器中的每一个,应使用 xy 和 zw 标示字母。这样即可有效地打包顶点数据。