GAMES101 lecture 5-6笔记 光栅化
设备硬件方面
就提一个LCD:
光栅化 Rasterization
确定Bounding Box
找到min_x, miny, max_x, max_y,得到包含目标三角形的矩形,然后依像素扫描,如果在三角形内则标为1,否则0。
所以关键在于inside函数怎么写:叉乘。
设点为P,那么AP X AB、BP X BC、CP X CA三个向量肯定指向一边,即要么同正要么同负(写一个bool函数判断是否为正,然后这三个函数值判断true/false)
优化的BoundingBox不需要整个矩阵,而是每行的min_x, max_x来迭代,但是很难搞。
Antialiasing 反扭曲
方法
扭曲的根本原因是信号变化太快但采样太慢。
反扭曲的方法是 Blurring(Pre-Filtering) 模糊化(平滑)Before Sampling
如果先sample再平滑效果很差
傅里叶转换
任何函数都可以用三角函数展开,展开项越多,越接近目标函数
频率越高,需要越快的采样,不然就会有走样(aliases),如下:
平滑 flitering
每一张图片都可以找到一张傅里叶变换的频率图,低频在中间(发亮),高频在周围
利用滤波器处理图片的过程就是卷积原理,等同于对频域进行过滤。
低通滤波器过滤高频,图片就变模糊;留某一段频率就会有对应图像。
时域上的乘积等于频域上的卷积
时域角度:采样就是在信号(a)上取冲激函数(c),得到e中的各个点。
对应频域:b, d是对应a,c的频谱,两者在频域上的卷积结果是f
所以说:采样就是在重复原始信号的频谱
因而采样的不同间隔会使得频谱以不同间隔移动(重复),采样的越稀疏(越慢)会导致频谱搬移的越密集
交叉的部分就是走样
反走样
先模糊(去掉高频)再采样
MSAA:
超采样,在每个像素内再细分(比如四个),然后算出每个像素是否在三角形内来决定整个像素在三角形内的情况,比如(75%)然后以整块像素的颜色来显示。