Lecture7: (Illumination, Shading and Graphics Pipeline)
- 今日内容:
- 先补上深度缓冲的内容!
- 再讲着色内容!
深度缓冲
- 画家算法,从远到近画就完了!会覆盖。
- 但是在三维中呢,比如一个立方体,绘制其各个面的顺序很容易影响结果。
- 一定程度上画家算法没毛病,把物体深度排序就完了,O(n log n)呗。
- 但是有种特殊情况,比如三个三角形两两彼此循环覆盖,没法定义它们间的深度关系!
- 为了解决上述问题,引入了深度缓冲(Z-Buffer)
- 对于每个像素,记录一个深度缓冲值,最小的深度值
- 相当于多出来一个 depth buffer 图作为深度缓存
- 当然还有用来存图的 frame buffer
- 深度缓存算法的思想
- 一个简单例子
- 深度缓存的算法复杂度
- 对于n个三角形为O(n)
- 这并不是排序算法,而只是对每个像素求一个最小值
- 在假设不存在深度相同的三角形的情况下(现实中也比较罕见),该算法与三角形的绘制顺序无关
- 广泛应用在硬件GPU中
- Z-Buffer处理不了透明物体!
Shading
- 到此位置我们都讲啥勒
- MVP+光栅化!
- 我们现在能干这个
- 我们期待的是这个
- 世界是五彩缤纷滴,需要我们去着色(Shading)!
- MVP+光栅化!
- 着色的定义!
- 本课中的定义,对不同物体应用不同材质的过程!
Blinn-Phong Reflectance Model:最基础的着色模型
- 三种光照:
- Specular highlights
- Diffuse reflection
- Ambient lighting
- 分析三部分就完事儿了!
- 分析一波!shading point处于平面上,向量都是单位的,还要定义表面的参数
- shading是local的,我们不考虑这个点是不是在阴影内,只看他自己,观测和光照位置
- Diffuse reflection
- 漫反射,光线在这点平均反射到各个方向去
- 表面朝向和光照有夹角时,表面法线呵光线夹角越大,单位光强越小——兰伯特余弦定律,四季的原因正是此
- 能量衰减!比如对于点光源!由于距离产生!想象一个球壳!
- 直接来吧!
- Kd是漫反射系数,描述了这一点的颜色!
- 漫反射意味着,无论从什么角度去看都一样!
- 这节预定内容没讲完,下节课继续!
- 布林冯是个经验模型,并不是符合实际的物理模型!