体纹理:是啥?
tex2D 曾经仅仅能在Fragment程序中纹理採样
UV坐标系:事实上点为左下角,范围为【0,1】。U为x轴,V为y轴
Texture.wrapMode 循环模式:
TextureWrapMode.Clamp:设置纹理充满拉伸使用
TextureWrapMode.Repeat:纹理反复平铺使用
假设採用Repeat,那么等于U>=1的情况就会用纹理图在右边在平铺一张图
Texture.filterMode 过滤模式:
Point:像素过滤(不进行过滤 )
Bilinear:双线性
Trilinear:三线的
UV纹理採样:
UV 纹理
贴图后效果:立体空间的UV坐标为左上角,U为水平向右方向,V为垂直向下方向 ,默认范围[0,1]
源码:
Shader "Sbin/TexShader" { Properties { _MainTex ("Texture", 2D) = "white" {} _U("U",range(-0001,0.001)) = 0 _V("V",range(0,1)) = 0 } SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" sampler2D _MainTex; float _U; float _V; struct v2f{ float4 pos:POSITION; float2 uv:TEXCOORD0; }; v2f vert (appdata_base v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); o.uv = v.texcoord.xy; return o; } fixed4 frag (v2f v) : COLOR { fixed4 col = tex2D(_MainTex, v.uv);//第一个參数:纹理,第二个參数UV向量 return col; } ENDCG } } }
纹理平铺缩放和偏移:
Tiling :缩放模型UV纹理採样坐标。比方:Tiling x=2。表示把模型UV坐标的U扩大2倍,U范围值变成2,纹理假设WrapMode选择Repeat。那么U轴方向就会纹理採样两次。V轴同理
Offset:偏移模型UV纹理採样坐标;比方:Offset x = 0.1,表示把模型UV坐标往左编译,然后再採样UV纹理贴图。
以上两种操作导致例如以下效果: