Compartir a través de


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.

Referencia de HLSL