纹理映射与viewDir
表面上的一点,由于观察方向不同,看到的效果是不同的。不同的角度,光线反射进眼睛的强弱不同,颜色不同。viewDir它是人眼看向物体的方向。可以理解为入射光在不透明的物体表面同时反射到观察方向和出射光两个方向。
纹理的映射关系
纹理的左下角坐标是(0,0),右上角坐标是(1,1)。
inline float4 LightingHalfLambert(SurfaceOutput s,fixed3 lightDir,fixed3 viewDir,fixed atten){
float difLight=dot(s.Normal,lightDir);
float rimLight=dot(s.Normal,viewDir);
float rim_halfLambert=0.5*viewDir+0.5;
float dif_halfLambert = 0.5 * difLight + 0.5;
float3 ramp=tex2D(_RampTex,float2(dif_halfLambert,rim_halfLambert)).rgb;
float4 col;
col.rgb=s.Albedo*_LightColor0.rgb*ramp;
col.a=s.Alpha;
return col;
}
依据法线向量与入射光向量,法线向量与视线向量点积得到纹理贴图的映射
左下角对应光照最弱离人视线最远的地方右上角对应光照最强离人视线最近的地方
左上角对应光照最弱离人视线最近的地方
右下角对应光照最强离人视线最远的地方