标准光照模型
标准光照模型的四个部分
前言
标准光照模型只关心直接光照(direct light),即直接从光源发射出来照射到物体表面后,经过物体表面的一次反射进入摄像机的光线
一、自发光missive
-
定义:
一个表面会向一个指定方向发射多少辐射量。
即光线从光源发射进入到摄像机中。 -
表现方法:
直接使用该表面的材质的自发光颜色(材质颜色) -
注意:
如果没有使用全局光照技术,自发光表面不会真的照亮周围的物体(意思是这个物体不会被当作光源),而只是它本身看起来更加量了。
二、高光反射
- 定义: 光线从光源照射到模型表面时会有多少辐射量会从模型表面完全镜面反射。
- Phong模型计算高光反射:
- C light 是光源的颜色和强度
- m specular 是材质的高光反射颜色,用于控制材质对于高光反射的强度和颜色
- m gloss 是材质的光泽度(反光度),用于控制高光区域的“亮点”有多宽(数值越大,亮点越小)
- r 与 v 分别代表了反射方向(r)和视角方向(v),并且还要防止它们两个的点积为负数
3.Phong 反射方向的计算推导
-
Blinn模型计算高光反射
Blinn模型引进了一个新的矢量h,它是通过对v和I取平均后再归一化得到的。
-
两种模型的总结:
- 如果摄像机和光源模型足够远,Blinn模型会快于Phong模型,这是因为此时可以认为v和I都是定植,所以h是一个常量,但是,当v和I不是定值时,Phong模型可能会更快。
- 两种模型都是经验模型,没有对错之分,只有效果是否更加符合预期。
三、漫反射
- 定义:当光源的光线照射到模型表面时,会有多少辐射量会从模型表面散射出来。
- 兰伯特定律的漫反射计算:
- n是表面法线。
- I是指向光源的单位矢量。
- m diffuse 是材质的漫反射颜色。
- C light是光源颜色。
- 需要防止法线和光源方向的点乘结果为负数,可以防止物体被从后面来的光源照亮。
四、环境光
- 定义:用于描述其它的间接光照(光线经过多次反射才进入摄像机或视觉中)
- Unity中环境光获取方法:
fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz;