顯卡DirectX技術發展詳解
DirectX是一種應用程序接口(API)是計算機計算圖形的一種規則,相當于一個通用編譯器。
DirectX并不是一個單純的圖形API,它是由微軟公司開發的用途廣泛的API,它包含有Direct Graphics(Direct 3D+Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup、Direct Media Objects等多個組件,它提供了一整套的多媒體接口方案。只是其在3D圖形方面的優秀表現,讓它的其它方面顯得暗淡無光。
DirectX 1.0
第一代的DirectX很不成功,推出時眾多的硬件均不支持,當時基本都采用專業圖形API-OpenGL,缺乏硬件的支持成了其流行的最大障礙。
DirectX 1.0版本是第一個可以直接對硬件信息進行讀取的程序。它提供了更為直接的讀取圖形硬件的性能(比如:顯示卡上的塊移動功能)以及基本的聲音和輸入設備功能(函數),使開發的游戲能實現對二維(2D)圖像進行加速。這時候的DirectX不包括現在所有的3D功能,還處于一個初級階段。
DirectX 2.0
DirectX 2.0在二維圖形方面做了些改進,增加了一些動態效果,采用了Direct 3D的技術。這樣DirectX 2.0與DirectX 1.0有了相當大的不同。在DirectX 2.0中,采用了“平滑模擬和RGB模擬”兩種模擬方式對三維(3D)圖像進行加速計算的。DirectX 2.0同時也采用了更加友好的用戶設置程序并更正了應用程序接口的許多問題。從DirectX 2.0開始,整個DirectX的設計架構雛形就已基本完成。
DirectX 3.0
DirectX 3.0的推出是在1997年最后一個版本的Windows95發布后不久,此時3D游戲開始深入人心,DirectX也逐漸得到軟硬件廠商的認可。97年時應用程序接口標準共有三個,分別是專業的OpenGL接口,微軟的DirectX D接口和3DFX公司的Glide接口。而那時的3DFX公司是最為強大的顯卡制造商,它的Glide接口自然也受到最廣泛的應用,但隨著3DFX公司的沒落,Voodoo顯卡的衰敗,Glide接口才逐漸消失了。
DirectX 3.0是DirectX 2.0的簡單升級版,它對DirectX 2.0的改動并不多。包括對DirectSound(針對3D聲音功能)和DirectPlay(針對游戲/網絡)的一些修改和升級。DirectX 3.0集成了較簡單的3D效果,還不是很成熟。
DirectX 5.0
微軟公司并沒有推出DirectX 4.0,而是直接推出了DirectX 5.0。此版本對Direct3D做出了很大的改動,加入了霧化效果、Alpha混合等3D特效,使3D游戲中的空間感和真實感得以增強,還加入了S3的紋理壓縮技術。
同時,DirectX 5.0在其它各組件方面也有加強,在聲卡、游戲控制器方面均做了改進,支持了更多的設備。因此,DirectX發展到DirectX 5.0才真正走向了成熟。此時的DirectX性能完全不遜色于其它3D API,而且大有后來居上之勢。
DirectX 6.0
DirectX 6.0推出時,其最大的競爭對手之一Glide,已逐步走向了沒落,而DirectX則得到了大多數廠商的認可。DirectX 6.0中加入了雙線性過濾、三線性過濾等優化3D圖像質量的技術,游戲中的3D技術逐漸走入成熟階段。
DirectX 7.0特性:硬件T&L
在DirectX 5.0以前,這個被微軟整合在Windows操作系統內部的圖形API并沒有現在這么風光,當時的顯卡和游戲都以支持OpenGL和Glide(3DFX的專用API)為榮,DirectX在持續不斷的改進與發展,但始終都沒能超越對手,一方面基于DOS系統的Windows還不夠強大,另一方面微軟的影響力還沒到左右游戲開發商和芯片廠商的地步。
直到Windows 95發布之后,全新的圖形界面讓整個業界都興奮不已,90%的占有率直接帶動了整個行業的需求,也迫使全球軟硬件廠商都不得不向其靠攏。此時整合 Win95整合的DirectX 6.0也有了足夠的實力與OpenGL/Glide分庭抗力,在技術特性不輸與人的情況下,DirectX的影響力與日劇增。
● DirectX 7.0確定權威:核心技術T&L
DirectX 7.0是一次革命性的改進,其最大的特色就是支持Transform & Lighting(T&L,坐標轉換和光源)。
3D游戲中的任何一個物體都有一個坐標,當此物體運動時,它的坐標發生變化,這指的就是坐標轉換;3D游戲中除了場景+物體還需要燈光,沒有燈光就沒有3D物體的表現,無論是實時3D游戲還是3D影像渲染,加上燈光的3D渲染是最消耗資源的。
基于T&L技術的演示Demo
在T&L問世之前,位置轉換和燈光都需要CPU來計算,CPU速度越快,游戲表現越流暢。使用了T&L功能后,這兩種效果的計算用顯卡核心來計算,這樣就可以把CPU從繁忙的勞動中解脫出來,讓CPU做他該作的事情,比如邏輯運算、數據計算等等。換句話說,DX7顯卡用T&L渲染游戲時,即使沒有高速的CPU,同樣能能流暢的跑3D游戲。
DirectX 8.0特性:像素和頂點管線
● DirectX 8.0:引入像素和頂點兩大渲染管線
面向圖形計算,讓GPU逐漸找到了自己的方向,那就是給予用戶更真更快地視覺體驗,但是GPU架構也遇到一些問題亟待解決。首要問題就是,要實現更加復雜 多變的圖形效果,不能僅僅依賴三角形生成和固定光影轉換,雖然當時游戲畫面的提高基本上都是通過大量的多邊形、更復雜的貼圖來實現的。
但后期的發展中,頂點和像素運算的需求量猛增。每個頂點都包含許多信息,比頂點上的紋理信息,散光和映射光源下表現的顏色,所以在生成多邊形的時候帶上這些附加運算,就可以帶來更多的效果,但這也更加考驗頂點和像素計算能力。
2001年微軟發布了DirectX 8.0,一場新的顯卡革 命開始,它首次引入了ShaderModel的概念,ShaderModel就相當于是GPU的圖形渲染指令集。其中像素渲染引擎(Pixel Shader)與頂點渲染引擎(Vertex Shader)都是ShaderModel 1.0的一部分,此后每逢DirectX有重大版本更新時,ShaderModel也會相應的升級版本,技術特性都會大大增強。
與DX7引入硬件T&L僅僅實現的固定光影轉換相比,VS和PS單元的靈活性更大,它使GPU真正成為了可編程的處理器,時至今日DX11時代ShaderModel都在不停地更新,以便渲染出更逼真更完美的畫面。這意味著程序員可通過它們實現3D場景構建的難度大大降低,但在當時來說可編程性還是很弱,GPU的這一特性還是太超前了。
DX8動態光影效果展示:變色龍和不同角度的人臉
DirectX 8.0當中的Pixel Shader和Vertex Shader的引入,使得GPU在硬件邏輯上真正支持像素和頂點的可編程,反映在特效上就是動態光影效果,當時波光粼粼的水面都是第一次展現在玩家面前。
但是DX8的普及之路并不順暢,主要是因為當時的DX8顯卡都定位太高,NVIDIA和ATI雙方都沒有推出過低端DX8顯卡,熱賣的產品都是DX7,直到DX9誕生之后,雙方才把昔日高端的DX8顯卡當作低端產品處理。
DirectX 9.0特性:高精度渲染
● DirectX 9.0:高精度渲染時代來臨
2002年底,微軟發布DirectX 9.0,如果從技術規格上看,DX9似乎沒有DX7和DX8那種讓人眼前一亮的革命性技術,它只是將ShaderModel版本從1.0升級到2.0而 已。其實不然,此次ShaderModel指令集的改進讓圖形渲染畫質提高到了新的水平。
首先,PixelShader 2.0具備完全可編程架構,能對紋理效果即時演算、動態紋理貼圖,還不占用顯存,理論上對材質貼圖的分辨率的精度提高無限多;另外PS1.4只能支持28 個硬件指令,同時操作6個材質,而PS2.0卻可以支持160個硬件指令,同時操作16個材質數量,新的高精度浮點數據規格可以使用多重紋理貼圖,可操作 的指令數可以任意長,電影級別的顯示效果輕而易舉的實現。
3DMark03中的最后一個場景就是DX9渲染,讓人眼前一亮
其次,VertexShader 2.0通過增加頂點指令的靈活性,顯著的提高了老版本的頂點性能,新的控制指令,可以用通用的程序代替以前專用的單獨著色程序,效率提高許多倍;增加循環 操作指令,減少工作時間,提高處理效率;擴展著色指令個數,從128個提升到256個。
Radeon 9700所提供的HDR Demo
另外,增加對浮點數據的處理功能,以前只能對整數進行處理,這樣提高渲染精度,使最終處理的色彩格式達到電影級別。突破了以前限制PC圖形圖象質量在數學上的精度障礙,它的每條渲染流水線都升級為128位浮點顏色,讓游戲程序設計師們更容易更輕松的創造出更漂亮的效果,讓程序員編程更容易。