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.
Tópicos relacionados