一、深度缓存(Z-buffering)
(1)画家算法:像油画家作画一样,先画最远处的,由远到近进行作画覆盖。
①画家算法在大多数情况下都有效,需要先排好远近顺序。
②但如果存在互相有部分覆盖的情况,画家算法就会有问题,如下图。
(2)深度缓存
①深度缓存Z-buffer算法会记录每个像素的深度,它除了记录每个像素的颜色外,还记录了每个像素的深度。
②深度缓存的伪代码如下。
③深度缓存的一个例子如下。
④深度缓存算法的复杂度为O(n)。
二、着色(Shading)
(1)本课程中的着色指的是对物体应用不同的材质。
(2)一个简单的着色模型:Blinn-Phong Reflectance Model
①图中从上到下为高光、漫反射、环境光三个部分。
(3)着色点
①需要这些输入信息:观测方向、法线、光照方向、表面的参数(如颜色、亮度等)。
②观测方向、法线、光照方向均为单位向量。
③本部分讨论的着色不考虑阴影。
三、漫反射(Diffuse Reflection)
(1)漫反射的定义
①光线会被均匀地反射到各个角度。
②在各个观测方向上的颜色都是相同的。
(2)不同角度的光线所能接受的能量
(3)光衰减
①距离越远的点得到光的能量会有所衰减。
②例如光线辐射出一个圆形,近处的圆周长短,远处的圆周长长,根据能量守恒,远处的点得到的能量应该会更少。
(4)Lambertian Shading
①结合不同角度的光接受的能量以及光衰减公式可以得到某个点的着色情况。
(5)不同漫反射系数kd得到的不同着色情况例子。
参考文献
课程视频链接: GAMES101 Lecture07 Shading 1