Asistentes de HLSL

Para ayudar a los autores a escribir sombreadores de píxeles enlazables, d2d1effecthelpers.hlsli define un conjunto de extensiones de lenguaje HLSL en forma de métodos auxiliares y macros.

Para agregar d2d1effecthelpers.hlsli al proyecto, agregue una instrucción #include en el archivo HLSL. d2d1effecthelpers.hlsli se encuentra en la misma ubicación que otros encabezados direct2D, como d2d1.h; se puede hacer referencia desde la página de propiedades del archivo HLSL agregando la macro $(WindowsSDK_IncludePath) a la propiedad Directorios de inclusión adicionales. Tenga en cuenta que la instrucción #include debe aparecer después de que se hayan definido las directivas de preprocesador D2D_INPUT_COUNT.

#include <d2d1effecthelpers.hlsli>

Direct2D no admite la vinculación de sombreadores de proceso o vértices. Sin embargo, si el efecto usa un sombreador de vértices y un sombreador de píxeles, la salida del sombreador de píxeles todavía se puede vincular.

Directivas de preprocesador

Las directivas de preprocesador son necesarias para comunicar información sobre el efecto. Esto incluye el número de entradas y el tipo de muestreo de cada entrada. Los valores siguientes deben definirse en el código del sombreador de efectos por encima del punto de entrada del sombreador pertinente cuando corresponda.

  • D2D_INPUT_COUNT <N> : declara el número de entradas de textura en el efecto. Si el efecto tiene un número variable de entradas, este valor debe limitarse adecuadamente a cada punto de entrada del sombreador. Definir este valor es obligatorio.
  • D2D_INPUT<N>_SIMPLE : declara la entrada Nth para usar el muestreo simple. Si no se define, la entrada Nth tiene como valor predeterminado complejo. Definir este valor es opcional.
  • D2D_INPUT<N>_COMPLEX : declara la entrada Nth para usar el muestreo complejo. Si no se define, la entrada Nth tiene como valor predeterminado complejo. Definir este valor es opcional.
  • D2D_REQUIRES_SCENE_POSITION : indica que la función del sombreador llama a métodos auxiliares que usan el valor de posición de la escena (es decir, la función auxiliar D2DGetScenePosition ). Este parámetro solo debe incluirse cuando sea necesario, ya que solo una función por sombreador vinculado puede usar este parámetro. Definir este valor es opcional.
  • D2D_CUSTOM_ENTRY : indica que la función de sombreador de píxeles consume la salida de un sombreador de vértices personalizado y, por tanto, declarará sus parámetros de entrada. Todas las entradas del sombreador de vértices personalizados usan muestreo complejo y no pueden consumir la salida de otra función de sombreador (es decir, solo son post-linkables). Definir este valor es opcional.

Por ejemplo:

#define D2D_INPUT_COUNT 3
#define D2D_INPUT0_SIMPLE
#define D2D_INPUT1_SIMPLE
#define D2D_INPUT2_COMPLEX
#include <d2d1effecthelpers.hlsli>
          

Funciones del asistente

Las funciones auxiliares se usan como reemplazo de algunas funciones intrínsecas nativas de HLSL. En tiempo de compilación, Direct2D vuelve a definir estas funciones auxiliares en la versión adecuada según el tipo de destino de compilación (sombreador completo o función de exportación).

Las funciones auxiliares:

D2DGetInput
D2DSampleInput
D2DSampleInputAtOffset
D2DSampleInputAtPosition
D2DGetInputCoordinate
D2DGetScenePosition
D2D_PS_ENTRY

Vinculación del sombreador de efectos