Lecture 7:Shading 1 (Illumination, Shading and Graphics Pipeline)
概述
可见性 / 遮挡问题
- 深度缓存
着色
- 光照和阴影
- 图形管线
可见性 / 遮挡
画家算法
画家算法:先画后面的,再画前面的;(要严格规定前后顺序才不会出现问题)
缺点:
- 要定义深度不容易…
- 对这些东西要按照深度排序,时间复杂度较高
- 特定情况失效(无法对定义深度)
Z-Buffer(深度缓存)
概述
对于每个像素,记录最浅的深度;
同步生成两个图:一个是渲染后的图,一个是深度图;
深度图中,离相机越进,反应出来的颜色越黑,越远越白;
整体做法
每个像素维护一个最小深度
算法分析:
但是无法处理透明物体
着色
概述
定义:对不同的物体,应用不同的材质 的过程;
(不同的材质对于光的反应不同)
看个例子:
Specular highlights:镜面反射(表面光滑)
Diffuse reflection:漫反射(表面粗糙)
Ambient lighting:间接反射
分析
一些概念的定义
着色只考虑自己,不考虑阴影的情况:
漫反射模型
着色点显示的亮度(能量)和光照之间的夹角是有关的:
其次,我们接受到的能量和光源的距离是有关的:
那么通过上面这两个结论,我们就能够分析漫反射时,我们能看到着色点多少能量(以明暗的形式表示出来)
看到着色点的能量 = 到达着色点的能量 x 着色点接收了多少能量
这里有个问题:
上面式子中的 Kd 是什么???
着色点为什么会有颜色???
我们知道,物体之所以有能量是因为它吸收了一部分能量,反射出它不吸收的能量,从而看到了颜色;
所以这里我们用一个系数 Kd(漫反射系数)来描述能量的吸收程度:
- 1:表示不吸收能量
- 0:表示吸收全部能量
漫反射是从不同的角度看同一个点,看到的结果是相同的。
从公式上也能看出这一点,和观察的方向没有关系;