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