Auxiliares do HLSL

Para auxiliar os autores de efeito na escrita de sombreadores de pixel vinculáveis, d2d1effecthelpers.hlsli define um conjunto de extensões de linguagem HLSL na forma de métodos auxiliares e macros.

Para adicionar d2d1effecthelpers.hlsli ao projeto, adicione uma instrução #include no arquivo HLSL. d2d1effecthelpers.hlsli está localizado no mesmo local que outros cabeçalhos Direct2D, como d2d1.h; ele pode ser referenciado na página de propriedades do arquivo HLSL adicionando a macro $(WindowsSDK_IncludePath) à propriedade Diretórios de Inclusão Adicionais. Observe que a instrução #include deve vir depois que quaisquer diretivas de pré-processador D2D_INPUT_COUNT tiverem sido definidas.

#include <d2d1effecthelpers.hlsli>

Direct2D não dá suporte à vinculação de sombreadores de computação ou vértice. No entanto, se o efeito usar um sombreador de vértice e um sombreador de pixel, a saída do sombreador de pixel ainda poderá ser vinculada.

Diretivas de pré-processador

Diretivas de pré-processador são necessárias para comunicar informações sobre o efeito. Isso inclui o número de entradas e o tipo de amostragem de cada entrada. Os valores a seguir devem ser definidos no código do sombreador de efeito acima do ponto de entrada do sombreador relevante quando aplicável.

  • D2D_INPUT_COUNT <N> : declara o número de entradas de textura para o efeito . Se o efeito tiver um número variável de entradas, esse valor deverá ser definido adequadamente para cada ponto de entrada do sombreador. Definir esse valor é obrigatório.
  • D2D_INPUT<N>_SIMPLE : declara a entrada Nth para usar amostragem simples. Se não for definido, a entrada Nth usará como padrão complexo. Definir esse valor é opcional.
  • D2D_INPUT<N>_COMPLEX : declara a entrada Nth para usar amostragem complexa. Se não for definido, a entrada Nth usará como padrão complexo. Definir esse valor é opcional.
  • D2D_REQUIRES_SCENE_POSITION : indica que a função de sombreador chama métodos auxiliares que usam o valor de posição da cena (ou seja, a função auxiliar D2DGetScenePosition ). Esse parâmetro só deve ser incluído quando necessário, pois apenas uma função por sombreador vinculado pode utilizar esse parâmetro. Definir esse valor é opcional.
  • D2D_CUSTOM_ENTRY : indica que a função de sombreador de pixel consome a saída de um sombreador de vértice personalizado e, portanto, declara seus parâmetros de entrada. Todas as entradas de sombreador de vértice personalizado usam amostragem complexa e não podem consumir a saída de outra função de sombreador (ou seja, elas são apenas pós-vinculáveis). Definir esse valor é opcional.

Por exemplo:

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

Funções auxiliares

As funções auxiliares são usadas como uma substituição para algumas funções intrínsecas HLSL nativas. Em tempo de compilação, essas funções auxiliares são redefinidas por Direct2D para a versão apropriada, dependendo do tipo de destino de compilação (sombreador completo ou função de exportação).

As funções auxiliares:

D2DGetInput
D2DSampleInput
D2DSampleInputAtOffset
D2DSampleInputAtPosition
D2DGetInputCoordinate
D2DGetScenePosition
D2D_PS_ENTRY

Vinculação de Sombreador de Efeito