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