Lecture07_着色 1(光照、着色和图形管线)_GAMES101 课堂笔记

     今日学习内容概览:

第一部分:光栅化

一、画家算法(Painter’s Algorithm)

画家算法的操作是从远至进一层一层画,最终将画像完整。
但是,缺点是如果画像没有很明显的逻辑层次,画家算法将不适用。例如下图:

为了解决这个矛盾,于是进行改进发明了 ”Z-Buffer“ 算法。

二、Z-Buffer算法

(一)定义

(二)操作步骤

简单来说,步骤:

  1. 通过离相机最近的一点进行深度插值,知道每一个三角形的深度值。
  2. 利用for循环,计算每个采样点的深度值。(注:不是对每一个像素求Z-Buffer,是对每一个采样点。)
  3. 一个一个采样点的深度值叠加进行光栅化,只保留当前最小值(最近才可以被看见,远了就被挡住,因此被近的覆盖。)

效果图:

由于需要对采样点进行挨个比较,但是只保留最小值,因此其时间复杂度为(O(n))。并且至于采样点(三角形)叠加的顺序并不会影响光栅化效果(因为只保留最小值)。

第二部分:着色(Shading)

目前我们涉及的采样过程:

但是为了一个物体变得更加真实一些,还需要对其进行着色(shading).

一、着色(Shading)

(一) 定义

英文词典解释:通过变暗或变亮对其进行着色。

图形学概念:物体应用不同的材质表现着色过程。

(二)应用举例

  • 高光(Specular highlights):亮度极高,在镜面反射附近方向反射。

  • 漫反射(Diffuse reflection):亮度有变化,光线会反射到四面八方。

  • 环境光照(Ambient lighting):

    这属于间接光照,如下图第3个箭头所示,其实点光源并不会射到环境光照所指的位置。

    但是由于光源发出的光线到其他物体表面(例如墙壁、桌面),这些表面的漫反射光线会映射到该位置(通俗理解:可看见其他物体的影子。)

(三)着色是局部的

对相关的光照方向等参数定义:

由于着色不考虑其他物体影响,因此没有阴影生成,即着色 ≠ 阴影。例如下图,只考虑着色的情况:

二、漫反射(Diffuse Reflection)

漫反射到每个方向上是均匀的:

计算被吸收的能量:

光线发射:

光线传播距离越远,光能量越少。能量与距离平方成反比。计算公式:

漫反射计算公式:

原文地址:https://www.cnblogs.com/somedayLi/p/12423388.html