GAMES101-5:(三角形的)光栅化

前言

GAMES101-P5:光栅化

本节介绍 MVP 变换之后的操作:光栅化 Rasterize

屏幕与光栅化

定义屏幕

  • 单元为像素的一个二维数组
  • 分辨率:长宽像素
  • 是一种光栅成像设备

光栅化:“画”到屏幕上

像素:显示由 RGB 混合的单一色彩。

pixel 是 picture element 的缩写

raster 其实是德语中的 screen 的意思

屏幕空间:定义方式不一,可以以左下角为(0,0)点第一象限定义空间。

XY方向的投影

将经历投影变换得到 [±1,±1][\pm 1,\pm 1] 宽高的面拉成屏幕的宽高[0,w]×[0,h][0,w]\times[0,h]。变换矩阵:

[w200w20w20h2001n+f20001]\begin{bmatrix} \frac{w}{2} & 0 & 0 & \frac{w}{2} \\ 0 & \frac{w}{2} & 0 & \frac{h}{2} \\ 0 & 0 & 1 & -\frac{n+f}{2} \\ 0 & 0 & 0 & 1 \end{bmatrix}

三角形的光栅化

光栅化即将多边形劈成数个像素的过程,这个过程中最基础的是三角形。

三角形的良好性质:

  • 最基础的多边形,而且其他多边形都可以拆分为三角形
  • 三角形定义的一定是平面(反例:沿对角线折了的四边形)
  • 清楚的内外定义:没有凹凸之分,通过叉积可以简单判断在里还是外
  • 三角形内点的属性可以由根据离三角形顶点的距离关系进行插值得到

如何判断一个像素该不该被点亮?

Rasterize

采样

抽象地说,采样就是将一个函数离散化。

对像素中心进行采样:

  • 如果像素中心在三角形内,则点亮,否则不点亮。
  • 边界问题:如果落在边上,采取统一的处理方式即可。如①不认为在多边形内左下、②左下认右上不认;

判断点在三角形内:用三条边与点 q 连线进行叉乘。

P0P1P_0P_1P1P2P_1P_2P2P0P_2P_0 分别对 P0QP_0QP1QP_1QP2QP_2Q 叉乘,得到的结果都在同一侧则说明在三角形内

对判断过程进行加速

包围盒方法:左于最左顶点高于最高顶点的肯定不用考虑。最上下左右的点围成的四边形就是三角形的包围盒。
记录边界的所有点。

Extend:关于显示设备

隔行扫描:造成画面撕裂

帧缓存(frame buffer):将内存(显存)中的一块区域存储图像,并映射到屏幕。

LCD:液晶显示。通过液晶过滤指定的波改变光的颜色。

LED:发光二极管。小灯管组合发光。

墨水屏:控制黑色墨水面显示在上还是白色墨水面显示在上,刷新极慢。

跳转

Home:GAMES101-1:课程总览与笔记导航

Prev:GAMES101-4:视图和投影变换

Next:GAMES101-6(1):反走样