光栅化渲染(1)-算法总述

discrete

  光栅化也可以看做是针对由像素构成的平面的一种离散化。

光栅化算法

  光栅化渲染技术是一种十分常用的3D场景渲染技术。它同时也是GPU生成3D图形所采用的技术。
  光栅化的过程分为两个主要步骤:先将空间中的物体投影(透视投影)到成像平面上;再遍历图像中的每一个像素,检测是否在物体的投影区域内,如果在的话就用相应颜色填充该像素(Figure 1)。

Figure 1

Figure 1

  以上过程以三角面片为基本操作对象,三角面片由于几何求解方便一般作为构成3D物体的基本图元(Figure 2)。

Figure 2

Figure 2

Z-Buffer

  当有多个三角形相互重叠时,它们之上的某些点可能会投影到同一个像素位置,我们需要借助z-buffer来确定这种情况下像素用来显示哪个三角形的颜色(以及其它属性)。(Figure 3)

Figure 3

Figure 3

  z-buffer其实就是一个二维矩阵,用来存储每个像素对应空间物体上某一点的深度。这样就可以在重叠的情况下找出距离相机最近的一点,用于像素的着色或其它属性操作。

光栅化原理图

  其中image-buffer是一个二维数组,在之后的例子中用来保存每一个像素的颜色信息(RGB),最后渲染结果以ppm(一种图片格式)的形式保存到本地。

Figure 4

Figure 4

参考链接

Scratchpixel-Rasterization: a Practical Implementation