Shader "zff/Rim"
{
Properties
{
_MainTex("Texture",2D)="white"{}
_BumpMap("Bumpmap",2D)="bump"{}
_RimColor("Rim Color",Color)=(0.26,0.19,0.16,0)
_RimPower("Rim Power",Range(0.5,8.0))=3.0
}
SubShader
{
Tags{"RenderType"="Opaque"}
CGPROGRAM
#pragma surface surf Lambert
struct Input
{
float2 uv_MainTex;
float2 uv_BumpTex;
float3 viewDir;
};
sampler2D _MainTex;
sampler2D _BumpTex;
float4 _RimColor;
float _RimPower;
void surf(Input IN,inout SurfaceOutput o)
{
o.Albedo = tex2D(_Maintex,IN.uv_MainTex).rgb;
o.Normal = UnpackNormal(tex2D(_BumpMap,IN.uv_BumpTex));
half rim = 1.0 - saturate(dot(normalize(IN.viewDir),o.Normal));
o.Emission = _RimColor.rgb * pow(rim,_RimPower);//自发光强度
}
ENDCG
}
Fallback "Diffuse"
}
saturate
饱和处理,大于1就变成1,小于0就变成0
normalize
获得单位向量