国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

API的—小步圖形工業(yè)的一大步管窺Directx?。保迸c通用計算技術(shù)

2009-10-27 10:22
微型計算機 2009年16期
關(guān)鍵詞:著色器開發(fā)者頂點

陳 可

從Directx 9到DirectX 10,微軟幾乎將API打破重來以構(gòu)建全新的渲染體系,Directx 10也成為了第一種影響硬件設(shè)計的圖形API——統(tǒng)一渲染架構(gòu)代替?zhèn)鹘y(tǒng)的分離渲染,從而賦予GPU更高的渲染效率和可編程能力,也為通用計算提供良好的基礎(chǔ),之后的DirectX10.1就屬于功能上的小升級。而到DirectX 11,微軟引入了更多的新技術(shù),但同時又保有DirectX 10.1的全部特性,換句話說,DirectX 11實際上就是DirectX 10.1的擴展集,所有DirectX 10.1硬件所遵循的API對于DirectX 11同樣適用。

對用戶而言,這樣的設(shè)計在兼容方面很有好處:無論軟件還是硬件,都可以完美地向后兼容?,F(xiàn)行的Directx 10游戲,在Directx 11環(huán)境下都可以正常運行。而對軟件開發(fā)者來說,包容的設(shè)計使他們能夠非常平滑地過渡到DirectX 11,而不需要像DirectX 9到DirectX lO過渡那樣突兀和漫長。這樣一來,軟件廠商可以直接轉(zhuǎn)入DirectX 11技術(shù)體系,這對于后續(xù)產(chǎn)品開發(fā)是非常有利的。不過,DirectX 11不僅只是簡單的升級,它帶來相當(dāng)多的新穎特性,比如引入通用計算著色器(Compute Shader),允許GPI以事更多的通用計算工作,而不僅僅是3D運算,這可以鼓勵開發(fā)人員更好地將GPU作為并行處理器使用。還有就是引入多線程渲染、提高GPU的工作效率t新增的鑲嵌技術(shù)(tessellation)可以幫助開發(fā)人員創(chuàng)建出更為細(xì)膩流暢的模型,實現(xiàn)高質(zhì)量實時渲染和預(yù)渲染場景。

首先我們來看DirectX 10體系的渲染架構(gòu),DirectX 10加/LGeometry Shader(幾何著色器,簡稱GS單元)設(shè)計'讓GPU可以直接處理模板陰影特效(Stencfl Shadows)、動態(tài)法向量圖(Dynamic cube maps)及位移貼圖(Displacement mapping)等操作——過去這些操作是由CPU來完成的。此外,Geometry Shader最高可支持1024個頂點處理,同時可把不必要的頂點數(shù)據(jù)刪除,這兩項功能使得繪圖運算將較以往更具效率。除了納入幾何著色器外,DirectX 10的渲染流程其實并沒有改變,頂點渲染與像素渲染依次進(jìn)行,只是在硬件層級上,渲染工作不再由獨立的頂點著色器、像素著色器進(jìn)行,而交給通用的統(tǒng)一著色器(或者說統(tǒng)一渲染單元)。

現(xiàn)在我們接著來看看DirectX 11的渲染管線。最引人注目的變化就是:在頂點渲染之后,DirectX 11新增了外殼著色器(Hull Shade~簡稱HS)、鑲嵌器(Tessellator)和域著色器(Domain Shader)三個新的管線;而在像素渲染環(huán)節(jié),DirectX 11則新增了計算著色器(Computer Shade,簡稱CS),這些新增的部分也就是DirectX 1l的關(guān)鍵所在。

在DirectX 11中,新增的Compute Shader(Cs)計算著色器擁有核心地位。與DXl0中引入的GSYh何著色器不同的是,CS并不是渲染管線的一部分,它的主要用途在于增強GPU的通用計算能力。

我們知道,現(xiàn)在的GPU能夠被應(yīng)用于某些通用計算工作,譬如在高并行計算應(yīng)用中,GPU就表現(xiàn)出十倍于CPU的卓越能力。對游戲開發(fā)者而言,經(jīng)常出于某種需要希望GPU能執(zhí)行通用計算指令,但以往的渲染結(jié)構(gòu)卻對GPU制造了諸多障礙——比如說,程序員可以在一個像素著色程序中強行加入通用算法,但卻無法隨意利用諸如樹形結(jié)構(gòu)之類的數(shù)據(jù)結(jié)構(gòu),這就給程序員帶來很大的麻煩。因為要在像素間共享數(shù)據(jù)的過程非常繁瑣,先繪制三角數(shù)據(jù)結(jié)構(gòu)、再加入貼圖是唯一的解決方案,但這將嚴(yán)重影響GPU的渲染性能。而在DirectX 11和CS著色器的幫助下,未來的游戲開發(fā)者將不再受困于此,他們可以直接越過復(fù)雜的數(shù)據(jù)結(jié)構(gòu)、并在這些數(shù)據(jù)結(jié)構(gòu)中運行更多的通用算法。而這些算法將由CS著色器專門負(fù)責(zé),不會給渲染單元帶來額外的負(fù)擔(dān)。

CS代碼可以做到高度靈活,它們可以支持隨機讀寫、不規(guī)則列陣(而不是簡單的流體或者固定大小的2D列陣)、多重輸出,并可根據(jù)程序員的需要直接調(diào)用單線程或多線程應(yīng)用。CS體系中擁有32Kb容量的共享寄存器和線程組管理系統(tǒng),具備可執(zhí)行無序Io運算的能力??傊?,CS可以帶來幾乎無限的新型應(yīng)用,關(guān)鍵在于開發(fā)者能夠在多大程度發(fā)揮它的功效。

在獲得靈活性的同時,CS也會帶來一些性能損失。由于單線程任務(wù)現(xiàn)在無法以像素為單位,所以這些線程將會喪失幾何集合功能。從技術(shù)上講:雖然CS程序依然可以利用紋理取樣功能,但是原本的“自動三線LOD計算”將會喪失自動功能,程序員必須指定LOD指令。另外,一些并不重要的普通數(shù)據(jù)的深度揀選l(depthculling)、抗鋸齒(anti-aliasiug)、a混合(aIpha blending)和其它運算不能在一個CS程序中被執(zhí)行。

CS可以為開發(fā)者帶來多種多樣的靈活渲染,這項先進(jìn)技術(shù)應(yīng)該正中游戲開發(fā)商們的下懷:它們的興趣大多是尋求先進(jìn)技術(shù)來增強游戲引擎,比如增強抗鋸齒性能或無規(guī)則透明度的性能,帶來更先進(jìn)的DeferredSh8ding(延遲著色)技術(shù)、后處理效果(post processing effect)等等,CS都可以大放異彩。除T_k述這些特殊的渲染應(yīng)用,游戲開發(fā)者可能還希望讓GPU完成諸如IKnnversekinematics,逆運動學(xué))、物理計算、人工智能計算等過去由CPU完成的通用計算,而利用CS在GPU I-執(zhí)行這些算法時,可以獲得非常理想的效率。

早在XBOX 360平臺上,ATI就帶來了一項名為“Tessellation(鑲嵌化)”的新技術(shù)。這項技術(shù)的用途就是提升硬件的利用效率、用最低的資源獲得最好的渲染效果——簡單點說,我們可以將它比作數(shù)據(jù)傳輸中的壓縮技術(shù)。

Tessellator可以將原始的圖形分成很多更小的圖形,然后它還可以將這些小圖形組合到—起、形成一個新的幾何圖形,這種幾何圖形更復(fù)雜,當(dāng)然也更為逼真。打個比亢Tessellator技術(shù)可以讓某個圖形變成立方體,并通過旋轉(zhuǎn)讓其從底部看起來像是個球形,而這兩者實際上都使用相同的數(shù)據(jù),達(dá)到節(jié)省資源的目的。

在DirectX 11系統(tǒng)中,Tessellation處理過程包括外殼著色器(Hull Shader,簡稱HS)、鑲嵌器(Tessellator)和域著色器(DomainShader)三個組件,其中HS外殼著色器負(fù)責(zé)接收瑣碎的圖形數(shù)據(jù)和資料,鑲嵌器(Tessellator)只負(fù)責(zé)分塊處

理,它根據(jù)HS的指令要求生成大批量的、確定數(shù)量的點,然后將數(shù)據(jù)傳送給域著色器(Domain Shader),再由它來將這些點轉(zhuǎn)換成3D處理中的頂點,最終就生成了相應(yīng)的曲線和多邊形。

如果開發(fā)者能夠嫻熟地運用鑲嵌化技術(shù),那么就能夠極大程度提升游戲性能、或者說在保有當(dāng)前性能的條件下顯著提升畫面品質(zhì)。這一點我們可以從下面的對比中看出來:在采用傳統(tǒng)高細(xì)節(jié)模型渲染時,原始模型需要動用巨量的三角形,數(shù)據(jù)量十分之大,最終獲得354fps的渲染性能。而采用低細(xì)節(jié)模型和Tessellation技術(shù)來生成相同的效果,所需的數(shù)據(jù)量與前者簡直不成比例,渲染性能可達(dá)到821.41fps,兩者對比非常懸殊。然而,鑲嵌化技術(shù)也不是萬能的:其使用的是一項完全固定的單元,不具備任何可編程能力,這就意味著開發(fā)者沒有絲毫回旋余地。這一點看起來與圖形技術(shù)的發(fā)展方向背道而馳。微軟之所以在DirectX 11中納入這項技術(shù),很大原因就是因為Tessellation確實具有顯著的效果,以至于微軟無法拒絕。

雙核處理器早已經(jīng)成為PC系統(tǒng)的標(biāo)準(zhǔn)配備,三核、四核更是進(jìn)入主流市場,然而,現(xiàn)在只有為數(shù)不多的游戲產(chǎn)品能夠?qū)Χ嗪似脚_提供良好的支持,原因在于為多核平臺編程十分困難,只有高水準(zhǔn)的開發(fā)者才能夠勝任,但顯然并不是所有的游戲公司都有這樣的一流好手。因此,直到今天為主,仍有很多數(shù)游戲都還只能在單線程下工作,即只能支持CPU的單核運作,其它核心的計算力無法得到充分發(fā)掘。

只要開發(fā)者采用DirectX 11作為開發(fā)平臺,那么代碼本身就能直接支持多核平臺,DirectX ll在底層接管了多核平臺的資源分派問題。DirectX 11預(yù)示著多線程游戲真正步人現(xiàn)實,我們才可以說多核心處理器被真正派上了用場。對于一套四核游戲平臺,當(dāng)某個渲染場景中有^像和它的三個鏡像,DirectX 11就會啟動四個線程進(jìn)行并行處理,效率顯然要比目前單線程處理的方式快上數(shù)倍!而更令人興奮的是:多線程技術(shù)不僅適用于DirectX ll平臺,它同時也能夠讓現(xiàn)有的DirectX10硬件受益。比如說基于DirectX 11開發(fā)的新款游戲,可以很好支持多線程,而當(dāng)它在DirectX 10硬件平臺上運行時,多核優(yōu)化的機能依然有效,前提是AMD和NVIDIA必須為各自的DXl0硬件開發(fā)出相應(yīng)的驅(qū)動軟件才行——就目前看來,這項工作的進(jìn)展非常順利。

猜你喜歡
著色器開發(fā)者頂點
過非等腰銳角三角形頂點和垂心的圓的性質(zhì)及應(yīng)用(下)
基于UE4 實時射線追蹤技術(shù)的研究與探討
基于Unity Shader石油泄漏現(xiàn)象模擬的研究
基于IMx6的opengl圖形著色器開發(fā)研究
關(guān)于頂點染色的一個猜想
iOS開發(fā)者調(diào)查
iOS開發(fā)者調(diào)查
栝樓產(chǎn)業(yè)開發(fā)者謝獻(xiàn)忠
基于可編程渲染管線的雷達(dá)圖像分層模型設(shè)計與實現(xiàn)
一個人在頂點