多媒體新變革—DirectX 11技術(shù)前瞻
DirectX(以下簡(jiǎn)稱(chēng)DX)是微軟推出的多媒體API(Application Programming Interface,應(yīng)用程序接口),它最先源于一款游戲。十多年前,微軟開(kāi)發(fā)了一款名叫《獅子王》的游戲,它在康柏?cái)?shù)以萬(wàn)計(jì)預(yù)裝Windows操作系統(tǒng)的電腦上臨時(shí)更換配置后,就出現(xiàn)了頻繁死機(jī)的問(wèn)題。為了解決這種更換硬件而導(dǎo)致軟件不能使用的問(wèn)題,微軟在1995年9月推出了一種游戲程序接口,這就是DX 1.0。在經(jīng)歷了數(shù)個(gè)版本的鋪墊之后,DX成為了業(yè)界主流的API。目前DX 9/10已成為最常用的API,隨著DX 11初露端倪,讓人們看到了DX的新力量。
牛刀小試,DX 10.1承前啟后
其實(shí)IT業(yè)界剛剛進(jìn)入DX 10時(shí)代,它是Windows Vista上默認(rèn)的組件版本,采用了統(tǒng)一著色器架構(gòu)(顯卡的流處理單元既可進(jìn)行像素渲染運(yùn)算,也可進(jìn)行頂點(diǎn)運(yùn)算或其他更復(fù)雜的運(yùn)算)、128bit HDR高動(dòng)態(tài)范圍技術(shù)等,比DX 9顯卡更有效率,能提供更多游戲中的新視覺(jué)特效及更細(xì)膩逼真的畫(huà)面。
DX 10技術(shù)的發(fā)展持續(xù)不斷,自從微軟推出Windows Vista SP1,AMD推出HD3000/4000系列顯卡以來(lái),DX 10顯卡就分成了DX 10(以N卡為代表)和DX 10.1(以A卡為代表)兩個(gè)陣營(yíng)。DX 10.1可以說(shuō)是在DX 11尚未到來(lái)之前承前啟后的API,DX 10.1雖沒(méi)有帶來(lái)革命性的新特性,但它在DX 10的基礎(chǔ)上做了一些重要的完善、補(bǔ)充和升級(jí),如將原本DX 10中可選特性改為強(qiáng)制特性,將16位浮點(diǎn)紋理過(guò)濾升級(jí)為32位、支持4× MSAA(多重采樣反鋸齒)等。
在著色與紋理方面,DX 10.1將DX 10中的Texture Arrays(紋理陣列)改進(jìn)為Cube Map Arrays(立體貼圖陣列),將每個(gè)128bit頂點(diǎn)著色的數(shù)量從16個(gè)增加到32個(gè),并改進(jìn)了每個(gè)緩沖的單獨(dú)混合渲染性能,增加了可編程反鋸齒模式,讓程序員能夠更快速地實(shí)現(xiàn)此方面的編程,讓顯卡能更高效地完成實(shí)時(shí)動(dòng)態(tài)全局光照渲染及獲得更好的畫(huà)面效果。綜合來(lái)看,這些新特性對(duì)未來(lái)游戲具有可應(yīng)用性,很可能出現(xiàn)在DX 11中。
在DX 11尚未普及前,DX 10.1是游戲獲得更好特效的過(guò)渡選擇
更新?lián)Q代,DX 11技術(shù)掃描
隨著支持DX 10的顯卡普及,微軟在2008年已多次透露新一代游戲API DX 11的一些內(nèi)容——它實(shí)際上就是DX 10與DX 10.1的后續(xù)升級(jí)版,除了支持DX 10.1的所有功能外,還會(huì)加入一些新的特性和功能。
●順勢(shì)而為,SM5.0將現(xiàn)身
自從微軟在DX 8中首次推出Shader Model 1.0(著色器1.0,簡(jiǎn)稱(chēng)SM),引入像素著色器(Pixel Shaders,簡(jiǎn)稱(chēng)PS)和頂點(diǎn)著色器(Vertex Shaders,簡(jiǎn)稱(chēng)VS)技術(shù)后,SM就成為DX的重要組件。而在DX 10中,微軟進(jìn)一步推出了統(tǒng)一著色器架構(gòu),一舉改變了以前顯卡采用像素著色器和頂點(diǎn)著色器分離的架構(gòu),解決了GPU在進(jìn)行頂點(diǎn)著色時(shí)像素著色器單元就閑置,既浪費(fèi)資源又會(huì)造成性能瓶頸的問(wèn)題。并且,統(tǒng)一著色器架構(gòu)還可使GPU更加適合處理通用化任務(wù),讓程序員不必再為不同的著色器單元編寫(xiě)不同的執(zhí)行代碼,也不需要去顧慮不同著色器之間存在的差異,從而使開(kāi)發(fā)流程得到一定程度上的簡(jiǎn)化。
微軟雖沒(méi)有透露更多Shader Model 5.0的細(xì)節(jié),但可以肯定的是,微軟將繼續(xù)采用并改良這種架構(gòu),并將像素渲染、頂點(diǎn)渲染、幾何渲染的支持都升級(jí)到更強(qiáng)大的5.0版本,讓GPU可以同時(shí)對(duì)頂點(diǎn)、幾何以及像素著色進(jìn)行處理,而不必等待分別進(jìn)行,讓資源得以合理分配,保證整個(gè)架構(gòu)高效運(yùn)行。
●計(jì)算著色,更符合通用計(jì)算潮流
通用計(jì)算正成為未來(lái)API發(fā)展的一種主流趨勢(shì),微軟明確表示不支持開(kāi)放性的通用并行計(jì)算標(biāo)準(zhǔn)OpenCL。微軟準(zhǔn)備在DX 11中整合類(lèi)似的Compute Shader(計(jì)算著色)技術(shù)來(lái)與OpenCL一決雌雄。關(guān)于OpenCL技術(shù)的詳情,請(qǐng)參見(jiàn)本報(bào)2009年第1期D14版文章。
Compute Shader包括線程間數(shù)據(jù)通信、一整套隨機(jī)訪問(wèn)和流式I/O操作基本單元等組件,能加快和簡(jiǎn)化圖像和后期處理效果等已有技術(shù),也為DX 11級(jí)硬件的新技術(shù)做好了準(zhǔn)備,對(duì)于游戲和應(yīng)用程序開(kāi)發(fā)有著很重大的意義。
從微軟的介紹來(lái)看,Compute Shader可以對(duì)圖像進(jìn)行后期處理,然后輸出最終圖像。在Compute Shader的幫助下,程序員可直接將GPU作為并行處理器加以利用。由此,GPU將不僅具有3D渲染能力,也具有其他的運(yùn)算能力。它可被廣泛應(yīng)用在圖像和后期處理、光線追蹤與折射、物理計(jì)算、人工智能等領(lǐng)域。可以提供更多通用算法、并行處理模型,并提供對(duì)不同廠商硬件的全面支持。
●強(qiáng)化渲染,Tessellation發(fā)力
為了應(yīng)對(duì)游戲或其他3D程序?qū)θ切魏投噙呅卧絹?lái)越多的需求,微軟在Direct3D(D3D)11中新增了Hull Shader(外殼著色)、Tessellation(鑲嵌化)和Domain Shader(域著色)等三個(gè)渲染流程,使渲染管線變得更加豐富和復(fù)雜,從而能以更小的代價(jià)提供更平滑的表面輪廓和更豐富的動(dòng)畫(huà),提高不同硬件配置的畫(huà)質(zhì)伸縮性以及各方面的性能。
這里我們要重點(diǎn)關(guān)注的是Tessellation技術(shù)。它最早被用于XBOX360上,后來(lái)又被AMD移植到R600之中,并在DX 10.1中獲得了認(rèn)可。在沒(méi)有Tesse
llation之前,要想保證人物頭部的真實(shí)度,需要很多的三角形來(lái)構(gòu)建此模型,這必將大量占據(jù)數(shù)據(jù)帶寬。而隨著Tessellation技術(shù)的應(yīng)用,讓GPU能夠根據(jù)3D模型中已有的頂點(diǎn),按需求進(jìn)行插值,將一個(gè)多邊形拆分成為多個(gè)多邊形(如將一個(gè)大的模型分成多個(gè)三邊形、四邊形或者六邊形)。并且,這個(gè)過(guò)程可編程控制,從而能更好地解決效率和效果的矛盾。