適者生存!顯卡 DirectX API 進(jìn)化論
從多重材質(zhì)到T&L,從Shader programe到Unified Shader,在DirectX的影響下,圖形API走向了光柵化過程,實(shí)時(shí)演算圖像效果得以完善,有效的平衡了圖形運(yùn)算和虛擬現(xiàn)實(shí)的兩者之間供需矛盾。
號(hào)稱實(shí)現(xiàn)“一切圖形特效”的DX9C
整個(gè)DirectX發(fā)展命運(yùn)的節(jié)點(diǎn)一個(gè)是DirectX 7中T&L的引入,一個(gè)是DirectX 8中shader的引入。T&L的引入第一次將顯卡從一個(gè)單純的打印機(jī)變成了有主動(dòng)操作功能的圖形處理器,而shader的引入則將運(yùn)算能力這個(gè)無限可能的大門放置在了顯卡面前,透過運(yùn)算能力,人們終于可以比較準(zhǔn)確并且實(shí)時(shí)的操作紋理上像素的色彩,雖然在當(dāng)時(shí)已經(jīng)是達(dá)到了桌面圖形效果的極限,但是這些色彩離真實(shí)還相去甚遠(yuǎn)。這兩個(gè)劃時(shí)代的API都無法與DirectX 9.0C進(jìn)行比較,因?yàn)橹钡紻irectX 9.0C,光柵化的眾多特效才得以最終實(shí)現(xiàn)。
但是這樣就完美了么?不是的。每次DirectX從應(yīng)用程序那里接收到一條命令,它就需要先對這條命令進(jìn)行分析和處理,再向圖形硬件發(fā)送相對應(yīng)的硬件命令。由于這個(gè)分析和處理的過程是在CPU上完成的,這就意味著每一條3D繪圖命令都會(huì)帶來CPU的負(fù)載。這種負(fù)載給3D圖象帶來兩個(gè)負(fù)面影響:限制了畫面中可以同時(shí)繪制的物體數(shù)量;限制了可以在一個(gè)場景中使用的獨(dú)立的特效的數(shù)量。這就使得游戲畫面中的細(xì)節(jié)數(shù)量受到了很大的限制。而使圖像具有真實(shí)感的重要因素,偏偏是細(xì)節(jié)量。
雖然DX9C號(hào)稱可以顯然僅僅能夠?qū)崿F(xiàn)所有特效是遠(yuǎn)遠(yuǎn)不夠的,隨著圖形技術(shù)和硬件規(guī)格的快速發(fā)展,看似完美的DX9C很多矛盾逐漸顯露,程序員開始抱怨拮據(jù)的資源和不兼容的接口,更為讓人無法接受的是,更高階的特效實(shí)現(xiàn)往往需要成千上萬行的代碼,很多實(shí)例已經(jīng)趨于無法完成的危險(xiǎn)邊緣。
這是DirectX歷史上唯一一次半代更新就引起渲染大波的版本,DirectX 9.0c,大名鼎鼎的HDR技術(shù)誕生。
● DirectX 9.0c:非常好的光影渲染
以上諸多改進(jìn)相信很多人都不關(guān)心也不想知道,絕大多數(shù)人記住的只有一個(gè),那就是只有DX9C顯卡才支持HDR技術(shù),因?yàn)镠DR所帶來華麗的光影效果給所有人都留下了深刻的印象,那種從暗淡無光到流光溢彩的美好回憶,可以說是很少見的的!
HDR的全稱是High Dynamic Range,即高動(dòng)態(tài)范圍,是一種色彩存儲(chǔ)方式,在游戲用于存儲(chǔ)渲染和光照數(shù)據(jù)。HDR渲染可以用4句話來概括:1.亮的地方很亮;2.暗的地方很暗;3.亮暗部的細(xì)節(jié)非常非常明顯;4.所有光照為實(shí)時(shí)計(jì)算生成,可模擬人眼視網(wǎng)膜動(dòng)態(tài)改變明暗細(xì)節(jié)。
在DX9C之前,HDR已經(jīng)得到了廣泛應(yīng)用,一般有FP16 HDR(半精度浮點(diǎn)型)和INT32 HDR(整數(shù)型),但效果都不如人意,F(xiàn)P16的動(dòng)態(tài)范圍不夠大,而IN32的效率很低,因此這些HDR格式并未帶來震撼效果。而FP32 HDR(32bit浮點(diǎn)格式)的誕生則大大拓展了明暗度擴(kuò)展空間,使得游戲的光影效果有了質(zhì)的提升,當(dāng)年的《細(xì)胞分裂》、《FarCry》、《3DMark06》等一系列游戲開啟HDR后的畫面讓人驚訝不已!
關(guān)注我們
