unity-shader-TEXCOORD1 中的 xyzw
unity-shader-TEXCOORD1 中的 xyzw 可以用来存储 两个 uv 值
appdata_full 结构体定义了多个贴图坐标texcoord,texcootd1… 为使用多重纹理贴图,一个材质可以有多张贴图,每张贴图设置不同的uv坐标,子弹打在墙上,墙上有弹痕,还有墙体的涂鸦效果都可以用多重纹理实现,如果不使用多重纹理 texcoodtd1也可以使用它存放其它动态计算的信息。
texcoord 用float4应该是TEXCOORD0寄存器用的32位的,而后面XBOX360多的texcoord2-texcoord5用的是16位的寄存器,这跟硬件有关系,贴图坐标有1维、2维、3维的 使用float4和half4会更好,
比如我们使用最多的就是2维的普通的纹理贴图坐标,uv 分别存在texcoord.xy,texcoord.zw不使用,当然你也可以用texcoord.xyzw存储两个UV坐标,那么读取第二个UV坐标时,你必须先找到第一个的地址,所以为了执行效率浪费点空间是值得的。
1 | struct appdata_full |