且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《Unity着色器和屏幕特效开发秘笈》—— 1.6 创建Half Lambert光照模型

更新时间:2021-07-22 03:06:53

本节书摘来自华章出版社《Unity着色器和屏幕特效开发秘笈》一 书中的第1章,第1.6节,作者:(美)Kenny Lammers,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.6 创建Half Lambert光照模型

Half Lambert(半兰伯特)是由Valve公司提出的技术,是一种用于在低光照区域照亮物体的技术。它基本上提高了材质和物体表面周围的漫反射光照。
“Half Lambert”光照模型是一项最早应用于原版《半条命》游戏的技术。它用来防止某个物体的背光面丢失形状并且显得太过平面化。这个技术是完全没有基于任何物理原理的,而仅仅是一种感性的视觉增强。它是广义光照模型的一个例子。

1.6.1 如何操作

首先使用我们在上一节创建的基础着色器,让我们通过如下步骤来更新漫反射计算:
将漫反射计算结果乘以0.5,然后,将下面的代码加入至光照函数里:
《Unity着色器和屏幕特效开发秘笈》—— 1.6 创建Half Lambert光照模型

下图展示了在着色器的光照模型中加入Half Lambert技术之后的效果:
《Unity着色器和屏幕特效开发秘笈》—— 1.6 创建Half Lambert光照模型

1.6.2 实现原理

Half Lambert技术实现的原理是把漫反射光照值的范围分成两半,然后加上0.5。基本意思就是如果光照值是1,对半开后就是0.5,然后再加0.5回去,将会再得到1。如果你对0进行操作,那么你会得到0.5,因此我们将0~1之间的所有值重新映射到区间0.5~1。
下图展示了漫反射的值经过Half Lambert计算后的函数曲线图。

《Unity着色器和屏幕特效开发秘笈》—— 1.6 创建Half Lambert光照模型