Share via


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

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

著色器二進位格式

著色器指令資料流程的位配置定義于 D3d9types.h 中。 如果您想要設計自己的著色器編譯器或建構工具,而且想要深入瞭解著色器權杖資料流程,請參閱 Direct3D 9 驅動程式開發工具組 (DDK) 。

類似 C 的著色器語言

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

HLSL 的參考