光栅化也可以看做是针对由像素构成的平面的一种离散化。
光栅化算法
光栅化渲染技术是一种十分常用的3D场景渲染技术。它同时也是GPU生成3D图形所采用的技术。
光栅化的过程分为两个主要步骤:先将空间中的物体投影(透视投影)到成像平面上;再遍历图像中的每一个像素,检测是否在物体的投影区域内,如果在的话就用相应颜色填充该像素(Figure 1)。
以上过程以三角面片为基本操作对象,三角面片由于几何求解方便一般作为构成3D物体的基本图元(Figure 2)。
Z-Buffer
当有多个三角形相互重叠时,它们之上的某些点可能会投影到同一个像素位置,我们需要借助z-buffer
来确定这种情况下像素用来显示哪个三角形的颜色(以及其它属性)。(Figure 3)
z-buffer
其实就是一个二维矩阵,用来存储每个像素对应空间物体上某一点的深度。这样就可以在重叠的情况下找出距离相机最近的一点,用于像素的着色或其它属性操作。
光栅化原理图
其中image-buffer
是一个二维数组,在之后的例子中用来保存每一个像素的颜色信息(RGB),最后渲染结果以ppm(一种图片格式)的形式保存到本地。