Half Lambert通过光照值的计算来让背光部分更加明亮一些。

这个技术最初是在《半条命》游戏中使用的,它可以防止低光部分过暗而看起来一片黑的情况。

要使用Half Lambert我们只需改变一小部分代码:

inline float4 LightingHalfLambert(SurfaceOutput s,fixed3 lightDir,fixed atten){
    float difLight = max(0,dot(s.Normal,lightDir));
    float halfLambert = difLight*0.5+0.5;
    float4 col;
    col.rgb = s.Albedo * _LightColor0.rgb * (halfLambert * atten * 2);
    col.a = s.Alpha;
    return col;
}

下面是漫反射和Half Lambert的视觉区别,可以看到Lambert暗部明显黑,并且颜色没有渐变,显的很平。Half Lambert暗步比较明亮,并且渐变明显。

Lambert和Half Lambert的视觉区别


IMAKIBA

Welcom to my blog!