DLSS技术的本质是什么?

与很多人的理解不同,DLSS超分辨率不是通过降低画质提高帧数,也不是AI脑补细节。

用一句话来说,DLSS的本质就是在AI辅助下,利用时域信息来增加每一帧空间上的信息量,从而在较低渲染成本下获得等效的高采样率和高分辨率。

在合理适配的情况下,DLSS就是一种降低性能需求还能提高画质的「现代魔法」。

想要理解DLSS的本质,首先要从锯齿开始说起。

锯齿:数字世界的物理极限

现实世界是「连续」的,但在屏幕上需要被离散采样成像素。

当一条斜线被映射到有限的像素格上时,自然会出现「台阶状」的锯齿——这就是一种最直观的采样频率不足以还原连续信号的结果,「混叠」现象 (aliasing)。

连续的曲线与离散的锯齿状样本 (Beyond3D)

锯齿本意是指像素化的、不平滑的边缘 (jaggies),属于混叠 (aliasing) 现象的一种视觉表现形式。但是习惯上用抗锯齿来指代所有对抗混叠的手段,下文也不会刻意区分严格意义上的锯齿和其他形式的混叠现象。

本质上说,锯齿就是奈奎斯特采样定律在图形学中的具体体现。

奈奎斯特-香农采样定理 (Nyquist–Shannon sampling theorem)

对一个连续信号进行离散采样时,如果采样频率低于信号中最高频率的两倍,就不能完全重构该信号,重构时的缺陷称为混叠 (aliasing)。

早期2D游戏多以相对静态的画面为主,锯齿往往只表现为台阶状的边缘,属于可以忍受的小瑕疵,还可以针对性地在素材制作时就进行亚像素优化。

但3D时代就不一样了,锯齿会带来纹理闪烁、摩尔纹和抖动,甚至会严重影响画面的可辨识性。同时,空间反射、环境光照等都依赖于重建的正确性,锯齿不仅仅是视觉上不平滑,还作为一种错误重构污染了信号频谱,最终可能导致整个渲染管线的偏差积累到完全超出可接受范围。

空间抗锯齿:单帧的孤岛

起步,但是开销惊人

图形学首先尝试在空间上抗锯齿,第一步就是提高采样率。

「超采样抗锯齿」SSAA (Super Sampling Anti-Aliasing) 就是最传统、最暴力的方式,直接使用更高分辨率渲染,但性能开销过于巨大了。

SSAA效果示意图

妥协,折中,但仍不是出路

为了降低性能消耗,「多重采样抗锯齿」MSAA (Multi-Sampling Anti-Aliasing) 改进为只对几何边缘多重采样,节省部分成本。但该方法只能用于「前向渲染」,在所谓的「延迟渲染」中,MSAA和后处理着色的相性极差,要么G-buffer复杂度和带宽爆炸,要么丢失子像素信息,同时也无法处理透明混合纹理,还不能解决着色阶段的伪影,和现代渲染流程几乎无法兼容。

前向渲染:在绘制每个物体的时候,立即计算光照、材质、阴影等效果。

延迟渲染:把物体信息写入几何缓冲 (G-buffer),最后在单独的「光照计算阶段」里统一计算光照,比前向渲染更适配现代的复杂光源环境。

MSAA和SSAA的效果对比示意图

后处理,但解决不了抖动

既然MSAA无法和后处理配合,那就尝试在后处理时做抗锯齿。

「快速近似抗锯齿」FXAA (Fast Approximate Anti-Aliasing) 就通过图像边缘检测和模糊滤波来平滑锯齿——简单来说,套一个低通滤波,代价就是模糊和细节丢失。

FXAA效果示意图

「亚像素形态抗锯齿」SMAA (Subpixel Morphological Anti-Aliasing),更聪明、更细致的FXAA,有着更好的边缘检测和邻域模式识别,通过亚像素混合来消除锯齿。

但这些仍然不能解决纹理闪烁和时间抖动——不能说完全没用吧,但也就是削弱高频能量带来的间接作用。

MLAA是SMAA的前身,在像素级别做形态学计算,而SMAA在亚像素级别

一系列尝试得到结果是显而易见的:只依靠单帧空间信息做抗锯齿,不足以解决问题。那么,就要在时间上做文章了。

时间抗锯齿:连续的模糊

一帧不够,那就多帧拼起来。
连续帧之间,摄像机和物体都在运动,意味着每一帧都提供了不同的采样视角。理论上,如果这些信息能够对齐、融合,自然就得到了远超单帧的「等效采样率」。

于是我们得到了「时域抗锯齿」TAA (Temporal Anti-Aliasing):根据运动矢量把上一帧图像「投射」回当前帧,与当前帧混合以减少闪烁与锯齿,再加一点噪声与模糊抑制高频伪影。

TAA效果示意图

甚至虚幻引擎还将TAA同时用作一种超采样方法,也称为TAAU (Temporal Anti-Aliasing Upsampling),降低实际渲染分辨率再「升采样」上来。

Epic Unreal Engine的TAAU示意图

但理想很美好,现实则由于运动矢量的不确定性、遮挡的分歧以及帧间偏移误差,TAA的代价是拖影、模糊和鬼影都太严重了,远远谈不上令人满意。

DLSS超分辨率:目前最接近正确的方向?

TAA画面瑕疵的核心问题在于,只靠运动矢量信息仍然不足以正确分辨不同来源的像素。
特别是遮挡、误差与帧间关联的模糊问题,使手工调参的TAA(U)难以平衡清晰度与稳定性。

那就交给AI来解决这个问题。

DLSS 1绕了个弯路,试图把最初的超采样抗锯齿SSAA的性能压力转移给「AI补细节变清晰」,结果由于输入仅为单帧低分辨率图像和深度图,缺乏时间信息,效果很不理想,被迅速放弃,归入了「黑历史」。

DLSS 2开始,NVIDIA彻底将其重塑成一个AI驱动的TAAU。就是这看似「简单」的思路的转变,以一种近乎革命性的方式重新定义了「采样」。

现在,DLSS会利用低分辨率的当前帧、空间关系的深度图和运动矢量,猜出一个理想中的高分辨率帧的结构,并且从过去渲染过的帧里选出可以用的像素填进去——
是的,DLSS不是AI猜画面,DLSS渲染下的像素仍然是「真实」的。AI猜是哪些渲染过的像素可以继续用,以及如何在时间上对齐与重建。

神经网络的学习能力让DLSS能比人工算法更准确地判断边缘、纹理与运动之间的对应关系,从而获得远高于TAA的清晰度和稳定性。

事实也证明了这个思路的正确性。

Hardware Unboxed 2023年对DLSS和原生的对比,现在只会更好

与传统TAA相比,DLSS确实提供了明显更锐利、细节更真实、拖影更少的画质。
在显著更低的性能预算下,DLSS能输出接近甚至超过原生分辨率的主观画质。同时在客观上,PSNR(峰值信噪比)和SSIM(结构相似度)等指标也确实得到了明显提升。

尤其是近年越来越多的游戏自带关不掉的TAA,这时候用DLSS去接管,几乎一定会远比「原生」画质更优秀。

小结:「原生光栅也并不原生」

很多人会担心DLSS「不真实」,这种想法完全可以理解,但实际上,在计算机图形学尤其是实时渲染领域里,「只要看起来像真的,那就是真的」。

从数千颗芯片、数个小时才能渲染一帧的离线渲染,转向用一颗芯片一秒渲染数十帧甚至数百帧的实时渲染,显然不可能是同一套方法。

所谓的「原生光栅」,一直以来就伴随着大量的简化、近似甚至是造假,它并不「原生」,而是层层近似下的工程妥协,视觉的正确性从未等价于物理的真实性。

说到底,无论是光栅化、光线追踪还是神经渲染,核心目标始终是用有限算力达到视觉可信度的最大化,DLSS是现代图形学从传统采样理论走向数据驱动重建的必然结果。

当然,觉得自己购买显卡时的价格标的本来是光栅化性能,但却被偷换成了DLSS性能,感觉有些背刺和不值得,也属于转型中的阵痛吧。(以及,NVIDIA是有点太黑了......)

更多游戏资讯请关注:电玩帮游戏资讯专区

电玩帮图文攻略 www.vgover.com