TRANSFORM_TEX方法比较简单,就是将模型顶点的uv和Tiling、Offset两个变量进行运算,计算出实际显示用的定点uv。
在UnityCG.cginc中定义
// Transforms 2D UV by scale/bias property
#define TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw)
shader代码:
o.uv = TRANSFORM_TEX (v.texcoord, _MainTex);
等于
o.uv = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
注释:
v是appdata_base类型,v.texcoord就是模型顶点的uv数据。
_MainTex是使用的图片。
name##_ST实际上就是_MainTex_ST。
name##_ST.xy就是Tiling的xy值。
name##_ST.zw就是Offset的xy值。