Games101 笔记 06光栅化(深度测试与抗锯齿)

反走样

Games101 笔记 06光栅化(深度测试与抗锯齿)

上次课的最后的是三角形有明显的锯齿, 学名是走样 (Aliasing)

视频 就是在时间中的采样

Artifacts(Errors/Mistakes/Inaccuracies)in Computer Graphics 图形中的一切错误,不准确都可以用这个

比如: 高速行走的轮胎会让你感觉又向后的趋势, 原因是人眼是时间上的采样跟不上采样的速度.

Sampling Artifacts 采样错误

  • Jaggies - 锯齿
  • Moire - 摩尔纹, 把奇数行,列的纹理都去掉
  • 车轮的效果 - 时间中的采样
  • More

 

信号的变化太快, 跟不上他的变化速度, 

Antialiased Sampling 反走样

先模糊,再采样

Games101 笔记 06光栅化(深度测试与抗锯齿)

 

Games101 笔记 06光栅化(深度测试与抗锯齿)

左侧先采样再模糊, 右侧先模糊再采样,

所以只能先模糊再采样,不能反向

 

Frequency Domain 频域

Games101 笔记 06光栅化(深度测试与抗锯齿)

上下2个频率不同

cos 2πfx  这个f 就是频率     上面是1, 下面是2

f = 1/T

周期 = 1/频率,  上面周期是1, 下面的周期是0.5   也表示多久重复自己一次

Games101 笔记 06光栅化(深度测试与抗锯齿)

傅里叶级数展开

任何一个周期函数, 都可以写成正弦和余弦函数的组合以及一个常数项

Games101 笔记 06光栅化(深度测试与抗锯齿)

傅里叶级数展开 和傅里叶变换紧密相连

给定任何一个函数, 都可以经过复杂的变换另外一个函数.  还可以逆变换, 变回来.

Games101 笔记 06光栅化(深度测试与抗锯齿)

5个函数有不同的频率, 在相同的间隔点采样.  

对于高频函数, 高频信息丢失, 蓝色线和绿色线差别越来越大.

Games101 笔记 06光栅化(深度测试与抗锯齿)

走样: 用同样的采样方法对2种频率完全不同的函数采样 得到的采样结果可能是完全一样的. 

 
Filtering = Getting rid of  certain frequency contents 
滤波 去除某些频率内容
 
 
傅里叶变换可以把一个函数从时域变到频域
右侧是图片的傅里叶变换,

Games101 笔记 06光栅化(深度测试与抗锯齿)
把低频过滤掉, 左侧保留的都是高频内容,  这种叫高通滤波(只剩下高频), 内容上的边界, 信号变化非常大的地方.

Games101 笔记 06光栅化(深度测试与抗锯齿)

只留下低频信息,  低通滤波器   把边界去掉啦, 比较模糊

Games101 笔记 06光栅化(深度测试与抗锯齿)

把高频, 低频信号都过滤掉

Games101 笔记 06光栅化(深度测试与抗锯齿)

Filtering = Convolution  (= Averaging)

滤波 = 卷积 = 平均

卷积   (可以近似的看作加权平均值)

卷积操作是在这个窗口上一直移动

Games101 笔记 06光栅化(深度测试与抗锯齿)

Games101 笔记 06光栅化(深度测试与抗锯齿)

卷积定理

2个信号时域上的卷积 = 2个信号频域上的乘积, 可逆过来.

Games101 笔记 06光栅化(深度测试与抗锯齿)
box 卷积, 左侧时域, 右侧频率, 低通过滤器 模糊

Games101 笔记 06光栅化(深度测试与抗锯齿)

卷积核变大, 变得更加模糊, 极端情况下 放一个比原图还大的卷积核, 那么得到的基本是一样的东西, 更加模糊.

Games101 笔记 06光栅化(深度测试与抗锯齿)

Sampling = Repeating Frequency Contents
采样 = 重复频域上的内容

 

c 冲激函数  e(采样结果) = a(连续函数)*c(冲激函数) 

f 相当于重复b,

Games101 笔记 06光栅化(深度测试与抗锯齿)

 采样的频率不足,  采样的内容和原始的有重叠内容,  发生了走样. 

Games101 笔记 06光栅化(深度测试与抗锯齿)

反走样

1.提高采样率

比如说屏幕的分辨率提高.

2.先模糊再采样

先把原始信号进行模糊, 再进行采样.

Games101 笔记 06光栅化(深度测试与抗锯齿)

对于覆盖的面积进行下取样.

Games101 笔记 06光栅化(深度测试与抗锯齿)

实际中的处理 MASS(MultiSampling Anti-Aliasing 多重采样抗锯齿)

一个像素分成小的像素. 

2x2得采样率

Games101 笔记 06光栅化(深度测试与抗锯齿)

mass 解决得是模糊, 下一步才是采样. 不是依靠提升分辨率.

Games101 笔记 06光栅化(深度测试与抗锯齿)

Mass 得消耗

增大了计算量. 

工业级并不是按照2x2, 4x4 这种, 可能是不规则

其他比较重要得工业界使用得:

FXAA (Fast Approximate AA)    快速近似抗锯齿,

   根据图像处理来处理锯齿, 根据图像匹配把边界找到, 然后换成没有锯齿得, 速度也很快.

TAA (Temporal AA)  

   根据上一帧得结果,  相当于把Mass得采样分布在时间上.

Super resolution / super sampling   超分辨率

小图拉大, 不想看到锯齿,  目前通过深度学习去猜测.