Drect3D 10.1: 新增內容
讓我們從開始把事情弄清楚;這個新的API所帶給我們的這些新事情並不具革命性。Direct3D 10是一次大的徹底改變,也像往常一樣雖然非常的努力但仍不可避免的有些輕微的錯誤。因此Direct3D 10.1就被視為增加更新與修正的版本,藉由新增的部分功能,來減少舊版的限制。
所有改進的部分可以總結在3個方面︰
- 為了限制在多重執行命令誤差範圍,故採用更嚴格的規範
- 為數不多的新功能
- 清楚的焦點在運算品質以及準確度,關於反鋸齒的部分
更加嚴謹的規格
微軟已經利用Direct3D 10.1的優勢使它的API在特殊情況下更有規矩;因此它在Direct3D 10之下是唯一可以選擇支援FP32材質濾鏡(雖然來自兩個製造商全部的Direct3D 10 顯示晶片都已經支援它),相似的情況下,當它在Direct3D 10內是唯一的選擇時,則在16位元完整緩衝區混合是可以完成編程的。
微軟也由於運算精確度而強化了規格,無論在調和還是在Shader的運作過程中。如此一來,許多動作(加、減、乘和除)就與IEEE-754規範一致,有一點必須承認的,就是這對遊戲玩家來說其實沒有啥令人振奮的,但是將肯定使喜歡GPGPU的研究人員滿意。
新功能
當涉及新API外掛系統時,微軟設法使它們成為合理的做法。開發者仍然吸收透過Direct3D 10所提供的新功能並研究要如何能使用這些功能,事情就是這樣。因此毫無疑問的,這讓開發者在每一年都讓他們被淹沒在這些新的功能之下。
首先,在這我們發現CubeMap arrays。在Direct3D 10時,微軟就已經提供材質陣列(Texture Arrays),材質表可以直接在著色器裡被排序製作索引。最初,材質陣列(Texture Arrays)類似於3D貼圖材質已經有好一段時間這樣子了,但是實際上他們彼此的行為是非常不同的。所以,當存取某一類3 D貼圖材質的元素時,濾鏡在不同的階層之間出現是正常的。反之,貼圖材質儲存在列表裡的話則彼此之間可能不會有任何關連。因此這就不會有任何的濾鏡在相鄰的元素之間。而且當使用材質轉換(mipmapping)時,一個3 D貼圖材質從三分辨為2等份,這不是有貼圖材質陣列的情況;如果把不同的貼圖材質壓縮試著將它縮小,其結果卻是會保持大小還是不變。
10.1 Direct3D 增加支援了Cube Maps表讓那些材質陣列變得一般化去支援那些質地陣列在增加對而,直到現在也只有1 D和2 D貼圖材質表能被支援。
CubeMap arrays
Shader核心挺聰明的, Direct3D 10.1發佈了Shader Model 4.1,它也帶來了幾件新的東西例如Gather-4就是一個,其實它的另一個名字就是Fetch-4 (ATI前世代的顯示卡有提到過這個東西)。我們來幫助你迅速恢復記憶好了:這個指令允許在單一通道貼圖材質只有單一材質存取時間中檢索4個未篩選的元素,這就允許了一個更有效率且個性化的過濾器在Shader內執行。
Fetch4
另外一個增加到Shader Model 4.1的指令是使指示使它能在材質取樣時恢復所有細節等級(mipmap:變頻解碼階層)。微軟也已經升級某些限制了,特別是在頂點Shader輸入輸出的數量上我們可以從我們從128位元到32位元的(4個浮點單一精度)中的16個向量。
D3D 10.1管道
關於漸層,我們已經提及新支援的格式:Int.16,但是這不是唯一的新事情; Direct3D 10.1現在支援在超過一個緩衝區中當同時著色作業時提供獨立漸層模式一個緩衝區(MRT︰多重著色目標)。