Share via


2008 年 11 月 Direct3D 11 Tech Preview 的新功能

此版本的 Direct3D 11 包含新功能、工具和檔。

項目 描述
鑲嵌
Direct3D 11 提供額外的管線階段,以支援高階基本類型的 即時鑲嵌 。 透過可廣泛程式化的功能,這項功能允許許多不同的方法來評估高階表面,包括使用近似技術、Bezier 修補程式、自適性鑲嵌和位移對應的細分表面。 這項功能僅適用于 Direct3D 11 類別的硬體,因此若要評估這項功能,您必須使用參考轉譯器。 如需作用中的鑲嵌示範,請參閱透過範例瀏覽器取得的 SubD11 範例。
計算著色器
計算著色器是與 Direct3D 11 管線無關的額外階段,可在 GPU 上啟用一般用途運算。 除了統一著色器核心所提供的所有著色器功能之外,計算著色器也支援透過 Unordered Access Views、執行執行緒群組內的共用記憶體集區、同步處理基本類型、不可部分完成運算子,以及許多其他進階資料平行功能對資源的散佈讀取和寫入。 此版本中已啟用 Direct3D 11 計算著色器的變體,可在 Direct3D 10 類別硬體上運作。 因此,可以在實際硬體上開發計算著色器,但需要更新的驅動程式。 Direct3D 11 計算著色器的完整功能適用于 Direct3D 11 類別硬體的支援,因此為了評估您需要使用參考轉譯器的完整功能,直到有這類硬體可用為止。 如需運作中的計算著色器示範,請參閱可透過範例瀏覽器取得 的 HDRToneMappingCS11 範例。
多執行緒轉譯
Direct3D 11 中 Direct3D 10 的主要 API 差異在於新增 延後的內容,可擴充執行散發至多個核心的 Direct3D 命令。 延後內容會擷取和組合動作,例如狀態變更,以及繪製可在稍後在實際裝置上執行的提交。 藉由在多個執行緒上使用延後內容,應用程式可以將 Direct3D11 執行時間所需的 CPU 額外負荷分散到多個核心,以便更妥善地使用使用者的機器組態。 這項功能可用於目前的 Direct3D 10 硬體以及參考轉譯器。 如需 API 使用方式的示範,請參閱透過範例瀏覽器取得的多 執行緒Rendering11 範例。
動態著色器連結
為了解決對效能造成著色器特製化時所見的組合性暴增問題,Direct3D 11 引進了一種有限的執行時間 著色器連結 形式,可在應用程式執行期間提供近乎最佳的著色器特製化。 將著色器指派給管線時,藉由在著色器程式碼中指定特定函式的實作,讓驅動程式快速內嵌原生著色器指令,而不是強制驅動程式使用新的組態將中繼語言重新編譯成原生指令來達成。 著色器開發是透過引進 HLSL 的類別和介面來公開。 如需示範,請參閱可透過範例瀏覽器取得的 動態著色器連結 11 範例。
Windows 進階轉譯器 (WARP)
此 SDK 可透過 Direct3D 11 取得,最後也透過 Direct3D 10.1 提供,WARP 是一種快速、多核心縮放轉譯器,完全符合 Direct3D 10.1 規範。 利用這項技術就像在裝置建立中傳遞D3D_DRIVER_TYPE_WARP旗標一樣簡單。
Direct3D 9 硬體上的 Direct3D 10 和 Direct3D 11 (D3D10 層級 9)
此 SDK 可透過 Direct3D 11 取得,最後也透過 Direct3D 10.1 提供,Direct3D API 可以鎖定大部分的 Direct3D 9 硬體,以及 Direct3D 10、Direct3D 10.1 和 Direct3D 11 硬體。 這可藉由提供功能層級機制,根據功能將硬體分組為六個類別:9_1、9_2、9_3、10_0、10_1 和 11_0。 如果卡片與該層級完全相容,且每個層級都是其下方的嚴格超級層級,則卡片只會符合功能層級。 功能會以最少的方式模擬,以確保不會遇到未預期的效能。 因此,Direct3D 9 層級目標無法使用幾何著色器等功能。
執行時間二進位檔
Direct3D 11 技術預覽中提供的所有執行時間二進位檔都會隨 SDK 一起安裝,並標示為「Beta」元件 (,也就是D3D11_beta.DLL) 。 所有 Beta 標籤的元件都是時間型元件。 若要建立專案來評估這些新元件,您必須連結至其相等的 Beta 標籤匯入程式庫 (,也就是D3D11_Beta.lib) 。 如果您有 Windows 7 的 PDC 複本,使用組建在 Windows SDK 中提供的標頭、程式庫和 pdbs 適用于使用 Windows 7 中提供的 Direct3D 11 元件進行開發。 請將此 SDK 中的標頭、程式庫和 pdbs 使用保留至此處提供的 Beta 元件。
D3DX11
D3DX11 目前支援 Direct3D 11 資源的紋理載入、著色器編譯、資料載入和背景工作執行緒函式。 未來,此元件會提供更多 D3DX10 中可用的技術。 著色器編譯功能也會直接透過 Direct3D 編譯器元件提供,如下所述。
HLSL 和 Direct3D 編譯器
HLSL 編譯器有數項新功能,可支援 Direct3D 11 中提供的新技術。 這包括透過介面和類別進行物件導向程式設計、資源載入的直接索引語法,以及確保以特定變數執行的所有作業都遵守嚴格的浮點規則的「精確」關鍵字。 幾乎所有新的語言功能在現有的著色器目標上都有有效的功能。 除了支援所有 Direct3D 9、Direct3D 10、Direct3D 10.1 和 Direct3D 11 著色器之外,HLSL 編譯器也支援撰寫 Direct3D 10 層級 9 目標著色器所需的特殊目標。 D3D 編譯器現在可透過 D3DCompiler.H 和 D3DCompiler.lib 直接在 D3DX10 和 D3DX11 外部存取。 使用這些新檔案時,不需要連結至 D3DX 才能執行執行時間編譯的應用程式,而且如果只需要 D3DX 功能,則不需要包含編譯器。
D3D11 參考轉譯器
參考轉譯器提供金標準點陣化實作,以評估硬體中尚未提供的 Direct3D 11 功能。 參考轉譯器也提供方法來驗證特定硬體實作對點陣化標準的正確性。 參考轉譯器是專為正確性所設計,而不是效能。 若要建立參考裝置,只要在建立裝置時傳遞D3D_DRIVER_TYPE_REFERENCE旗標即可。
D3D11 SDK 層
Direct3D11 SDK 層提供在開發期間追蹤 Direct3D 11 執行時間作業的機制。 目前,這會用來提供實用的偵錯資訊,不僅包含不當使用的錯誤,也包含建議使用執行時間最佳做法的警告,而且通常會提供深入且實用的偵錯資訊。 強烈建議在開發期間隨時開啟 D3D11 SDK 層的偵錯輸出,而且應用程式在執行期間不會在執行期間產生偵錯輸出,或搭配適用于 Windows 的 PIX 進行分析。 啟用偵錯層就像在裝置建立時傳遞D3D11_CREATE_DEVICE_DEBUG旗標一樣簡單。 強烈建議開發人員在偵錯組建中使用圖層。 不建議在設定檔或發行組建中使用圖層。
新範例
此版本有四個新的範例。
  • 動態著色器連結 11範例示範如何使用著色器模型 5 著色器介面和 Direct3D 11 支援在執行時間連結著色器介面方法。
  • HDRToneMappingCS11範例示範如何在稍後) 設定和執行計算著色器 (CS,這是 Direct3D 11 最令人興奮的新功能之一。 雖然此範例只會利用 CS 來實作 HDR 音調對應,但概念應該可輕易地延伸到其他後置處理演算法,以及更一般的計算。
  • MultithreadedRendering11範例示範如何在多個執行緒之間分割轉譯,並具有非常低的額外負荷。
  • 新的 SubD11 範例與 DirectX SDK 中的 SubD10 範例非常類似,不同之處在于它已增強以利用三個新的 Direct3D 11 管線階段:殼層著色器、鑲嵌器和網域著色器。

舊版中引進的功能