首頁 > 硬體

DirectX 10是什麼

2020-10-19 22:57:13

  在DirectX 10的圖形流水線體系中,最大的結構性變化就是在幾何處理階段增加了幾何渲染單元(Geometry Shader)。幾何渲染單元被附加在頂點渲染單元之後,但它並不像頂點渲染單元那樣輸出一個個頂點,而是以圖元作為處理物件。

  圖元在層次上比頂點高一級,它由一個或多個頂點構成。由單個頂點組成的圖元被 稱為“點」,由兩個頂點組成的圖元被稱為“線」,由三個頂點組成的圖元被稱為“三角形」。幾何渲染單元支援點、線、三角形、帶鄰接點的線、帶鄰接點的三角形等多種圖元型別,它一次最多可處理六個頂點。藉助豐富的圖元型別支援,幾何渲染單元可以讓GPU提供更精細的模型細節。

  幾何渲染單元賦予GPU自行創造新幾何物體、為場景新增內容的神奇能力。靈活的處理能力使GPU更加通用化,以往很多必須倚靠CPU才能完成的工作,現在完全可交由GPU處理。如此一來,CPU就有更多時間處理人工智慧、定址等工作。更令人驚喜的是,幾何渲染單元還讓物理運算的加入變得更簡單,DirectX 10可建立具備物理特性的盒子、模擬剛性物體,物理運算有望在它的帶領下逐漸走向普及。可以預見,藉助幾何渲染單元這一武器,顯示卡效能將產生質的飛躍,我們也將體驗到速度更流暢、畫面更精美、情節更細緻的遊戲。

改進的API和驅動功效

  我們知道,每一個遊戲角色、武器和景物在3D程式中都是一個Object(物件),而每一幀遊戲畫面就可能出現數百個Object。在顯示卡工作時,每一個Object都要從應用程式傳輸到API介面,然後通過顯示卡驅動程式到達顯示卡。在現有的DirectX體系中,任何一個Object進行操作或者渲染,都會導致系統資源的額外消耗,遊戲的Object越多,所耗費的傳遞時間就越長,造成的額外消耗也就越多。據統計,現有的DirectX 9圖形晶片在工作時,只有60%的效能用於運算3D程式,其餘40%的運算能力被白白浪費了!

  為了改變這一現狀,DirectX 10在渲染程式中採用了動態索引功能,Object被驅動程式自動載入,資料可以分類並連續輸入,這樣一來,單次傳輸的資料量就增加了,從而大大降低了額外耗費的時間。通過引入新的API及驅動程式,DirectX 10將圖形晶片的執行效能提升至80%。在不增加顯示卡硬體成本的前提下,顯示卡效能得到了大幅提升。

並行引擎支援技術

  為了提升多塊顯示卡共同作業的工作效率,微軟在DirectX 10中提出了“Parallel Engine Support(並行引擎支援)」的概念,它可以預先把兩個GPU需要的資料分別傳輸到兩塊對應的GPU當中,幀渲染將完全由驅動控制和調配,兩塊顯示卡的工作強度可以獲得很好的平衡。而在目前主從卡的運作模式中,主卡要對從卡框架、渲染數量進行判定,而引入並行引擎支援技術後,主從卡的概念將消失,兩塊甚至多塊顯示卡的共同作業威力將充分體現。

統一渲染架構

  DirectX 10最大的革新就是統一渲染架構(Unified Shader Architecture)。目前各類圖形硬體和API均採用分離渲染架構,即頂點渲染和畫素渲染各自獨立進行,前者的任務是構建出含三維座標資訊的多邊形頂點,後者則是將這些頂點從三維轉換為二維,這樣便可以通過視覺欺騙在螢幕上顯示出“三維」的場景。與此對應,GPU中也有專門的頂點渲染單元和畫素渲染單元來分別執行這兩項工作(由於工作量不同,這兩種渲染單元的數量不相等,頂點渲染單元通常只有畫素渲染單元的1/3~1/2)。在過去幾年中,這種分離式設計對計算機圖形領域的發展做出了一定的貢獻。

  不過,微軟認為這種分離渲染架構不夠靈活,不同的GPU,其畫素渲染單元和頂點渲染單元的比例不一樣,軟體開發人員在編寫程式碼時必須考慮這個比例,這就大大限制了開發人員自由發揮的空間。另外,不同的圖形遊戲或軟體對畫素渲染和頂點渲染的需求不一樣,導致GPU的運算資源得不到充分利用。為此,微軟在DirectX 10中提出了統一渲染架構的思想:在相同物理型別的渲染單元上執行不同型別的渲染程式。換句話說,只用一種渲染單元,讓它既能完成頂點渲染,也能完成畫素渲染,甚至還能實現幾何渲染。這樣一來,渲染單元可以得到最大程度的利用,減少了資源閒置的情形。目前,Xbox 360的顯示晶片Xenos就採用了統一渲染架構,該晶片一共有48個渲染單元,它們可全部用於頂點渲染或畫素渲染,沒有固定分配比例。此外,ATI也打算在新一代的R600晶片中採用統一渲染架構。

  當然,統一渲染架構也並非完美無瑕。相對頂點渲染來說,畫素渲染將面臨大規模使用紋理所帶來的材質延遲,這是統一渲染架構急待解決的問題。不過有一點可以肯定,在微軟的大力推動下,統一渲染架構是大勢所趨。


IT145.com E-mail:sddin#qq.com