DirectX 10是什麼

  在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

統一渲染結構

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

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

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

網友評論