源自 Particle Anim Alpha Blend
这是一个伟大的shader。这里不讲原理,请移步这里,这里,这里,和这里。
假设已经看懂了上面的那4篇。
我们看一下这个shader的用法。
struct appdata_t {
float4 vertex : POSITION;
fixed4 color : COLOR;
float4 texcoords : TEXCOORD0;
float texcoordBlend : TEXCOORD1;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
这里可以看到,粒子系统需要给shader传递一些额外的信息。
比如Texcoord0要传递xyzw四个分量的信息。还要传递一个TEXCOORD1的x分量的信息
于是,就有了
是的,根据shader去逆推一下就好,修改好粒子系统之后,我就给了它个序列帧。
从左往右startLifeTime依次为5,10,50
应该看出来了,尤其是最右边那个。
先说源码片段
//#Vertex
o.blend = v.texcoordBlend;
//#Fragment
fixed4 colA = tex2D(_MainTex, i.texcoord);
fixed4 colB = tex2D(_MainTex, i.texcoord2);
fixed4 col = 2.0f * i.color * lerp(colA, colB, i.blend);
这里就可以看出来了,v.texcoordBlend里存的是序列帧图两帧(TextureSheetAniamtion要正确设置一下)之间的时间,变是从0到1,周而复始。