2018.03.20 09:00

Microsoft 發表 DirectX 12 Raytracing API 功能集 DXR,標準化光追蹤步驟

ADVERTISEMENT

近日於美國加州舊金山舉辦的 Game Developers Conference,Microsoft 宣布於自家的 DirectX 12 當中加入 Raytracing(DXR)API 選用功能集,將光追蹤技術標準化以便在不同廠商的硬體上執行,可望帶來更為逼真的 3D 遊戲畫面體驗。

Microsoft 於近日舉辦的 GDC 2018 會議當中宣布,將替自家多媒體與遊戲 DirectX 12 API 增加 Raytracing(DXR)選用功能集,提供統一的光追蹤技法介面,軟體開發人員只需要按照此 API 標準撰寫程式碼,便可在 AMD、NVIDIA 或是其它的繪圖顯示卡得到想要呈現的畫面,不必針對不同硬體著色器開發。

若要瞭解光追蹤的成像原理,我們先來理解目前絕大部分 3D 遊戲畫面是如何繪製的。由於即時遊戲畫面需要每秒提供 30 張~60 張以上的畫面更新速率,因而需要 1 種相當有效率且易於平行運算的作業方式,Rasterization 光柵化就是目前 3D 遊戲的基礎。

ADVERTISEMENT

光柵化簡而言之就是把 3D 虛擬空間裡的所有物件,剃除視角以外的物件,也把被其它物件遮擋,物件背面部分全部刪除減少實際運算量(Z-buffer Culling),再壓縮至 1 張平面,而這平面就是你我所能看見的螢幕,接著再依據每個像素進行相關的貼圖、上色、打光作業。雖然這種方式能夠大量減少運算工作,同時產生不錯的畫面品質,卻也因為少了一些物件以及光線之間的交互作用,看起來與真實世界總有不小的差距。

之後加入許多增進畫面品質的運算技巧,譬如 Bump Mapping 凹圖貼圖、Normal Mapping 法線貼圖、Parallax Mapping 視差貼圖、Global Illumination 全域照明、Ambient Occlusion 環境遮蔽等,都是為了加強畫面的品質與真實性。


▲光柵化逐步剃除物件的步驟,由上而下分別為無剃除、剔除視錐以外物件、刪去視角以外部分、刪去背部看不見部分、刪去被其它物件遮蔽部分。

ADVERTISEMENT


▲三角形光柵化的效果。

Raytracing 光追蹤則是模擬真實世界光線運作方式,包含光在物體表面的折射、散射、繞射,或是穿過物體的透射,同時考慮到光在各個物體之間的交互作用,也就是計算場景的光場,最終以平面方式呈現在螢幕。為了減少運算量,實際上運算步驟並不從光源開始,而是由攝影機視角反向射出數條虛擬光線,追蹤這些虛擬光線的路徑。


▲光追蹤可以計算物件與物件之間的光線交互作用。

ADVERTISEMENT

因為內部原理與實際環境相當類似,光追蹤可以產生相當逼真的畫面效果,無需其它特殊的運算技巧。但是相對於光柵化還是需要相當大的運算資源,因此 3D 遊戲絕大部分依然選用光柵作為產生畫面的手段,光追蹤則是應用在動畫、電影特效等沒有時間限制的領域。部分遊戲貼圖材質也會先行以光追蹤技法處理,預先改變顏色後再貼上物件,產生較為逼真的結果。

DirectX 12 在此時加入 Raytracing(DXR)選用功能集,主要還是著眼於未來發展,DXR 採用 DirectCompute 實作,因此目前市面上支援 DirectX 12 的繪圖顯示卡都能夠支援。目前 NVIDIA 已經宣布未來 Volta 架構的顯示卡將以軟體(RTX)與硬體加速方式處理 DXR,先前的顯示卡世代則是採用純軟體方式;而 AMD 方面則是宣稱目前正與 Microsoft 合作,未來將推出支援的驅動程式版本,不確定是否包含硬體加速部分。

即便市場上這 2 家獨大的娛樂用顯示卡廠商推出硬體加速版本,光追蹤在幾年內依然不會替代傳統光柵化的畫面運算方式,由於運算量驚人,未來數年應該是以輔助角色登場,譬如先行以光柵產生基礎畫面,再以小範圍光追蹤結果替畫面加上光影效果。目前已有 Unreal Engine、Unity、Frostibite 等遊戲引擎,以及 EA、Remedy、4A Games 等遊戲廠商將加入這項功能,

ADVERTISEMENT


▲光追蹤運算量相當龐大,讀者可以自行下載 CINEBENCH R15 體驗看看就能理解。

 

資料來源

Announcing Microsoft DirectX Raytracing!

延伸閱讀

ADVERTISEMENT