1 基本概念
-
着色:根据材质属性、光源信息,通过光照模型(Lighting Model)去计算沿某个观察方向的出射度的过程。
-
逐顶点光照与逐像素光照:逐顶点光照在每个顶点上计算光照,再在渲染图元内部进行线性插值输出像素着色(Gouraud shading);逐像素光照以每个像素为基础进行光照计算(Phong shading);由于顶点数量远小于像素数量(光栅化为进行像素填充),因此逐顶点光照的计算复杂度往往小于逐像素光照,而逐顶点光照依赖于线性插值得像素光照,因此当有非线性计算时,逐顶点光照便会有问题,如出现锯齿。 对应在Shader编程中,逐顶点光照就在顶点着色器(vertex)中实现相应光照函数,逐像素光照就在片元着色器(fragment)中进行。
-
纹理映射:将一张图映射到模型表面,通过**纹理映射坐标(UV坐标)**记录顶点在纹理中对应的2D坐标位置,通过(u,v)来表示,u表示横坐标,v表示纵坐标。Unity的纹理空间符合OpenGL传统,原点位于纹理左下角。
##2 光照模型
标准光照模型只关心直接光照,也就是直接从光源发射出来照射到物体表面后,经过物体表面一次反射直接进入摄像机的光线,包含是个部分:自发光(Emissive)、高光反射(Specular)、漫反射(Diffuse)、环境光(Ambient)。
- 环境光:标准光照模型中用环境光用于模拟间接光照(经过不只一个物体反射);
- 自发光:不需要经过任何物体反射进入摄像机;
- 漫反射:对物体表面随机散射到各个方向的辐射度进行建模,符合半伯特定律(Lambert’s law),反射光线强度与表面法线和淘汰方向之间的夹角的余弦值成正比。
- 高光反射:当光线从光源照射到模型表面时,该表面在完全镜表反射方向散射出多少辐射量。
标准光照模型的公式为:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ Color = Emissi…
2.1 环境光模型
环境光模型公式如下:
Ambient =Aintensity * AColor * Amaterial