继续继续,接下来终于可以写代码了,可以看到实物了!
第6章 Unity中的基础光照
- 理解光强:一般用辐照度来衡量光强,即垂直于光线方向的单位面积在单位时间内穿过的能量。辐照度与cosθ成正比。
可以按照书中讲的理解,也可以理解为光线在法线方向的投影。
光线到达物体表面有两种结果:散射和吸收。
散射:只改变光线的方向,不改变光线的密度和颜色;
吸收:不改变光线的方向,只改变光线的密度和颜色。散射分为折射和反射。
折射:散射到物体内部;
反射:散射到物体外部。反射分为高光反射和漫反射。
高光反射:物体表面直接反射的光线;
漫反射:(不透明物体)光线折射进入物体内部后,再与物体内部的颗粒相交,最终反射出来。
着色(Shading):计算沿某个观察方向的出射度的过程,依据的规则被称为光照模型。
标准光照模型:在一个场景中相机位置(即视点位置是固定的),对于模型上的每一个点,我们要计算经过它进入到相机的光线,可以分成四部分:环境光、自发光、高光反射、漫反射。
环境光:不是被光源直接照亮,而是被其他物体反射的光照亮。在标准光照模型中用一个常量近似。
自发光:物体本身发光,用一个常量表示。
漫反射:符合兰伯特定律,计算方式如下:
前面两项反应了反射的颜色,后面一项反应了反射的强度。由于漫反射在每个方向上都相等,所以计算漫反射不必需要知道视线方向。
- 高光反射:Phong模型和Blinn模型。
Phong模型:先计算反射方向,然后计算反射光强度。
Blinn模型:引入一个中间变量,避免计算反射方向。
两种模型计算结果不一样,但都是经验模型,并不能比较哪一个更正确,视情况而定。
- 在Unity Shader中实现漫反射和高光反射:
第六章结束!!!