DirectX 12 加入 Variable Rate Shading 功能,提供統一 API 提升遊戲畫面繪製效率

DirectX 12 加入 Variable Rate Shading 功能,提供統一 API 提升遊戲畫面繪製效率

ADVERTISEMENT

今年的 GDC 於 3 月 19 日至 22 日在美國舊金山舉辦,與遊戲開發相當密切的 API,Microsoft 宣布於 DirectX 12 當中加入 Variable Rate Shading API,畫面當中的不同區域可以使用不同的 shading rate 進行繪製,shading rate 較低可提升繪製速率,較高則可加強畫面品質表現。

Microsoft 於今年 GDC 開展之際,宣布自家 DirectX 12 加入 Variable Rate Shading 繪製技巧支援性,能夠讓畫面不同區域採用不同的 shading rate 進行繪製,有機會讓中、低階顯示卡在畫面品質損失輕微的情況之下,提升每秒能夠繪製的畫面張數,此舉也讓 DirectX 12 成為首個原生支援 Variable Rate Shading 技術的跨硬體 API。

為了生成畫面當中每個像素,會呼叫著色器進行計算工作,決定像素的顏色,而 shading rate 可視為每個繪製呼叫的解析度,shading rate 較高,運算出來的畫面就更為精緻,相對而言需要更多 GPU 運算資源;shading rate 較低,運算畫面品質變差,但好處是消耗更少資源,提升畫面輸出速率。

在引進 Variable Rate Shading 之前,程式開發者設定好 shading rate 之後,只能套用到整張畫面,看要顧及品質犧牲速度,或是追求速度犧牲品質。Variable Rate Shading 技巧就是用來打破 2 擇 1 的局面,程式開發者可以依據實際需求,設定畫面當中的不同區塊,以不同的 shading rate 進行繪製。譬如玩家比較注意槍戰遊戲的槍枝準心附近畫面,靠近畫面邊緣即可使用較低的 shading rate;另一方面,遊戲當中物件邊緣蘊含的資訊量較多,物件內部即可以較低的 shading rate 繪製,兼顧畫面品質與輸出速率。

DirectX 12 加入 Variable Rate Shading 功能,提供統一 API 提升遊戲畫面繪製效率
▲NVIDIA 已於自家 Turing 顯示繪圖架構,加入自己的 Variable Rate Shading 功能。

Microsoft 將支援 Variable Rate Shading 的 GPU 硬體分為 2 級,第一級支援 per-draw shading rate,每呼叫 1 次著色器進行繪製運算即可設定 1 次 shading rate,第二級則支援 within a draw,每次呼叫著色器進行運算即可以 screenspace image 或是 per primitive 的方式,設定不同區域的 shading rate。

深入解釋第二級硬體 screenspace image 與 per primitive 2 者的不同,screenspace image 設定方式有點類似於 bitmap,直接在畫面指定該區域所採用的 shading rate;per primitive 則是以三角形為設定最小單位,譬如遊戲採用 DoF 深度處理模糊遠方物件時,距離攝影機較遠的物件(攝影機焦點之外)即可採用較低的 shading rate,反正最後都會進行後處理被模糊掉,又何必使用較高 shading rate 浪費效能?

Microsoft 找來 Firaxis Games 的 Civilization VI「文明帝國 VI」進行比較,在導入 Variable Rate Shading 之前,NVIDIA GeForce RTX 2060 可於 4K 解析度達成 53FPS 畫面輸出速率。導入 Variable Rate Shading 第一級,分別於海洋與陸地採用較低的 2x2 shading rate,小型物件採用較高的 1x1 shading rate,此時效能可增加約 20%,但是出現肉眼能夠辨識的畫面品質下降情形。

DirectX 12 加入 Variable Rate Shading 功能,提供統一 API 提升遊戲畫面繪製效率
▲若是不事先揭露畫面左半部、右半部何者採用 Variable Rate Shading Tier 1,何者沒有導入 Variable Rate Shading,你能夠以肉眼分辨嗎?(點圖放大)(答案請反白:右側採用 Variable Rate Shading Tier 1

進入 Variable Rate Shading 第二級比較,在 Civilization VI 遊戲當中採用邊緣偵測過濾器,決定畫面中哪些區域要以 1x1 進行繪製,哪些區域又以 2x2 進行繪製。有了更聰明的決策機制之後,畫面品質獲得一定程度的改善,肉眼幾乎無法分辨是否採用 Variable Rate Shading,同時 FPS 也有 14% 的提升。

DirectX 12 加入 Variable Rate Shading 功能,提供統一 API 提升遊戲畫面繪製效率
▲透過邊緣偵測過濾器決定哪些區域以較高或是較低的 shading rate 進行繪製。(紅色為 1x1、藍色為 2x2)

DirectX 12 加入 Variable Rate Shading 功能,提供統一 API 提升遊戲畫面繪製效率
▲藉由邊緣偵測輔助判斷,肉眼觀察右側畫面品質相當接近左側,同時 FPS 效能提升約 14%。(點圖放大)

由 DirectX 12 加入 Variable Rate Shading API 支援性,就不怕此技術只能應用在某些 GPU 硬體身上,遊戲開發者更不必替不同廠牌、不同世代的硬體撰寫不同語法。Microsoft 表示 DirectX 12 的 Variable Rate Shading 目前已可在 NVIDIA 硬體運作,Intel 預計今年推出的 Gen11 繪圖顯示架構也如火如荼測試當中。對於玩家來說,中、低階顯示卡可望藉此技術,獲取一定程度效能提升,高階顯示卡則可於部分畫面區域採用較高的 shading rate,獲得畫面品質提升效果。

 

資料來源

Variable Rate Shading: a scalpel in a world of sledgehammers

延伸閱讀

你知道電腦王也有 Telegram 頻道嗎?

R.F.
作者

誤入叢林的小白兔,每天爬樓梯到七樓的白癡,幻想自己很瘦的豬,一放假就睡死的bed potato。

使用 Facebook 留言
發表回應
謹慎發言,尊重彼此。按此展開留言規則