微軟已經(jīng)推出DirectX 12的最新升級版——DirectX 12 Ultimate,這可以說是DirectX 12從2015年正式上線以來最為重大的一次更新,它加入了許多新的特性,實(shí)際上其中的部分特性已經(jīng)在去年十月份已經(jīng)預(yù)告過了,原本它應(yīng)該會作為Direct3D 12 Feature Levels 12_2出現(xiàn)的,不過這次微軟改名部上線了,給新版本DirectX 12加了個“Ultimate”的后綴,那今后比DirectX 12 Ultimate更強(qiáng)的新版本會叫什么呢?
首先DirectX 12 Ultimate中新增的特性主要有四大塊,分別是DirectX Raytracing 1.1、可變速率渲染、Mesh渲染器和采樣器反饋(Sampler Feedback)。
DirectX Raytracing 1.1
DirectX Raytracing(DXR)是微軟在2018年為DirectX 12引入的新特性,讓它支持實(shí)時光線追蹤處理。1.0版本的DXR在軟件特性上比較基礎(chǔ),可以說它是圍繞著Turing架構(gòu)的硬件實(shí)現(xiàn)而設(shè)計的,當(dāng)時也沒有從軟件開發(fā)角度去考慮如何實(shí)現(xiàn)光追。而1.1版本擴(kuò)展了DirectX 12在光線追蹤方面的軟件特性,讓它的效率更高,同時對開發(fā)者也更友好。主要有三點(diǎn):
允許GPU直接調(diào)用光追
跑在GPU上面的著色器在1.1版本中可以直接調(diào)用光線追蹤,而無需折返CPU來調(diào)用。這項功能對于自適應(yīng)光線追蹤場景非常有用,尤其是在基于著色器實(shí)現(xiàn)的剔除、排序、分類和細(xì)化等場景中。基本上今后的光線追蹤工作可以在GPU上面準(zhǔn)備并立即生成。
按需加載光線追蹤著色器
當(dāng)玩家在游戲世界中移動、新的物件變?yōu)榭梢姷倪^程中,流式引擎可以根據(jù)此時的畫面需求來加載新的光線追蹤著色器,提高處理過程的效率。
內(nèi)聯(lián)光線追蹤
內(nèi)聯(lián)光線追蹤(Inline raytracing)是目前基于動態(tài)著色器的光線追蹤的一種替代形式,你可以將其理解為一種簡化的光線追蹤。開發(fā)者在內(nèi)聯(lián)光線追蹤過程中將有更大的控制權(quán),并且可以在任意的著色階段調(diào)用它,包括計算著色和像素著色階段。它與傳統(tǒng)基于動態(tài)著色器的光線追蹤可以混合使用,對于簡單的場景,內(nèi)聯(lián)光線追蹤將會提供更好的性能表現(xiàn),而在復(fù)雜場景中,基于動態(tài)著色器的光線追蹤將會提供更好的運(yùn)行效果。
可變速率著色
可變速率渲染(Variable Rate Shading)是一項由NVIDIA在其Turing GPU上率先引入的加速著色特性,具體介紹可以看我們的課堂文章:《超能課堂(212):VRS可變速率著色為什么可以提高幀數(shù)?》,這邊就簡單講一下它的原理,而不再贅述細(xì)節(jié)了。
簡單來說,VRS的原理是通過改變單次像素著色器操作所處理的像素數(shù)量,來改變屏幕不同區(qū)域的著色質(zhì)量。簡單來說,它可以改變同個畫面中不同部分的渲染精細(xì)度,它的用處是提高畫面幀數(shù)。
在不開啟VRS的情況,也就是正常情況下,一幀畫面的所有像素都是獨(dú)立著色的;而開啟VRS之后,原本獨(dú)立的像素被分成了一個個像素塊,它們會共享著色結(jié)果,此時GPU會根據(jù)程序員設(shè)定的重要性分級為所有像素塊分配不同的著色精細(xì)度。拿上面的圖片為例,車輛和遠(yuǎn)景部分的像素仍然是獨(dú)立著色的,但快速變動的道路和路邊的像素塊就是區(qū)塊共同著色的,此時由于顯卡的計算資源得到了節(jié)約,所以游戲的幀數(shù)會有所提高。
在NVIDIA以外,Intel已經(jīng)在Ice Lake處理器中的第11代核顯中加入了針對VRS的支持,而AMD方面則暫時沒有相關(guān)支持,不過他們也已經(jīng)宣布將會在RDNA 2架構(gòu)中加入相關(guān)支持。
Mesh著色器:下一代幾何處理管線的基礎(chǔ)
在過去的二十年中,傳統(tǒng)的幾何圖形處理管線已經(jīng)增加了好幾個階段了,不過它的核心理念仍然基于傳統(tǒng)的光柵化預(yù)著色方法的,放在今天已經(jīng)過于復(fù)雜,并且拖累處理效率。硬件和軟件開發(fā)者都希望改變這一現(xiàn)狀,于是,DirectX 12引入了Mesh著色器,它為開發(fā)者提供了前所未有的可編程能力。
原本的管線中,GPU硬件的并行能力被隱藏,或者說是被自動化了,硬件會幫助打包操作然后并行執(zhí)行它,這很高效,但也存在問題——靈活性不夠。
Mesh著色器就完全改變了這一過程,它不再是針對單一頂點(diǎn)或圖元的單一函數(shù),而是工作在整個計算線程組中。在某一階段中,Mesh著色器的每個線程都是針對一個頂點(diǎn),而在另外一個階段,每個線程針對著一個圖元。整個線程組的內(nèi)存是共享的,訪問靈活度很高,同時開發(fā)人員對硬件的控制權(quán)也更大,甚至還能啟發(fā)新的技術(shù),節(jié)約內(nèi)存使用量和內(nèi)存帶寬。
與Mesh著色器一同出現(xiàn)的還有一個可選的放大著色器(Amplification Shader)階段,它運(yùn)行在Mesh著色器之前,計算得到需要多少個Mesh著色器,并啟動他們。
采樣器反饋
最后一個大特性就是采樣器反饋(Sampler Feedback),先說效果:更好的視覺質(zhì)量、更短的加載時間和更少的卡頓。它的核心思想實(shí)際上就是讓程序只加載必要的紋理,把資源交給更有需要的地方。
采樣器反饋是允許游戲引擎去跟蹤紋理采樣器的使用方式,讓后者向引擎提供反饋,方法是生成“反饋圖(Feedback Map)”,它會記錄不同紋理區(qū)域的不同駐留等級,然后程序可以根據(jù)這些反饋信息來做決策——包括該如何使用紋理采樣器和要在顯存中保留哪些資源等。這比原先的流程更為精確,可以更好地分配計算資源。簡單來說它的實(shí)際效果就是用更少的顯存渲染更大、更詳細(xì)的紋理。
另外,采樣器反饋還允許了一項新技術(shù)——紋理空間著色。它可以在不柵格化對象的情況下進(jìn)行對象著色,其中心目的就是緩存和重用著色結(jié)果,減少GPU的計算量。
總結(jié):面向新圖形架構(gòu)和下世代主機(jī)
在微軟推出DirectX 12 Ultimate之后,NVIDIA和AMD就迅速地宣布已經(jīng)/將要支持它,實(shí)際上,DirectX 12 Ultimate的絕大部分新特性可以說是基于Turing架構(gòu)來的,NVIDIA在設(shè)計Turing架構(gòu)時可能預(yù)留了相當(dāng)部分的新特性是沒有公開的。而AMD方面在目前只能說是一個跟進(jìn)者,要用上新特性,首先要等到年底的RDNA 2架構(gòu)。
DirectX 12 Ultimate的這些特性很明顯有兩個共通的目標(biāo),一是提高開發(fā)者對硬件的控制力,二是提高總體計算效率。這也是為下世代主機(jī)——Xbox Series X和傳說中的Xbox Series S所準(zhǔn)備的,很難說我們要等多長時間才能看到這些特性被應(yīng)用到實(shí)際游戲中去——至少今年是看不到的,需要等引擎開發(fā)商、游戲開發(fā)者對新世代主機(jī)做適配或者做專門性的開發(fā)后,我們才能在PC游戲中也看到這些技術(shù)的運(yùn)用。
責(zé)任編輯:wv
-
微軟
+關(guān)注
關(guān)注
4文章
6630瀏覽量
104479 -
DirectX
+關(guān)注
關(guān)注
1文章
10瀏覽量
9088
發(fā)布評論請先 登錄
相關(guān)推薦
評論