2、geometry shader(幾何著色器)功能
對于DirectX 9和DirectX 10的區別, DirectX 10將利用DirectX 10來克服他們使用DirectX 9所面臨的傳統限制。例如,geometry shader(幾何著色器)功能將使得游戲可以加速游戲的數學運算性能,諸如在GPU上進行物理運算。
在過去的DX9中,Vertex Shader每一次運行只能處理一個頂點的數據,并且每次只能輸出一個頂點的結果。在整個游戲場景中,繪制的幾何圖形的任務量非常龐大,如果僅僅依靠Vertex Shader單一來完成,效率會極其低下。而更致命的是VS無法單獨生成或重組多邊形,所以在以往只有VS跟PS的GPU中,生成一個模型往往需要CPU的“大力支持”。
DX10中的Geometry Shader改變了這點。它的作用就是對每個Vertex數據臨近的數據進行Vertex函數處理。這種函數處理可以快速的把模型類似的頂點結合起來進行運算。雖然其操作不會象Vertex Shader那樣的進行完整的幾何轉換操作,只是處理器單個頂點的相關函數操作,但是這種操作卻可以確定整個模型的物理形狀,這將大大加速處理器速度。基于此特性,Geometry Shader可以根據頂點的信息來批量處理幾何圖形,對Vertex附近的數據進行函數處理,快速繪制出新的多邊形。然后再通過steam out將這些結果傳遞給其他Shader或buffer,使得CPU可以從原本復雜龐大的多邊形運算中解放出來。現在可以讓GPU直接處理細微的粒狀效果,如煙霧和爆炸效果等(在這之前這一任務通常交由CPU來完成)。而由于GS的性能要比CPU高出許多,同屏下能夠渲染的粒子數量也就更多,所以可以預計煙霧跟爆炸的效果會比以往更為震撼。你可以期待GPU進行更多的游戲運算,這樣將產生更多動態的場景,而減少數據交換信息意味著場景具有更復雜的幾何和多樣性。而游戲將更加漂亮,因為它們將有更加復雜的模型,更加細致的物體,或者說同一屏幕上更多的物體,而由于結合了更加復雜的物理,視覺效果將更加復雜,更加真實。例如流動的水,微風吹拂的葉子,這些都將是互動的。當你在樹林中行走時,被碰到的樹枝將分到兩邊,而在戰斗場景中穿行將有煙霧彌散效果,所有這些結果將更加真實,并呈現出更加愉悅的游戲體驗。
3、運算效率更高
DirectX 10另一個最令人注目的改進就是可以為API節省計算開銷(API overhead)。所謂API overhead就是游戲在處理畫面上的每一個物體(object)時(比如人物、巖石等等),都需要先將這些object傳送至API,然后再由API傳給驅動程序,而這個過程都需要CPU做出處理。當 Object 越多(每一幀畫面通常超過幾百個),對CPU的負擔就越重,所需要消耗的處理時間就越長從而構成瓶頸。而之前DirectX 9就存在API overhead太大造成CPU資源占用率過高的弊病,因為DirectX 9每使用一個object都需要CPU為其做資源確認。
而全新的DirectX 10針對這方面作出了改善,采用了全新設計改良的Validation機制。現在只有在該object生成時,才需要CPU做確認,此后在使用Object時就不需要再次確認了,從而大幅降低CPU的負擔。簡而言之就是DirectX 10可以有效減少CPU處理3D物體的時間,所以現在每一幀畫面可以擁有更豐富的3D物體(無論是樹木、貼圖還是人物)。而CPU被釋放出來的空余資源還可以讓制作者用于其它諸如物理、人物運動以及AI等方面的計算。DirectX 10還帶有一個真正的整數指令集,可以盡可能完成更多的尋址計算,更多的數據打包和解包;當然這些功能并不會創造出一些新的畫面特效,但它允許開發人員在GPU中高效的完成更為智能、復雜的渲染工作!