Partilhar via


Referência Asm Shader

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

Referência do sombreador de vértice

Vertex Shader Differences resume as diferenças entre as versões do sombreador de vértice.

Referência do Pixel Shader

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

Referência do Shader Model 4 e 5

As seções Shader Model 4 Assembly e Shader Model 5 Assembly descrevem as instruções suportadas pelo shader model 4 e 5.

Comportamento de registros constantes em sombreadores de montagem

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

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

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 pode ser substituído). As constantes definidas no Direct3D 9 não têm efeitos colaterais fora do sombreador.

Eis um exemplo de utilização do 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 via 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 em que os sombreadores são definidos pode afetar o comportamento observado de sombreadores individuais.

Requisitos do modelo do driver de sombreador

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

Para referência, as interfaces Direct3D 8 funcionam apenas em drivers DDI de nível DirectX 6 e superior.

Formato binário do sombreador

O layout bit a bit do fluxo de instruções do sombreador é definido em D3d9types.h. Se você quiser projetar 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 Direct3D 9 Driver Development Kit (DDK).

Linguagem de sombreamento tipo C

Consulte de referência HLSL para experimentar uma linguagem de sombreador C-like.

Referência para HLSL