写一个Shader :
Shader "Surface/SurfaceShader004" {
Properties
{
_MainTex("主纹理",2d)=""{}
_BumpMap("法线贴图",2D)=""{}
_MainColor("",COLOR)=(1,0,0,1)
}
SubShader
{
CGPROGRAM //--------------------CG语言开头
//编译指令 着色器类型 着色器函数名称 光照模型 其他设置
#pragma surface surf Lambert finalcolor:setcolor
struct Input
{
float2 uv_MainTex; //定义一个主纹理的UV坐标
float2 uv_BumpMap; //定义法线贴图的UV坐标
};
sampler2D _MainTex; //定义纹理对象
sampler2D _BumpMap; //定义法线贴图对象
fixed4 _MainColor; //定义颜色
void surf(Input IN,inout SurfaceOutput o) //函数
{
//通过UV查找纹理中该顶点的颜色值,然后赋值
o.Albedo=tex2D(_MainTex,IN.uv_MainTex).rgb;
// o.Albedo*=_MainColor.rgb;写在其他设置的setcolor函数里也可以
o.Normal=UnpackNormal(tex2D(_BumpMap,IN.uv_BumpMap)); //接收法线
}
//颜色设置函数
void setcolor(Input IN,SurfaceOutput o,inout fixed4 color)
{
color*=_MainColor;
}
ENDCG //----------------------------CG语言结尾
}
FallBack "Diffuse"
}
创建一个材质球,并设置Shader为刚写的
SurfaceShader004
效果如下: