第五课:自定义光照模型之Half Lambert模型

本文首发地址:

更多文章,请入传送门

———————————————-

Half Lambert光照模型是Valve公司在制作”半条命“游戏时发明的,用来给在比较暗的区域显示物体。总体来说,该光照模型提高了物体表面的漫反射光。下图是Valve的示例,左手边是Lambert模型,右手边是Half Lambert模型。

使用我们原来的基础的shader,我们把LightingBasicDiffuse()方法改成如下:

inline float4 LightingBasicDiffuse (SurfaceOutput s, fixed3lightDir, fixed atten){float difLight = dot (s.Normal, lightDir);float hLambert = difLight * 0.5 + 0.5;float4 col;col.rgb = s.Albedo * _LightColor0.rgb * (hLambert * atten * 2);col.a = s.Alpha;return col;}

保存shader后,我们回到Unity。

如果你没有对场景中的物体进行任何的改动,你可以发现现在物体整体表现比原来亮了。这个原因是因为代码

float hLambert = difLight * 0.5 + 0.5;difLight在范围因为dot()方法的关系,在[0, 1]范围,因此, hLambert的范围在[0.5, 1]。这个算法把范围0~1映射到了范围0.5~1中,,整体就提高了最后的数值。

98教育原创,转载请注明出处(98jy.net),否则视为侵权。

当你感到悲哀痛苦时,最好是去学些什么东西。

第五课:自定义光照模型之Half Lambert模型

相关文章:

你感兴趣的文章:

标签云: