锯齿的学名是走样,也就是上节的最后延伸所描述的一个问题。
采样会产生一些Artifact(错误,看起来不对的地方):锯齿走样、摩尔纹(想象下手机拍电脑屏幕后的照片上的波纹)等。看下图:
而导致这些Artifacts的原因就是:信号变化的太快,而导致采样的速度跟不上。
为了更好的理解产生这些Artifacts的原因,补充一些信号方面的内容。
1、信号方面的内容
补充这方面的内容,主要还是要去解决反走样问题,所以下面会先给出一些解决反走样问题的方法,再解释。
1.1、模糊
在采样之前进行“模糊”工作,如下图:
最后证明,效果还是不错的。为什么看本篇第三节。
1.2、傅里叶变换
1.2.1、傅里叶级数展开
傅里叶级数展开指的是:任何一个周期函数,都可以把它写成一系列正弦和余弦的线性组合加一个常数。
1.2.2、傅里叶变换
傅里叶变换:将函数变成不同的频率的段,并且将它们显示出来。
当函数频率很快是,而采样速度跟不上,就会出现下图最下面的几个函数的现象:
走样问题就如上述图描述的一样。
2、滤波
在图片中,高频信号是边界位置,低频信号是中心位置。(边界是指,类似于图片中衣服和桌子相接的地方。也正是因为在边界位置,信号进行大幅度变换,所以称为高频)
滤波就是选择性的过滤信号,在图形学中应用广泛。
而滤波也可以理解为均值、卷积。卷积例子如下,图形学进行了简化了解:
卷积应用如下图:
而滤波等于均值,也可以看上图理解,其中的那个矩阵含义就是:对于每一个像素,取一个3*3的位置去取它的平均值,实质上就是对图像进行了模糊。
采样导致的走样问题的原因就如下图:出现的重复叠加
3、反走样
上述所说的模糊后再采样的效果还是不错的,如下图:先将高频去掉再进行采样。
而反走样的解决方法如下图,就是将其先进行卷积操作:
卷积操作:将像素内部三角形覆盖的值进行平均。如下图:
4、MSAA :Antialiasing By Supersampling
MSAA:每个像素被划分为了很多个小的像素,假设每个小的像素都有个中心,判断这些中心在不在三角形内,再将结果平均下来,就可以得到一个近似的三角形的覆盖。MSAA所解决的是第三段中所说的模糊这个工作。
原先的像素如下图:
将像素化为2*2的。如下图:
开始平均值,如下图:
最后进行整合平均,如下图:
5、其他抗锯齿方案
两种方法,如下图:
FXAA:得到有锯齿的图有,将边界找到,将有锯齿的边界换成没有锯齿的
TAA:T代表时间,去找上一个。就是在没有边界时,直接复用上一个接到的值。