Lecture07_着色 1(光照、着色和图形管线)_GAMES101 课堂笔记
今日学习内容概览:
第一部分:光栅化
一、画家算法(Painter’s Algorithm)
画家算法的操作是从远至进一层一层画,最终将画像完整。
但是,缺点是如果画像没有很明显的逻辑层次,画家算法将不适用。例如下图:
为了解决这个矛盾,于是进行改进发明了 ”Z-Buffer“ 算法。
二、Z-Buffer算法
(一)定义
(二)操作步骤
简单来说,步骤:
- 通过离相机最近的一点进行深度插值,知道每一个三角形的深度值。
- 利用for循环,计算每个采样点的深度值。(注:不是对每一个像素求Z-Buffer,是对每一个采样点。)
- 一个一个采样点的深度值叠加进行光栅化,只保留当前最小值(最近才可以被看见,远了就被挡住,因此被近的覆盖。)
效果图:
由于需要对采样点进行挨个比较,但是只保留最小值,因此其时间复杂度为\(O(n)\)。并且至于采样点(三角形)叠加的顺序并不会影响光栅化效果(因为只保留最小值)。
第二部分:着色(Shading)
目前我们涉及的采样过程:
但是为了一个物体变得更加真实一些,还需要对其进行着色(shading).
一、着色(Shading)
(一) 定义
英文词典解释:通过变暗或变亮对其进行着色。
图形学概念:物体应用不同的材质表现着色过程。
(二)应用举例
-
高光(Specular highlights):亮度极高,在镜面反射附近方向反射。
-
漫反射(Diffuse reflection):亮度有变化,光线会反射到四面八方。
-
环境光照(Ambient lighting):
这属于间接光照,如下图第3个箭头所示,其实点光源并不会射到环境光照所指的位置。
但是由于光源发出的光线到其他物体表面(例如墙壁、桌面),这些表面的漫反射光线会映射到该位置(通俗理解:可看见其他物体的影子。)
(三)着色是局部的
对相关的光照方向等参数定义:
由于着色不考虑其他物体影响,因此没有阴影生成,即着色 ≠ 阴影。例如下图,只考虑着色的情况:
二、漫反射(Diffuse Reflection)
漫反射到每个方向上是均匀的:
计算被吸收的能量:
光线发射:
光线传播距离越远,光能量越少。能量与距离平方成反比。计算公式:
漫反射计算公式: