共用方式為


Asm 著色器參考

著色器會驅動可程式化的圖形管線。

頂點著色器參考

頂點著色器差異 摘要說明頂點著色器版本之間的差異。

圖元著色器參考

像素著色器差異 摘要說明圖元著色器版本之間的差異。

著色器模型 4 和 5 參考

著色器模型 4 元件著色器模型 5 元件 區段描述著色器模型 4 和 5 支援的指示。

元件著色器中常數緩存器的行為

在元件著色器中設定常數快取器的方法有兩種:

  • 使用其中一個 def* 指令,在元件程式代碼中宣告著色器常數。
  • 使用其中一個 Set***ShaderConstant* API 方法。

Direct3D 9 著色器常數

在 Direct3D 9 中,指定著色器中定義的常數存留期僅限於執行該著色器(且不可覆寫)。 Direct3D 9 中定義的常數在著色器之外沒有副作用。

以下是使用 Direct3D 9 的範例:

Given: 
    Create shader1 which references c4 and defines it with the def instruction

Scenario 1:
    Call Set***Shader shader1
    Call Set***ShaderConstant* to set c4
    Call Draw
    Result: The shader will see the def'd value in c4

    
Given: 
    Scenario 1 has just completed
    Create shader2 (which references c4 but does not use the def instruction
      to define it) 

Scenario 2: 
    Call Set***Shader shader2
    Call Draw
    Result: The shader will see the value last set in c4 by 
     Set***ShaderConstant* in scenario 1. This is because shader 2 
     didn't def c4.

在 Direct3D 9 中,呼叫 Get***ShaderConstant* 只會擷取透過 Set***ShaderConstant* 設定的常數值。

Direct3D 8 著色器常數

此行為在 Direct3D 8.x 中不同。

Given:
    Create shader1 which references c4 and defines it with the def instruction

Scenario 1 (repeated with Direct3D 8):
    Call Set***Shader with shader1
    Call Set***ShaderConstant to set c4
    Call Draw
    Result: The shader will see the value in c4 from Set***ShaderConstant

在 Direct3D 8.x Set***ShaderConstant 中,會立即生效。 請考慮此案例:

Given:
    Create shader1 which references c4 and defines it with the def instruction
    
Scenario 3:
    Call Set***Shader with shader1
    Call Draw
    Result: The shader will see the def'd value in c4

Given:
    Scenario 3 has just completed
    Create shader2 (which references c4 but does not use the def instruction 
      to define it)     
    
Scenario 4 :    
    Call Set***Shader with shader2
    Call Draw
    Result: The shader will see the def'd value in c4 (set by def in shader 1)

不想要的結果是著色器設定的順序可能會影響個別著色器觀察到的行為。

著色器驅動程式模型需求

Direct3D 9 介面僅限於 DirectX 7 層級和更新版本裝置驅動程式介面 (DDI) 驅動程式。 若要檢查 DDI 層級,請執行 DirectX 診斷工具 並檢查儲存的文字檔。

如需參考,Direct3D 8 介面僅適用於 DirectX 6 層級和更新版本 DDI 驅動程式。

著色器二進位格式

著色器指令數據流的位配置定義於 D3d9types.h 中。 如果您想要設計自己的著色器編譯程式或建構工具,而且想要有關著色器令牌數據流的詳細資訊,請參閱 Direct3D 9 驅動程式開發工具包 (DDK)。

類似 C 的著色器語言

請參閱 HLSL 參考 來體驗類似 C 的著色器語言。

HLSL 參考