games101-(5/6)
光栅化
投影完成之后,视图区域被确定在从[-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值