光栅化

投影完成之后,视图区域被确定在从[-1,1]的单位矩阵中,下一步就是光栅化

长宽比:ratio
垂直的可视角度:fild-of-view 可以看到的y 轴的范围,角度越小 越接近正交投影


屏幕坐标系
、


将多边形转化成像素
显示器的成像:隔行扫描(每次仅仅绘制奇数行或偶数行)

三角形

像素和三角形的位置关系:像素的中心点和三角形的位置关系如何确定
采样


判断像素的中心点是否在三角形内


如何实现一个点是否在三角形内?

使用叉乘:p1p2 与p1q 叉乘 ,使用右手螺旋定则,z朝外,q 在p1 p2 的左侧
同理:q 在p2p0的右侧
q在p0 p1 的左侧;
因此 q 在三角形外侧


包围盒:bounding box ;不需要考虑所有的像素;考虑 三角形顶点的最大最小值




实际中会有锯齿,光栅化采样会导致该问题

反走样
通过判断像素点中心是否在三角形中,获取该像素点的值

实际得到:

期望得到:

实际上不期望出现锯齿
采样产生的现象:
(1)锯齿:jaggies

(2)摩尔纹

通过删除奇数行列后放大到和原图像尺寸
频域
高频信息:

对应图像的边界
卷积

时域卷积= 频域乘积



采样频率过低会导致频谱混叠,无法恢复,采样频率>= f

处理
(1)增加采样率:显示器分辨率高,像素和像素之间的间隔小,采样率高,更清楚
(2)反走样:先做模糊处理(低通滤波,过滤掉高频信息),再采样,相当于降低了原来频谱的对应的T,这样低的采样率不容易造成频谱混叠,无法过滤出原来的频谱


计算平均像素值:

MSAA
通过对像素内的多个位置进行采样并取其平均值来近似 1 像素盒式滤波器的效果

原本的效果:

第一步:使用2x2的像素点代替原来的像素点

如蓝色区域,有75%的像素点在三角形内



深度缓冲 Z-buffer
Painter‘s Algorithm

先画远处,再画近处

解决不了环形覆盖的问题
Z-Buffer


右图记录深度,深度越小,颜色越重
算法
如果当前三角形点的z 值小于 zbuffer中维护的z值,则重新赋值;
并且更新该点中的z值

