遊戲畫面更真實的利器,解析 NVIDIA RTX GPU RT core 即時光源演算法

作者 | 發布日期 2018 年 08 月 21 日 16:37 | 分類 GPU , 晶片 , 軟體、系統 follow us in feedly

NVIDIA 新一代旗艦顯示卡 RTX 2080 於 21 日凌晨發表,藉由新的圖靈(Turing)架構,為玩家提供逼真的遊戲體驗。然而,新一代顯示卡和先前發表以 Volta 架構為核心的 Titan V 有什麼差異?為什麼帶來更逼真的體驗?



這一代圖靈顯示卡,NVIDIA 新增了名為 RT core 的新運算單元。就如同在 Volta 新增的 Tensor core,是為特殊應用情境而設計的計算元件。此元件設計的目標為讓 GPU 擁有即時運算光線追蹤(Ray Tracing)的能力。一種可讓遊戲更逼真的渲染(Rendering)演算法。

然而,以前沒有採用光線追蹤時,遊戲也可以做得很逼真,為什麼還要新增額外的電路呢?這就要比較現有渲染演算法 Rasterization 及 Ray Tracing 了。

Rasterization,經典且好用的演算法

現行電腦繪圖中,顯示卡會將顯示的資料以三維空間方式儲存,之後再投影整個空間,留下可被使用者看到的部分,以形成二維畫面。詳細演算法可參考《從點到面、從黑白到彩色,一步步繪出奇幻世界的顯示卡》一文。

過去數十年的發展,此演算法的蓬勃發展,為遊戲玩家帶來相當逼真的遊戲介面。然而,要繪製更逼真的光學效果,諸如金屬的反射、玻璃的折射及陰影等,現有的 Rasterization 有其極限。

如果,可直接使用幾何光學模擬光學的實際狀況,不就能做出相當擬真的光學效果嗎?此方法已被廣泛用在現在的電影特效,此方法的逼真程度,從現在的電影特效就得以了解。

Ray Tracing,以光學為核心的渲染法

光線追蹤(Ray Tracing)是以光線的物理特性為核心的演算法。原理是從使用者端當起點,尋找光線反射折射的路徑並算出使用者會看到的物體顏色及亮度。如下圖所示:

(Source:By Henrik [GFDL or CC BY-SA 4.0 ], from Wikimedia Commons

然而,由於是讓大量光線在空間中反射折射,且空間中物體的狀況未知,每繪製一張圖所需的計算量相當巨大,無法即時算出結果,因此遊戲產業尚未大量採用此技術。

新一代 GPU 中,NVIDIA 正式將 RT core 加入繪圖卡,讓即時光學渲染法(Rendering)不再是夢想,CEO 黃仁勳便在 SIGGRAPH 2018 示範即時 Ray Tracing 成果。

從影片可看到,採用新一代技術的顯示卡,可即時繪製絢麗的光澤,讓遊戲逼真程度更上層樓,更可繪製出許多舊有技術無法滿足的細節。

技術大混合,Ray Tracing+Machine Learning

然而不可否認,現在的光線追蹤技術還沒辦法即時完成繪圖工作,尚未完成工作就收集結果時,計算出來的成果會如下圖左半,還有相當多雜訊。

這些雜訊是來自模擬的光線數量不足,無法徹底填補細節。此時,便需要降噪器(Denoiser)填補細節缺失。NVIDIA 去年的論文,便示範可使用 Machine learning 達成此目標。使用降噪器後,便如圖右半邊那樣,帶來逼真的場景。

水到渠成?繪圖 API 已支援此技術!

然而,硬體廠商最大夢魘便是整個生態系的成熟度,有再好的硬體,沒有軟體支援都是空談。因此,NVIDIA 發表此顯卡前,便積極將 Ray Tracing 功能加入開放式繪圖 API Vulkan,同時也和微軟合作,將光線追蹤功能導入 DirectX 12,更和數家知名遊戲引擎開發者,如 Unity、Unreal Engine 等合作。

SIGGRAPH 2018 中,微軟 DirectX 開發長介紹了他們如何將光線追蹤和既有的渲染器(shader)結合,讓 Rasterization 和 Ray Tracing 互補優缺點。此外,此 API 已能使用,只需使用 Windows 10 v1803 開發者版本並有可執行 DirectX 12 DXR 的 GPU,便可嘗試 Ray Tracing 效果。

隨著顯示卡技術發展及遊戲引擎開發商的推進,或許在不久的將來,我們就能玩到如電影畫面精緻的遊戲,讓遊戲產業更上一層樓。

(首圖來源:NVIDIA

延伸閱讀: