Sdílet prostřednictvím


Referenční dokumentace shaderu Asm

Shadery řídí programovatelný grafický kanál.

Referenční dokumentace shaderu vrcholů

rozdíly ve shaderu vrcholů shrnuje rozdíly mezi verzemi shaderu vrcholů.

Referenční dokumentace shaderu pixelů

rozdíly shaderu pixelů shrnuje rozdíly mezi verzemi shaderu pixelů.

Referenční dokumentace k modelu shaderu 4 a 5

Oddíly sestavení Shader Model 4 a sestavení shaderu 5 popisují pokyny, které model shaderu 4 a 5 podporuje.

Chování konstantních registrů v shadery sestavení

Existují dva způsoby nastavení konstantních registrů v shaderu sestavení:

  • Deklarujte konstantu shaderu v kódu sestavení pomocí jednoho z instrukcí def*.
  • Použijte jednu z metod rozhraní API Set****ShaderConstant*.

Konstanty shaderu Direct3D 9

V Direct3D 9 je životnost definovaných konstant v daném shaderu omezena pouze na spuštění tohoto shaderu (a je nepřepsatelný). Definované konstanty v Direct3D 9 nemají žádné vedlejší účinky mimo shader.

Tady je příklad použití 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.

Volání Get***ShaderConstant* v Direct3D 9 načte pouze konstantní hodnoty nastavené pomocí set***ShaderConstant*.

Konstanty shaderu Direct3D 8

Toto chování se u Direct3D 8.x liší.

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

V režimu Direct3D 8.x Set***ShaderConstant se projeví okamžitě. Představte si tento scénář:

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)

Nežádoucím výsledkem je, že pořadí, ve kterém jsou nastaveny shadery, může ovlivnit pozorované chování jednotlivých shaderů.

Požadavky na model ovladače shaderu

Rozhraní Direct3D 9 jsou omezena na ovladače rozhraní ovladačů zařízení (DDI), které jsou úrovně DirectX 7 a vyšší. Pokud chcete zkontrolovat úroveň DDI, spusťte nástroj pro diagnostiku DirectX a prozkoumejte uložený textový soubor.

Pro referenci rozhraní Direct3D 8 fungují pouze na ovladačích DDI, které jsou úrovně DirectX 6 a vyšší.

Binární formát shaderu

Bitové rozložení streamu instrukce shaderu je definováno v D3d9types.h. Pokud chcete navrhnout vlastní kompilátor shaderu nebo stavební nástroje a chcete další informace o streamu tokenů shaderu, přečtěte si sadu DDK (Direct3D 9 Driver Development Kit).

Jazyk shaderu podobný jazyku C

Informace referenční HLSL a podívejte se na jazyk shaderu podobný jazyku C.

Referenční pro HLSL