unity shader 向量乘法问题

#define TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw)
tex.xy等价于float2(x,y),那么tex.xy * name##_ST.xy 应该是一个标量才对,而这里两个相乘应该是一个二维向量。在swizzle操作中的乘法和float的点乘是不一样的吗?

o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);
o.uv = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
这里用的是 * ,而不是Dot,这样乘的结果是 依然是向量:(x1,y1) * (x2,y2)= (x1*x2,y1*y2)

应该用的是矩阵的哈达玛积

这应该是矩阵的乘法吧