微軟釋出了DirectX 12 Ultimate,這是微軟最好的圖形技術的結晶。DirectX 12 Ultimate具有所有下一代圖形硬體功能,包括DirectX光線追蹤,可變速率著色,網格著色器和取樣器反饋。當你購買帶有DX12 Ultimate徽標的圖形硬體或Xbox Series X時,你可以確信它將支援所有下一代圖形硬體。
DirectX 12 Ultimate中新增的特性主要有四大塊,分別是DirectX Raytracing 1.1、可變速率渲染、Mesh渲染器和取樣器反饋(Sampler Feedback),下面就和大家分享一下:
DirectX Raytracing 1.1DirectX Raytracing(DXR)是微軟在2018年為DirectX 12引入的新特性,它支援實時光線追蹤處理。1.0版本的DXR在軟體特性上比較基礎,可以說它是圍繞著Turing架構的硬體實現而設計的,當時也沒有從軟體開發角度去考慮如何實現光追。而1.1版本擴充套件了DirectX 12在光線追蹤方面的軟體特性,讓它的效率更高,同時對開發者也更友好。主要有三點:
允許GPU直接呼叫光追
跑在GPU上面的著色器在1.1版本中可以直接呼叫光線追蹤,而無需折返CPU來呼叫。這項功能對於自適應光線追蹤場景非常有用,尤其是在基於著色器實現的剔除、排序、分類和細化等場景中。基本上今後的光線追蹤工作可以在GPU上面準備並立即生成。
按需載入光線追蹤著色器
當玩家在遊戲世界中移動、新的物件變為可見的過程中,流式引擎可以根據此時的畫面需求來載入新的光線追蹤著色器,提高處理過程的效率。
內聯光線追蹤
內聯光線追蹤(Inline raytracing)是目前基於動態著色器的光線追蹤的一種替代形式,你可以將其理解為一種簡化的光線追蹤。開發者在內聯光線追蹤過程中將有更大的控制權,並且可以在任意的著色階段呼叫它,包括計算著色和畫素著色階段。它與傳統基於動態著色器的光線追蹤可以混合使用,對於簡單的場景,內聯光線追蹤將會提供更好的效能表現,而在複雜場景中,基於動態著色器的光線追蹤將會提供更好的執行效果。
可變速率著色可變速率渲染(Variable Rate Shading)是一項由NVIDIA在其Turing GPU上率先引入的加速著色特性,簡單來說,VRS的原理是通過改變單次畫素著色器操作所處理的畫素數量,來改變螢幕不同區域的著色品質。簡單來說,它可以改變同個畫面中不同部分的渲染精細度,它的用處是提高畫面幀數。
在不開啟VRS的情況,也就是正常情況下,一幀畫面的所有畫素都是獨立著色的;而開啟VRS之後,原本獨立的畫素被分成了一個個畫素塊,它們會共享著色結果,此時GPU會根據程式設計師設定的重要性分級為所有畫素塊分配不同的著色精細度。拿上面的圖片為例,車輛和遠景部分的畫素仍然是獨立著色的,但快速變動的道路和路邊的畫素塊就是區塊共同著色的,此時由於顯示卡的計算資源得到了節約,所以遊戲的幀數會有所提高。
在NVIDIA以外,Intel已經在Ice Lake處理器中的第11代核顯中加入了針對VRS的支援,而AMD方面則暫時沒有相關支援,不過他們也已經宣佈將會在RDNA 2架構中加入相關支援。
Mesh著色器:下一代幾何處理管線的基礎在過去的二十年中,傳統的幾何圖形處理管線已經增加了好幾個階段了,不過它的核心理念仍然基於傳統的光柵化預著色方法的,放在今天已經過於複雜,並且拖累處理效率。硬體和軟體開發者都希望改變這一現狀,於是,DirectX 12引入了Mesh著色器,它為開發者提供了前所未有的可程式設計能力。
原本的管線中,GPU硬體的並行能力被隱藏,或者說是被自動化了,硬體會幫助打包操作然後並行執行它,這很高效,但也存在問題——靈活性不夠。
Mesh著色器就完全改變了這一過程,它不再是針對單一頂點或圖元的單一函式,而是工作在整個計算執行緒組中。在某一階段中,Mesh著色器的每個執行緒都是針對一個頂點,而在另外一個階段,每個執行緒針對著一個圖元。整個執行緒組的記憶體是共享的,訪問靈活度很高,同時開發人員對硬體的控制權也更大,甚至還能啟發新的技術,節約記憶體使用量和記憶體頻寬。
與Mesh著色器一同出現的還有一個可選的放大著色器(Amplification Shader)階段,它執行在Mesh著色器之前,計算得到需要多少個Mesh著色器,並啟動他們。
取樣器反饋最後一個大特性就是取樣器反饋(Sampler Feedback),先說效果:更好的視覺品質、更短的載入時間和更少的卡頓。它的核心思想實際上就是讓程式只加載必要的紋理,把資源交給更有需要的地方。
取樣器反饋是允許遊戲引擎去跟蹤紋理取樣器的使用方式,讓後者向引擎提供反饋,方法是生成“反饋圖(Feedback Map)”,它會記錄不同紋理區域的不同駐留等級,然後程式可以根據這些反饋資訊來做決策——包括該如何使用紋理取樣器和要在視訊記憶體中保留哪些資源等。這比原先的流程更為精確,可以更好地分配計算資源。簡單來說它的實際效果就是用更少的視訊記憶體渲染更大、更詳細的紋理。
另外,取樣器反饋還允許了一項新技術——紋理空間著色。它可以在不柵格化物件的情況下進行物件著色,其中心目的就是快取和重用著色結果,減少GPU的計算量。
RDNA 2遊戲架構中為DirectX 12 Ultimate提供全面支援。通過這種架構為下一代AMD Radeon顯示卡和即將面世的XboxSeries X遊戲機提供支援。
根據外媒WCCFTECH的報道,AMD釋出了首個RDNA 2 架構 GPU 在微軟DXR API下的光線追蹤演示視訊,下一代Radeon RX “Navi 2x”顯示卡將支援該技術。
在AMD的演示中,官方展示了一個行走在未來場景中的機器人,視訊中體現了光線追蹤的反射和陰影效果,與當初英偉達釋出的Demo效果有類似的感覺。
英偉達表示,GeForce RTX支援的下一代遊戲新標準DirectX 12 Ultimate為開發人員提供了大型的、多平臺的硬體安裝基礎,可用於目標和現成的工具以及可從中使用的示例-所有這些都由省時的中介軟體提供支援。這使遊戲開發變得更快、更容易,並使更多的開發人員可以將這些創新技術新增到他們的遊戲中。許多開發人員已經精心設計了具有這些技術的下一代體驗,目前已經發布30多種DirectX Ray Tracing遊戲,而現在隨著DirectX 12 Ultimate的釋出,其採用率將迅速提高。