本系列文章系学习 唐福幸《Unity ShaderLab 新手宝典》的笔记,包含个人理解,如有错误欢迎批评指出
6.1 Lambert光照模型
- 在现实世界中,一个物体的颜色是由射进眼睛的光线决定的,当光线照射到物体上,一部分会被物体表面吸收,一部分被反射,甚至透射(穿过透明体)
- 所以,物体表面的光照颜色是由入射光,物体材质以及材质和光的交互规律共同决定的。
- 但是计算机要还原现实世界的光照及其复杂,计算代价也大,所以数学家们就提出了一些用公式推导的简单光照模型(在尽可能减少计算量的前提下还原光照效果)
Lambert光照模型:计算效率高,比较真实还原粗糙物体表面与光的交互行为
6.1.1 Lambert光照理论
Lambert模型,也可以理解成漫反射模型(个人理解),因为最终就是计算物体各个顶点(像素)上的漫反射颜色,得到物体在光照下的效果。
计算公式为:
Cdiffuse = (Clight · Mdiffuse) saturate(n · l)
- Cdiffuse:物体的漫反射颜色
- Clight:入射光线颜色
- Mdiffuse:物体材质的漫反射颜色
- n:物体的表面法线
- l:物体指向的灯光方向向量
由n · l,可知:点积法线与灯光方向夹角越小,结果越大,漫反射越强,漫反射颜色越强;反之,物体背面与灯光方向夹角超过90°,为负数,所以需要saturate函数进行处理
6.1.2 在shader中获取灯光变量
光照模型要与灯光打交道,那么灯光从哪里传递给Shader,取决于当前项目使用的渲染路径。
Edit > Project Setting > Gtaphics面板下
在右侧的低,中ÿ