Unity Shader教程之 Tiling重复平铺效果的实现
1、打开Unity,新建一个工程,在场景中添加一个Plane,调整好观察角度,具体如下图


2、导入一张贴图,注意图片的 Wrap Mode 为 Repeat ,具体如下图

3、在工程中新建一个 Shader,可以命名为 TilingShader,双击打开进行编辑,具体如下图


4、脚本编译正确,回到Unity,在工程中新建一个材质,可以命名为 TilingMaterial,把 Shader 通道设置为刚才新建的 Shader,然后把贴图设置上,把材质赋给 Plane,具体效果如下图


5、把 Plane 的大小调整一下,具体下过如下图


6、修改材质的 Tiling,但是此时没有任何变化,具体如下图


7、双击 TilingShader 编辑,修改添加代码如下图

8、TilingShader 脚本的具体内容如下:
Shader "Custom/TilingShader" {
Properties
{
_Color("Color", Color) = (1,1,1,1)
_MainTex("Main Texture", 2D) = "white" {}
}
SubShader
{
tags{"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True"}
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
float4 _Color;
sampler2D _MainTex;
struct v2f
{
float4 pos:POSITION;
float2 uv:TEXCOORD0;
};
float4 _MainTex_ST;
v2f vert(appdata_base v)
{
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
o.uv = v.texcoord.xy;
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
return o;
}
half4 frag(v2f i):COLOR
{
half4 c = tex2D(_MainTex , i.uv.xy) * _Color;
return c;
}
ENDCG
}
}
}
9、脚本编译正确,回到Unity,再次调整材质的 Tiling 相关值,对应效果就会发上变化,最终效果如下图

