《Unity Shader入门精要》| 读书笔记(二)

继续继续,接下来终于可以写代码了,可以看到实物了!


第6章 Unity中的基础光照

  1. 理解光强:一般用辐照度来衡量光强,即垂直于光线方向的单位面积在单位时间内穿过的能量。辐照度与cosθ成正比。
辐照度的计算

可以按照书中讲的理解,也可以理解为光线在法线方向的投影。

  1. 光线到达物体表面有两种结果:散射和吸收。
    散射:只改变光线的方向,不改变光线的密度和颜色;
    吸收:不改变光线的方向,只改变光线的密度和颜色。

  2. 散射分为折射和反射。
    折射:散射到物体内部;
    反射:散射到物体外部。

  3. 反射分为高光反射和漫反射。
    高光反射:物体表面直接反射的光线;
    漫反射:(不透明物体)光线折射进入物体内部后,再与物体内部的颗粒相交,最终反射出来。

漫反射示意图
  1. 着色(Shading):计算沿某个观察方向的出射度的过程,依据的规则被称为光照模型。

  2. 标准光照模型:在一个场景中相机位置(即视点位置是固定的),对于模型上的每一个点,我们要计算经过它进入到相机的光线,可以分成四部分:环境光、自发光、高光反射、漫反射。

  3. 环境光:不是被光源直接照亮,而是被其他物体反射的光照亮。在标准光照模型中用一个常量近似。

  4. 自发光:物体本身发光,用一个常量表示。

  5. 漫反射:符合兰伯特定律,计算方式如下:

前面两项反应了反射的颜色,后面一项反应了反射的强度。由于漫反射在每个方向上都相等,所以计算漫反射不必需要知道视线方向。

  1. 高光反射:Phong模型和Blinn模型。

Phong模型:先计算反射方向,然后计算反射光强度。

Blinn模型:引入一个中间变量,避免计算反射方向。

两种模型计算结果不一样,但都是经验模型,并不能比较哪一个更正确,视情况而定。

  1. 在Unity Shader中实现漫反射和高光反射:
逐顶点漫反射、逐像素漫反射、半兰伯特光照漫反射
逐顶点高光反射、逐像素高光反射、Phong-Blinn模型高光反射

第六章结束!!!

图片来自 孙无力

你可能感兴趣的:(《Unity Shader入门精要》| 读书笔记(二))