ComputerGraphic

「图形学」一些CG常识记录【抗锯齿】

by Ayse, 2022-07-25


抗锯齿

SSAA:就是对每个像素计算四个子像素的内容(是否在三角形内平均),就相当于渲染着色4次(PS) MSAA:不用MSAA与SSAA的区别在于像素着色器(Pixel Shader)的运行次数。可以说是把这个阶段调整了一下,我不是通过渲染实现这个过程而是通过判断点是否在三角形内,获得一个Coverage(覆盖)以及Occlusion(遮挡)的值,然后再渲染着色一次。 TAA(Temporal Anti-Aliasing)是时间性抗锯齿,是最常用的图像增强算法之一,这是一种基于着色器的算法,使用运动矢量组合两帧,以确定在何处对前一帧进行采样。在每一帧对屏幕区域内的像素进行一个抖动操作,这样当连续的多个帧的数据混合起来以后,就相当于对每个像素进行了多次采样,他将采样点从单帧分布到多个帧上,使得每一帧并不需要多次采样增加计算量,但TAA往往会盲目地跟随移动物体的运动矢量,从而造成屏幕上的细节模糊不清。 后来NVIDIA提供了一种称作TXAA的抗锯齿技术,实际上就是TAA+MSAA(多重采样抗锯齿Multi-Sample Anti-Aliasing)的组合,通过引入额外的深度信息来实现在延迟渲染上使用MSAA,TXAA专门用来直接集成在游戏引擎里,TXAA综合了MSAA的强大能力与类似于CG电影中所采用的复杂的高画质过滤器。还可以抖动帧与帧之间的采样位置来获得更高画质。 DLSS抗锯齿 先渲染一个低分辨率的,然后用神经网络去补充剩下的细节

FXAA(Fast Approximate AA:先得到有锯齿的图,从图像层面上,先将边界找到(通过图像匹配),然后将边界换成没有锯齿的边界。此方法与采样无关,是在图像处理的一种抗锯齿。速度很快。

关于shading锯齿的解决方案。

这是我在做interiormapping的时候发现的,当窗户很小的时候,移动相机窗户边缘会有显著的抖动,上面的MSAA之类的方法都是在几何上做处理,也就是对几何体的边界进行抗锯齿,但是这种情况的锯齿是没有办法解决这种shading中的,这里就有两种策略,首先是可以用TAA进行效果的优化,其次需要在shading中寻找解决方案,第一种是通过ddx和ddy在着色的时候进行平均采样,ddx可以帮助我们找到屏幕旁边像素采样的变量的值,不同fragment旁边的插值。大概就是对那个窗框的蒙版进行处理即可)

为什么延时渲染不支持MSAA

  • 首先不是严格不行,只是需要大量的算力,理论上是在顶点解算完,像素着色器中改变的一个过程,而写过延时渲染都知道,GBuffer里面就已经有了normal、depth、lighting等等的信息,而没有几何信息,我们没办法靠几张图判断某个像素在不在三角形内,而如果我们一开始就这么做,那就得把所有几何信息专门存起来,而且每一张图还得抗锯齿,这个带宽消耗会非常大

作者: Ayse

2024 © typecho & elise