Share via


Referência do sombreador asm

Os sombreadores conduzem o pipeline de elementos gráficos programáveis.

Referência do sombreador de vértice

Diferenças de sombreador de vértice resume as diferenças entre as versões do sombreador de vértice.

Referência do sombreador de pixel

Diferenças de sombreador de pixel resume as diferenças entre as versões do sombreador de pixel.

Referência do modelo de sombreador 4 e 5

As seções Assembly do Assembly do Modelo de Sombreador 4 e Do Modelo de Sombreador 5 descrevem as instruções às quais o modelo de sombreador 4 e 5 dá suporte.

Comportamento de registros constantes em sombreadores de assembly

Há duas maneiras de definir registros constantes em um sombreador de assembly:

  • Declare uma constante de sombreador no código do assembly usando uma das instruções def*.
  • Use um dos métodos de API Set***ShaderConstant*.

Constantes de sombreador Direct3D 9

No Direct3D 9, o tempo de vida das constantes definidas em um determinado sombreador é limitado apenas à execução desse sombreador (e não é substituível). As constantes definidas no Direct3D 9 não têm efeitos colaterais fora do sombreador.

Veja um exemplo usando o 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.

No Direct3D 9, chamar Get***ShaderConstant* só recuperará valores constantes definidos por meio de Set***ShaderConstant*.

Constantes de sombreador Direct3D 8

Esse comportamento é diferente no 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

No Direct3D 8.x Set***ShaderConstant entra em vigor imediatamente. Considere este cenário:

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)

O resultado indesejável é que a ordem na qual os sombreadores são definidos pode afetar o comportamento observado de sombreadores individuais.

Requisitos do modelo de driver de sombreador

As interfaces Direct3D 9 são restritas a drivers de DDI (interface do driver de dispositivo) que são directX de 7 níveis e superiores. Para marcar o nível DDI, execute a Ferramenta de Diagnóstico DirectX e examine o arquivo de texto salvo.

Para referência, as interfaces Direct3D 8 funcionam apenas em drivers DDI que são directX de 6 níveis e superiores.

Formato binário do sombreador

O layout bit a bit do fluxo de instrução do sombreador é definido em D3d9types.h. Se você quiser criar seu próprio compilador de sombreador ou ferramentas de construção e quiser obter mais informações sobre o fluxo de token de sombreador, consulte o DDK (Kit de Desenvolvimento de Driver) do Direct3D 9.

Linguagem sombreador semelhante a C

Consulte Referência de HLSL para experimentar uma linguagem de sombreador semelhante a C.

Referência para HLSL