_MainTex_ST表示
纹理偏移和缩放
S是Scale的首字母对应tiling, T是Translation的首字母对应Offset

Shader "My/Unlit" { Properties { _MainTex("Main Tex", 2D) = "white" {} } SubShader { Tags { "RenderType" = "Opaque" } Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 texcoord : TEXCOORD0; }; struct v2f { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; }; sampler2D _MainTex; float4 _MainTex_ST; v2f vert(appdata v) { v2f o; o.pos = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); return o; } fixed4 frag(v2f i) : SV_Target { fixed4 c = tex2D(_MainTex, i.uv); return c; } ENDCG } } //SubShader }
TRANSFORM_TEX宏
#define TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw)
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); 其实就相当于v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw
1) _MainTex_ST.xy对应Tiling的xy值
2) _MainTex_ST.zw对应Offset的xy值
参考
UnityShader精要笔记六 基础纹理 - 简书 (jianshu.com)

浙公网安备 33010602011771号