Referencia del sombreador de Asm
Los sombreadores impulsan la canalización de gráficos programables.
Referencia del sombreador de vértices
Diferencias del sombreador de vértices resume las diferencias entre las versiones del sombreador de vértices.
Referencia del sombreador de píxeles
Diferencias del sombreador de píxeles resume las diferencias entre las versiones del sombreador de píxeles.
Referencia del modelo de sombreador 4 y 5
En las secciones Ensamblado del modelo de sombreador 4 y Ensamblado del sombreador 5 se describen las instrucciones que admiten el modelo de sombreador 4 y 5.
Comportamiento de los registros constantes en sombreadores de ensamblado
Hay dos maneras de establecer registros constantes en un sombreador de ensamblados:
- Declare una constante de sombreador en el código de ensamblado mediante una de las instrucciones def*.
- Use uno de los métodos de API Set***ShaderConstant*.
Constantes de sombreador de Direct3D 9
En Direct3D 9, la duración de las constantes definidas en un sombreador determinado se limita a la ejecución de ese sombreador solo (y no se puede invalidar). Las constantes definidas en Direct3D 9 no tienen efectos secundarios fuera del sombreador.
Este es un ejemplo con 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.
En Direct3D 9, al llamar a Get***ShaderConstant* solo se recuperarán los valores constantes establecidos a través de Set***ShaderConstant*.
Constantes de sombreador de Direct3D 8
Este comportamiento es diferente en 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
En Direct3D 8.x Set***ShaderConstant surte efecto inmediatamente. Considere el escenario siguiente:
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)
El resultado no deseado es que el orden en el que se establecen los sombreadores podría afectar al comportamiento observado de los sombreadores individuales.
Requisitos del modelo de controlador de sombreador
Las interfaces de Direct3D 9 están restringidas a los controladores de interfaz de controlador de dispositivo (DDI) que son de nivel y superior de DirectX 7. Para comprobar el nivel DDI, ejecute la herramienta de diagnóstico de DirectX y examine el archivo de texto guardado.
Como referencia, las interfaces de Direct3D 8 solo funcionan en controladores DDI que son de nivel 6 de DirectX y superiores.
Formato binario del sombreador
El diseño bit a bit del flujo de instrucciones del sombreador se define en D3d9types.h. Si desea diseñar su propio compilador de sombreador o herramientas de construcción y desea obtener más información sobre la secuencia de tokens del sombreador, consulte el Kit de desarrollo de controladores (DDK) de Direct3D 9.
Lenguaje de sombreador similar a C
Consulte Referencia de HLSL para experimentar un lenguaje de sombreador similar a C.
Temas relacionados