这篇笔记我认为写的不好
Antialiasing
采样理论
三角形是一种连续的函数,给定任何一个点我们可以测试这个点是否在三角形内部。然后我们可以使用屏幕上的像素的中心点来进行这个测试,最终我们会得到一个类似三角形的图案
但是我们希望的是下面这样的
我们看到我们得到的图形有锯齿这么一种问题,这节课我们将学习如何抗锯齿/反走样(Antialiasing)
空间上走样
下面这张图展现出非常严重的锯齿问题

时间上走样
走样问题不一定是发生在空间上,也可以发生在时间上
我们的动画都是一张一张图片快速的播放产生的,可以看到上面这幅图是有一个网球击球动画的不同图片叠加到一起组成的,可以看到这个挥拍并不是连续的。
而在图形学中我们将一切由采样带来的错误称作:Artifacts
摩尔纹
摩尔纹也是由采样带来的 Artifact, 如果我们需要压缩上面这幅图中左边的图,我们可以选择将它的奇数行和奇数列都去掉,然后再拼在一起,这就会获得右边这幅图,就导致了摩尔纹
走样本质上是函数(信号)变化的速度太快了,我的采样的速度根不上导致的
解决走样的一般方式是在采样之前进行模糊或者滤波
使用这个方法作用在原来那个图上的效果如下
先采样在模糊不等于先模糊再采样,这两者得到的效果是不一样的

频域
为什么我们的采样速度根不上信号的速度会导致走样?
我们可以通过傅里叶级数将不用的函数转化为一系列频率函数的组合,就相当于任何一个函数都可以用频率函数表示,即傅里叶变换可以将一个函数从时域变成频域。
看下面这个例子频率从上到下看是从低到高的,如果我们使用完全相同的采样方式对这些函数进行采样,你会发现我们采样后得到的函数与原函数的关系:当采样的频率与被采样的函数的频率相差很大的时候,就会得到非常糟糕的结果,当采样频率高于被采样函数的频率我们将会得到非常优秀的结果

滤波
滤波是一种对信号进行平滑处理,通过滤波我们可以将信号的频率低于我们希望的频率的信号进行去除,从而得到我们希望的信号
我们知道傅里叶变换可以将一个函数从时域变成频域。
如下图,通过傅里叶变换我们将左边的图像从空域映射到频域,
频域图的中心是最低频的信号,最外部是高频的信号,信号的多少使用亮度表示,可以看到这幅图大多是低频信息,这里有水平和垂直的信号是因为信号是周期的,在图片上就表现为将图片在其他方向又复制一份,在图片左边的信息与右边的信息变化很大,就产生了高平信号
滤波其实就是以某种方式去掉一些频率的信号,如下图我们将低频信号去掉,这叫做高通滤波器,人物的边界与环境的信息通常是高频信息
与其相对额是低通滤波器,低通滤波器会保留低频信号,将高频信号去掉

卷积滤波
卷积其实就是一种平均操作,其实就是使用一个区域,这个区域叫做卷积核(滤波器),卷积核中也有一些权重数,假如说这个卷积核是3x3的,然后我们使用这个卷积核扫描一个图像,那么每次扫描的时候就会读取到图像中3x3区域的像素,然后我们进行一次点积操作再写入到另一张图片中,直到扫描完整张图片。
下面是一个1x3的卷积核的操作
下面是一个3x3的卷积核的操作

抗锯齿 Antialiasing
所以在光栅化中我们先进行滤波(模糊/卷积/平均),然后再进行采样
MSAA 多重采样
MSAA 通过将一个像素划分为多个像素,再使用划分出来的新像素进行判断是否在三角形内部,
然后我再将这个判断的结果平均起来,
再将这个结果乘以颜色值
它并没有提高图片的分辨率
除了MSAA还有其他抗锯齿方法
- FXAA 快速近似抗锯齿,它是一个图像的后处理,它是先得到锯齿的图像,再通过一种方式把图像中的边界找到,再通过一种方式将边界的锯齿搞没
- TAA Temporal Anti-Aliasing 用上一帧的信息来进行抗锯齿
- DLSS 深度学习超采样
作业
这节课没有作业
