unity实现纹理贴图很简单,首先在appdata结构体里声明uv语义TEXCOORD0,就可以获得当前顶点的uv坐标,对外部导入的模型来说。这个uv坐标是在3d模型软件例如maya中制作模型的人预先设定好的。我们只需要把他获取过来就行了。
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
既然需要纹理贴图,要么肯定要声明纹理属性
Properties
{
_MainTex ("Texture", 2D) = "white" {
}
}
同样在pass里也要声明
注意这个_ST后缀是不能变更的,这个涉及到unity的一个内置宏
sampler2D _MainTex;
float4 _MainTex_ST;
当声明纹理属性后,可以在材质中发现多了几个没声明的属性,他们都是声明一个纹理属性后自带的,表示当前纹理的重复次数和偏移
调整tiling属性,会改变该纹理