回覆列表
  • 1 # 領略宇宙之美

    幾乎每一個玩過電腦遊戲的人,都聽過 DirectX 的大名。作為 Windows 系統自帶的圖形 API(應用程式程式設計介面),大部分 PC 遊戲都需要它的支援。目前 DirectX 的最新版本是 DirectX 12,它釋出於 6 年前,已經相當長時間沒有大更新過了,昨天微軟終於公佈了它的升級版—— DirectX 12 Ultimate 。從字面意思上來看,它是 DX 12 的終極版,它將會隨著 Win 10 2004 系統更新一同推送。DirectX 12 Ultimate 都用哪些特性?從 DX 12 開始,微軟就已經將主機和 PC 之間的圖形介面打通,Win 10 和 Xbox One 都使用了 DX 12 作為圖形 API 。使用相同 API 帶來的好處也十分明顯,遊戲公司在開發遊戲時,不需要再為 Xbox 和 PC 端的移植而煩惱,所以我們能看到,大量 Xbox 遊戲出現在 PC 的應用商店中。這次微軟釋出的 DirectX 12 Ultimate 也同樣是跨平臺的 API,這也讓下一代 Xbox 理所當然的獲得了 PC 上的某些畫面特性,比如老黃普及的光線追蹤。DirectX Raytracing Tier 1.1這次微軟將 2018 年釋出的 DXR 1.0 更新到了 DXR 1.1 版本,這是一次增量更新,最明顯的變化有:為現有的光線追蹤管線狀態物件(Pipeline State Object)加入了額外的著色器(Shader)。支援 GPU 執行時間軸自動判定需要處理的光線數量。引入新的內聯式光線追蹤。這些特性為遊戲開發者提供了一套規避複雜光線追蹤場景的方法,讓開發者可以透過呼叫新函式,獲得物體遮擋查詢、剔除等功能,讓開發者能更快的構建光線追蹤的場景,給遊戲提供更好的光追效果和效能。在微軟釋出 DirectX 12 Ultimate 後,NVIDIA 表示將 RTX 系列處理器將完全支援 DXR 1.1 特效,AMD 也宣佈將在 RDNA 2 架構中支援該特性。VRS(可變速率著色)除了光追外,之前 NVIDIA 推出的 VRS 技術也被微軟認可,並將其加入 DirectX 12 Ultimate 中。VRS 全稱是可變速率著色技術,它最明顯的作用就是降低顯示畫面中一些不重要區域色彩紋理,從而提升畫面的流暢度。在這一技術被應用之前,GPU 需要為畫面上的每一個畫素點單獨著色。而 VRS 就是對畫面區域進行劃分,為不同的區域選擇不同的著色解析度,細節要求不高的區域就將多個畫素點一起著色,大幅降低了 GPU 著色的次數,大大減輕了顯示卡的計算壓力。比如上面這張圖,畫面邊緣最不顯眼位置的著色解析度就被降到了最低,雖然這部分畫面的質量有所下降,但由於它只是背景,玩家不會有明顯的感知。省下來的 GPU 資源,則用於提升幀率,減少感知更明顯的卡頓現象。可以說,有了 VRS 技術後,平均幀率不高的中低端顯示卡將將會獲得不小的體驗提升。Mesh Shader除了為最後為畫素著色外,圖形渲染在前期還需要完成物體的 3D 模型計算渲染。這個工作之前需要向 CPU 傳送一個 Draw Call(繪製呼叫)。通常情況下, 它會因為 CPU 的效能瓶頸,限制 GPU 的發揮。Mesh Shader 的可以解決這一問題,它可以讓開發人員不用考慮單個頂點或者單個圖元,用一組預定的執行緒更高效的完成渲染流程。Mesh Shader 可以進一步提幾何圖形的細化程度,例如對硬體進行程式設計,並用簡單的方式描述樹幹枝杈的位置,最後生成細節更多的樹皮樹葉。有了 Mesh Shader 後, 遊戲場景中灌木從,植被等物體將有詳細的細節,能進一步提高場景的真實性。Sampler Feedback(取樣器反饋)這一功能其實和 VRS 類似,都是透過減少某些冗餘資訊,降低 GPU 負載並提高效能。與影片壓縮採用幀與幀之間的畫面向量預測不同,遊戲中的渲染大部分都是從「0」開始,也就是不停地重複獲取頂點、視角轉換、投影、照明、剪裁、柵格化的工作,不管前後兩幀畫面有多少相同。事實上,大多數遊戲在的場景變動都十分緩慢,大多數「物件」在畫面中並沒有改變(例如天空,遠景)。取樣器反饋就是透過降低對這些物件著色的速度(比如每 3 幀一次),來降低 GPU 的工作壓力。這一功能可減少重複對遠景和緩慢變化的陰影著色對效能影響,進一步提升畫面的幀率。總結:開發者福利,NV 大獲全勝這次的 DirectX 12 Ultimate 是一次增量更新,加入了之前 NVIDIA 推出的新技術,包括光追和 VRS 。有別於 DX 10 和 DX 11 的技術躍進,DirectX 12 Ultimate 更多是為開發者提供更底層的最佳化空間。反映在遊戲上,我們可以會看到:更有經驗和實力的開發者會用 DX 12 Ultimate 的新特性做出非常驚豔的遊戲畫面,同時效能最佳化也非常出色。但如果是遊戲開發者沒有呼叫這些工具,它將不會對畫面和畫面效能產生太大提高。不過 DirectX 12 Ultimate 橫跨主機與 PC,一些首發於主機的遊戲在開放到 PC 平臺後或許也能獲得新特性的最佳化。最後說一個好訊息:NVIDIA 表示 RTX 系列將完全支援 DirectX 12 Ultimate 的所有特性,AMD 即將推出的 Navi 架構顯示卡也支援 DirectX 12 Ultimate,AMD 已經發布了第一個執行光追的 DEMO。未來幾年,光追或將全面普及。

  • 2 # 三易生活

    不過即便是我們也確實沒想到,微軟的動作會這麼快。僅僅就在Xbox Series X公佈細節數天之後,微軟就突然公佈了全新的“DirectX 12 Ultimate”標準,並宣佈其將為統一Xbox與PC體驗的最新、最高級別的遊戲圖形標準。這意味著,諸如DXR 1.1新版光線追蹤、VRS可變著色率、Mesh Shader多執行緒渲染管線,以及SFS取樣反饋流等等,剛剛在Xbox Series X中登場的圖形技術很快就將隨著Windows 10 2004版的更新,降臨到那些已經配備了RTX顯示卡的PC中來,並進一步成為大量次時代3A大作的技術標準。

    很顯然,微軟為了提升自家平臺的遊戲體驗,這次算是發了個“大招”。而DirectX 12 Ultimate這霸氣的名字以及它所包含的一系列新功能,也確實令人對新版本的Windows 10有了更多期待。

    但是,這樣一來問題就出現了。眾所周知,微軟在Windows Vista時代引入了DirectX 10,在Windows 7上帶來了DirectX 11,在Windows 8上釋出了DirectX 12。那麼為什麼Windows 10釋出的時候,我們卻並沒有等來DirectX 13,反倒是直到這多年之後,才終於有了一個“DirectX 12 Ultimate”呢?

    要知道,DirectX曾經是顯示卡換代的原動力

    要理解這一點,首先我們要先弄懂一件事。就是顯示卡的硬體功能和它對應的DirectX軟體規範,究竟是“先有雞還是先有蛋”。

    PC上的第一款GPU,同時也是第一塊支援DirectX 7.0的民用顯示卡

    追溯歷史不難發現,在DirectX 12之前,歷代顯示卡的硬體換代基本上都是受軟體與遊戲技術換代所驅動。比如PC史上最早的“GPU”GeForce 256,就是在微軟先公佈了DirectX 7.0規範,引入硬體T&L功能需求之後,NVIDIA第一個做出了適配的顯示卡,從此便一戰成名。

    又比如說在DirectX 10的時代,NVIDIA先推出了符合新圖形規範的GeForce 8800Ultra,而ATI那邊的Radeon HD2900XT“遲到”了很長時間,因此便在市場中陷於被動。

    這塊卡誰能準確說出名字和出處來?

    從這些歷史資料中我們都不難看出,在很長一段時間裡,PC顯示卡市場都是微軟先發布新版DirectX,相當於先提出了一個“技術規範”或者說效能需求,然後才有各大廠商針對性研發的硬體產品。

    從DX9時代開始,微軟的節奏就慢了下來

    但是隨著顯示卡市場在競爭中淘汰了越來越多的參與者,隨著NVIDIA和AMD兩家的寡頭局面形成。微軟作為作業系統的開發者,作為DirectX圖形規範的制定者,也不免需要越來越多地“照顧”到兩位硬體巨頭的需求,或者說開始在DirectX規範裡融入來自N、A兩家的獨家技術。

    2003年,NVIDIA推出了GeForce FX系列顯示卡,它最大的特徵有兩點。一是“吃螃蟹”首發了GDDR2視訊記憶體,二是在圖形渲染上提供高速但低精度的16bit與低速但高精度的32bit兩種工作模式。然而彼時的ATI卻看出了GeForce FX設計的缺點,他們捨棄了高溫高成本的GDDR2視訊記憶體,繼續使用GDDR一代視訊記憶體控制器,並在圖形渲染上創造性的使用了折中的24bit精度。

    很顯然,最終ATI的設計幫助他們取得了極大成功,也直接促使NVIDIA在後來的GeForce 6000系列上搞出了“大殺器”SLI技術。但是很少有人關注到這樣一個重點,由於NVIDIA和ATI兩家在DirectX 9時代的最初兩款產品在設計上實在是差異太大,最後逼得微軟不得不實際上為兩家顯示卡分別推出了一個DirectX版本——NVIDIA GeForce FX系列用DirectX 9.0a,而ATI Radeon 9800系列用DirectX 9.0b。這是顯示卡廠商第一次直接以他們自己的技術在PC平臺上影響到了DirectX規範的發展,而它實際上也就此改變了微軟與顯示卡晶片企業的關係。

    ATI Radeon HD4890,此卡的第一批貨在中國是一張難求

    正因為如此,到了DirectX 10的時代,統一渲染管線的設計很明顯更“合”NV的意,因此GeForce 8800系列得以早早登場,迅速搶佔了市場。而DirectX 10.1則更多融入了ATI(AMD)的需求,因此Radeon HD3650、HD3870,以及後來的HD4000系列強勢反攻,而NVIDIA那邊卻對這一代規範幾乎視若無睹。

    DX11時代最流行的就是測曲面細分效能,然而這也有顯示卡廠商的利益因素在裡面

    很顯然到了這個地步,DirectX與其說是微軟所提出的圖形技術規範,不如說其實已經是微軟、NVIDIA、AMD三家的博弈結果了。也正是因此,在此後的DirectX 11和DirectX 12中,我們就看到了更多更符合顯示卡廠商利益的技術設定,比如說對顯示卡效能消耗極大,能夠充分拉開高中低端顯示卡遊戲體驗差距的Tessellation(鑲嵌,也稱細分曲面)技術,實際上就來自於ATI在DX10時代的一項自研專案。又比如說現在大紅大紫的光線追蹤技術,其實好幾年前就已經出現在一些專業級的製圖顯示卡中,但遊戲領域最早則是由NVIDIA用他們自己的RT Core和Tensor Core硬體,以私有API的方式實現,此後才被納入了DirectX 12的DXR功能子集中,成為微軟官方規範的一部分。

    加量不改名,如今的DirectX對玩家更友好

    那麼,這意味著什麼呢?首先,由於DirectX不再是直接刺激顯示卡廠商更新換代的標準,這意味著一方面來說DirectX大版本換代的必要性本身就不似當年那般迫切了,而且還能一定程度上讓消費者“感到實惠”——比如說NVIDIA家的Maxwell、Fermi架構、AMD家的GCN 1.0~4.0,都可以透過軟體更新支援到DX12,這就一定程度上增強了各家的消費者粘性,對於兩家顯示卡廠商來說都是喜聞樂見的局面。

    而另一方面來說,由於DirectX標準的更新速度相對放慢,那麼對於遊戲開發者來說,也就不用再把很多精力花費在轉換到新技術和新標準上去,而是可以開發出能適應更多代硬體的作品,同時透過高配置的高解析度、高特效水平、物理運算的有無、同屏敵人(AI)數量等方式,來區分不同硬體配置的遊戲感受,實際上也比單純的“從DX8升級到DX9”更為可感。

    你所不知道的DirectX版本們

    與此同時必須要說明的一點就是,其實微軟在Windows 8到Windows 10的這幾年裡,也絕非守著已有的Direct X標準而沒做任何改動。事實上,在知名顯示卡資訊軟體GPU-Z的“Advanced”頁面,我們可以檢視到當前顯示卡所支援的DirectX標準的詳細資訊的。而就在這裡,赫然列出了很多人都不知道的一些DX近年來的更新版本號。

    微軟開發者網站上可以看到DX11~DX11.4的功能改變

    比如說在推出Windows 8.1時,微軟實際上將DirectX 11升級到了11.1版本,增加了諸如FMA(乘加計算)、半精度運算以及一大票強化渲染效率的新功能。而到了WIndows 10裡,DirectX 11又先後得到了11.3、11.4以及11.5三次更新,為只支援DX11的“老顯示卡”引入了部分源自Direct 12的功能,以提升它們的執行效率。

    源自Github上的微軟官方wiki頁面

    又比如說,Windows 10至今為止已經至少推出過十一個更新版本(從最早的正式版TH1到最新的20H2測試版),在這個過程中,DirectX 12雖未有過“版本號”層面上的變動,但微軟實際上先後五次對DX12的Shader Mode渲染引擎進行過更新,頻繁程度和更新幅度甚至超過DirectX 11時代。諸如DXR光線追蹤等功能,其實就是在這個過程中才被加入到DX12規範裡的。

    DXR1.1版光線追蹤,它是本次DirectX12 Ultimate的重要部分之一

    這也就是說,實際上微軟在近幾年裡其實是一直在對DirectX 12進行著持續的“小修小補”的,之所以沒有大張旗鼓地推出“DX13”,除了本身技術上變革並不算特別徹底之外,自然也是考慮到了對老卡的相容性以及DirectX當前的功能定位所致。事實上,啾臉最新的DirectX 12 ULtimate,也是可以完全相容NVIDIA家的RTX顯示卡的——只需要更新一下系統和驅動,光追使用者們就能體驗到免費的效能提升了,不得不說微軟確實是幹了一件大好事。

    畢竟那個由DirectX版本驅動顯示卡換代的時代已經結束,而如今的微軟似乎也更在乎服務好現有的玩家,而不是讓大家都去買新硬體了。

  • 中秋節和大豐收的關聯?
  • 隨著「抑鬱症」被主流媒體的廣泛提及,抑鬱症患者的生存環境是變好了,還是更惡劣了?