GAMES101 学习6——光栅化(深度缓冲与抗锯齿)
参考资料:
https://www.yuque.com/sugelameiyoudi-jadcc/okgm7e/d2cc35aba82ff822e4ae4b1cee2517eb
https://blog.csdn.net/qq_36242312/article/details/105708455
一、走样基本概念
上一节提到了光栅化三角形,而在实际中,屏幕会由于分辨率和采样频率的一些问题,导致三角形在光栅化过程中出现走样(当然,线条也会出现走样)。这是由于三角形的边或者线段在观测中是无限细的,可以看做是带宽无限的信号,而对这些图元进行像素化的过程中,采样频率不足,导致采样过程中丢失高频成分,所以产生的信号失真,在屏幕上就表现为锯齿状的图像,这种现象就称为走样
,如下图:
所以我们就需要反走样来减少或消除这种效果。基本上反走样方法可分为两类。
- 第一类是通过提高分辨率即增加采样点(提高采样频率),比如先在较高分辨率上对光栅进行计算,然后采用某种下采样算法得到较低分辨率的象素的属性,并显示在分辨率较低的显示器上,这类方法有SSAA;
- 另一类反走样是把像素作为一个有限区域,对区域采样来调整像素的颜色或亮度,这种方法类似于图像中的前置滤波(blur等),这类方法有MSAA。
1.1 采样的artifacts
(1)锯齿
(2)摩尔纹
(3)车轮效应
(4)采样伪影(Artifacts): 由于采样频率不足而产生的一些走样现象。
1.2 走样的原因
信号太快,采样太慢
1.3 反走样的一个想法:在采样前做一个模糊
注意:模糊和采样的顺序不能换,否则是错的 如下图↓
二、频域基本概念
2.1 sin/cos举例
2.2 傅里叶变换
关于傅里叶变换的资料:https://zhuanlan.zhihu.com/p/19763358
三、卷积与滤波基本概念
假设我们以一定的频率对下面的函数进行采样,会发现当函数自身频率越高时,由于采样频率不够,恢复的函数与原来的函数也差异过大。
高的频率需要快的采样,采样跟不上频率就会发生走样,一样的采样下无法区别出不同的频率的曲线
而滤波恰恰就是能够过滤掉图像(函数)中的某些频率部分。如高通滤波,低通滤波。卷积其实也是滤波的一种形式,它是对信号周围进行加权平均的一种运算。而卷积定理在频域与时域上也十分重要,即:
在函数在时域上的卷积等于其在频域上的积,反之亦然,如下图:
3.1 不同滤波的效果
高通滤波:边界
低通滤波:模糊
从图形学的角度考虑:滤波(Filtering)=卷积(Convolution)=平均(Averaging)
3.2 卷积操作
3.2.1 卷积操作的定义
①原始信号的任意一个位置,取其周围的平均
②作用在一个信号上,用一种滤波操作,得到一个结果Result
eg:见下图↓
3.2.2 卷积定理
时域上的卷积就是频域上的乘积, 时域上的乘积就是频域上的卷积。
做一个卷积的两种操作
Operation1:图和滤波器直接在时域上做卷积操作
Operation2:先把图傅里叶变换,变换到频域上,把滤波器变到频域上,两者相乘;乘完之后再逆傅里叶变换到时域上
eg:
3.2.3 Box Filter(卷积盒)-低通滤波器
时域上变大 → 频域上变小
四、采样Sampling
4.1 从频率的角度定义,采样就是重复频率上的内容
4.2 走样的原因
采样不够快→中间间隔小→信号混在了一起
五、反走样(Antialiasing)处理方法
Option1: Increase sampling rate提升采样率
并不是反走样,不是我们这个课程需要的
Option 2: Antialiasing
先做一个模糊再采样。模糊-低通滤波(结合前边有说)
六、实际的反走样
6.1 反走样理想操作
任何一个点/块都做一个平均最简单的点→pixel像素
6.2 MSAA(Supersampling)
超采样就是通过对一个像素内的多个位置进行采样并取其平均值来近似1-pixel 滤波器(卷积,blur)的效果
对于4X MSAA来说,其步骤如下:
①假设每个像素中对四个点进行采样
②判断对于一个像素有多少个点在三角形内,然后根据比例对颜色进行"模糊"
结果如下:
MSAA的问题:
- 增加了计算开销
6.3 更多其他采样方法
-
FXAA
一种后期图像处理,和采样无关 -
TAA
复用上一帧感知到的结果 -
Super resolution / super sampling(超分辨率)
DLSS深度学习。
- 点赞
- 收藏
- 关注作者
评论(0)