http://blog.csdn.net/candycat1992/article/details/17355629 这篇文章写的很好,这里就直接上代码了
Shader "Study/5_LambertDiffuse" {
Properties{
_Color("Main Color", Color) = (1,1,1,1)
_MainTex("Base (RGB)", 2D) = "white" {}
_EmissiveColor("Emissive Color", Color) = (1,1,1,1)
_AmbientColor("Ambient Color", Color) = (1,1,1,1)
_MySliderValue("This is a Slider", Range(0,10)) = 2.5
}
SubShader{
Tags{ "RenderType" = "Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert MyLambertDiffuse
sampler2D _MainTex;
fixed4 _Color;
//We need to declare the properties variable type inside of the
//CGPROGRAM so we can access its value from the properties block.
float4 _EmissiveColor;
float4 _AmbientColor;
float _MySliderValue;
struct Input
{
float2 uv_MainTex;
};
void surf(Input IN, inout SurfaceOutput o)
{
//We can then use the properties values in our shader
fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
c = c * pow((_EmissiveColor + _AmbientColor), _MySliderValue);
o.Albedo = c.rgb;
o.Alpha = c.a;
}
inline float4 LightingMyLambertDiffuse(SurfaceOutput s, fixed3 lightDir, fixed atten)
{
float difLight = max(0, dot(s.Normal, lightDir));
float4 col;
col.rgb = s.Albedo * _LightColor0.rgb * (difLight * atten * 2);
col.a = s.Alpha;
return col;
}
ENDCG
}
FallBack "Diffuse"
}
这个shader是包括了自发光和环境光效果的:
pow((_EmissiveColor + _AmbientColor), _MySliderValue);
工程链接:http://download.csdn.net/detail/yinfourever/9568070