DirectX 10 是 Windows Vista 中包含的新技術之一。它是一個整合的軟體組件作業系統,保證了電腦硬體(卡
顯示卡、聲卡等)和許多應用程式。自 Windows 95 1.0 版本以來,DirectX 主要引起 3D 遊戲玩家和開發人員的興趣。 DirectX 10 被 Microsoft、ATI 和 nVidia 視為一項突破
主要技術。選單上:更多像素著色器、頂點著色器、幾何著色器。你說的是「著色器」嗎?
巴巴德拉 3D
為了充分整合 DirectX 10 相對於前幾代產品的優勢,必須從廣義上了解 3D 渲染是什麼。總而言之,三維場景是一個簇
連接在一起形成幾何結構的點。這些點,多邊形的頂點,我們稱之為“頂點”
('頂點',用英語講)。一旦
形成幾何結構,應用紋理。紋理可以是顏色、設計、照片、圖案…都沒關係。最後,添加效果。
3D 場景只不過是由線條連接在一起的巨大點群(來源:nVidia 技術演示)。
添加紋理,並在“頂部”添加效果:著色器。某處的那張臉就是他們(圖片來源:nVidia Tech Demo)。小比較:想像一下您使用電線連接空間中的八個等距點。你得到一個立方體。在立方體的每一側放置一塊您選擇的布料,它就是一個紋理。拿
噴霧並用水噴灑織物。在某些地方,織物會變色並變暗。在其他地方,它可以變得透明。在水的重量下,織物甚至會變形。那些水滴
你噴了,這就是效果。這些 3D 效果有一個名稱:著色器。他們幾乎可以做任何事。
這裡,紋理很少,著色器很多(來源:ATI 技術演示)。
什麼是著色器?
Shader是程式設計師編寫的一段程式碼,經過DirectX解釋,然後由顯示卡驅動程式解釋,就會顯示出效果。著色器在專業領域已經存在了近三十年。
Pixar 是在著色器開發及其在 3D 動畫中的應用方面投入大量精力的公司之一。但要即時計算著色器,我們的顯示卡必須
配備專用於其處理的計算單元。完全有可能讓處理器 (CPU) 計算著色器,但考慮到所獲得的性能,視頻遊戲開發人員從未使用過這種方法。我們不得不等到 2000 年 DirectX 8 的發布日期、2001 年 GeForce 3 的發布日期和
Radeon 8500 和 2002 首次在電玩遊戲中使用著色器。從那時起,它們就成為戰爭的後盾。對於遊戲開發者來說,掌握著色器編寫意味著創建遊戲
總是更美麗。在 DirectX 9 出現之前,有兩種類型:頂點著色器和像素著色器。
圖片來自 DirectX 10 下的 Call of Juarez 遊戲(資料來源:Techland)。
Les 像素著色器
將像素著色器視為應用於一組像素的效果。例如,波浪可以由一些移動的多邊形組成,開發人員向其中添加了許多像素著色器。
因此,泡棉、波浪、變形、水的不同透明度......一切都可以透過像素著色器來計算,現在想像一下沒有像素著色器的情況。 3D引擎必須產生大量的頂點,創建複雜的幾何結構,應用無數的紋理並計算運動
最終的結果令人失望:海洋沒有任何幾何意義。優秀的程式設計師能夠使用著色器重新創建任何視覺效果。
頂點著色器
顧名思義,頂點著色器作用於頂點。這是顯示卡修改其設定的能力。根據程序,頂點可以改變顏色,
紋理,甚至空間定位。它是應用於幾何表面的修改。在 DirectX 9 下,頂點著色器受到大小限制。創建或刪除的每個頂點都是
由CPU計算。 GPU(圖形處理器)無法刪除或建立它們。 CPU和GPU之間的資訊交換是激烈的。使用DirectX 10,情況發生了變化,幾何著色器出現了。性。
角色的臉。這就是我們最終使它們富有表現力的方式。
《半條命 2:第 1 章》,在 DirectX 9 下(資料來源:Valve)。
DirectX 10 下的《軍團要塞 2》(資料來源:Valve)。
Les 幾何著色器
基元是簡單的幾何形狀。這可以是一個點、一條線、一個三角形……我們所說的幾何著色器正是圖形處理器處理這些的可能性
圖元,即一組頂點。首先,CPU 主動創建幾何形狀。然後,GPU修改圖元,然後直接對幾何形狀作為一個整體進行工作,而不再
著色器計算單元可以逐點複製這些形狀、建立新形狀或刪除它們。在 DirectX 9 中,與所有先前的版本一樣,這是不可能的。使用 DirectX 10 和幾何
著色器方面,微軟希望顯著提高幾何運算的效能,並為開發人員提供創建更複雜的 3D 場景的能力。從短期來看,這並不一定意味著遊戲
更漂亮,但更快。
來自 nVidia 技術演示的複雜場景,它使用像素著色器、頂點著色器和幾何著色器。 CPU利用率在40%到50%之間波動。因此CPU仍然
一半的資源用於執行所有其他任務:人工智慧管理、聲音物理等。nVidia 產品經理 Stéphane Quentin 總結:’如果我們以即時戰略遊戲為例,例如《最高指揮官》,數百個
單位同時顯示在螢幕上。處理器計算每個單元的幾何訊息,然後將其發送到GPU。當 DirectX 10 補丁可用時,CPU 將不再載入這些補丁
幾何計算。 GPU 將直接處理它」。優點是 GPU 執行此類操作的速度大約快十倍。 《飛行模擬器》也是如此。通常,這個遊戲需要很少的效果
像素著色器,但其幾何要求非常巨大。飛行模擬器X也將進行修補以在 DirectX 10 中運作。
什麼是統一架構?
對於顯示卡製造商來說,這涉及在 GPU 中整合運算單元,能夠以無差別的方式處理所有類型的著色器。具體來說,顯示卡
DirectX 9 包括專用於像素著色器的計算單元和其他用於頂點著色器的計算單元。問題是這種「權力分立」可能會變成瓶頸
勒死。事實上,如果 3D 場景需要在像素著色器上進行大量工作,但需要很少的頂點著色器工作,則一個計算單元正在全速工作,而另一個計算單元卻在忙碌。例子
AMD 技術經理 Lars Weinand 的選擇非常有說服力。想像代表海上一艘船的 3D 場景。未套用像素著色器
僅在計算頂點著色器後。如果頂點著色器計算單元已滿,並且全速運行,那麼像素著色器單元在這段時間內在做什麼?他們在等待。優點
統一的架構意味著所有運算單元都能夠處理頂點、像素和幾何著色器。所有單位都在滿載運轉。產量高得多。ATI 在設計為 Xbox 360 提供動力的 GPU 時已經選擇使用統一架構。
全部都在一個統一的架構上。在 nVidia,情況也是如此。但這不應該得出微軟強迫GPU製造商修改產品的結論。 ATI 或 nVidia 完全有可能創建
專用著色器計算單元的 DirectX 10 卡。
再見向後相容性!
DirectX 10 無疑是自 2000 年版本 8 以來最重要的更新。更多效果,更真實,影像中顯示更多物體,更多
裝飾物理學。著色器變得瘋狂。但如今,Windows XP 下的 DirectX 9 顯示卡在任何情況下都無法運行 DirectX 10 遊戲… Windows Vista 下的同一款顯示卡則無法執行
更多! 因此,一旦第一批 DirectX 10 遊戲投入商用,不耐煩的遊戲玩家將別無選擇,只能投資相容的 GPU。 ATI 剛剛宣布
新產品(五個用於桌上型電腦的 GPU,四個用於筆記型電腦),並且 nVidia 幾個月來一直在行銷其兼容 DirectX 10 的 GeForce 8000,同樣,創始人正準備向其合作夥伴提供 GPU。
對於筆記型電腦,GeForce 8M。第一批 DirectX 10 遊戲將於夏季發布。