一、创建一个Cube和一个Directional light,并把光源颜色调成蓝色。
二、创建漫反射Shader
Shader "Custom/Shader_Lambert" {
Properties {
_MainTex("MainTex",2D)="white"{}
}
SubShader {
pass{
Tags{"LightMode"="ForwardBase"}
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
float4 _MainTex_ST; //必须声明,后缀必须为_ST,前面对应sampler2D _MainTex命名。
float4 _LightColor0; //必须声明,Unity用来存放光源颜色
struct v2f {
float4 pos:SV_POSITION;
float2 uv:TEXCOORD0;
float3 lightDir:TEXCOORD1;
float3 normal:TEXCOORD2;
};
v2f vert (appdata_full v) {
v2f o;
o.pos=mul(UNITY_MATRIX_MVP,v.vertex);
o.uv=TRANSFORM_TEX(v.texcoord,_MainTex);
o.lightDir=ObjSpaceLightDir(v.vertex);
o.normal=v.normal;
return o;
}
float4 frag(v2f i):COLOR
{
i.lightDir=normalize(i.lightDir);
i.normal=normalize(i.normal);
float4 c=tex2D(_MainTex,i.uv);
//对漫反射的计算
float diff=max(0,dot(i.normal,i.lightDir));
c=c*_LightColor0*(diff);
return c*2;
}
ENDCG
}
}
FallBack "Diffuse"
}
编辑区预览效果