Partager via


HLSL Helpers

Pour aider les auteurs d’effets à écrire des nuanceurs de pixels pouvant être liés, d2d1effecthelpers.hlsli définit un ensemble d’extensions de langage HLSL sous la forme de méthodes d’assistance et de macros.

Pour ajouter d2d1effecthelpers.hlsli à votre projet, ajoutez une instruction #include dans le fichier HLSL. d2d1effecthelpers.hlsli se trouve au même emplacement que d’autres en-têtes Direct2D tels que d2d1.h ; il peut être référencé à partir de la page de propriétés du fichier HLSL en ajoutant la macro $(WindowsSDK_IncludePath) à la propriété Additional Include Directories. Notez que l’instruction #include doit venir après la définition de toutes les directives de préprocesseur telles D2D_INPUT_COUNT.

#include <d2d1effecthelpers.hlsli>

Direct2D ne prend pas en charge la liaison des nuanceurs de calcul ou de vertex. Toutefois, si votre effet utilise à la fois un nuanceur de vertex et un nuanceur de pixels, la sortie du nuanceur de pixels peut toujours être liée.

Directives de préprocesseur

Les directives de préprocesseur sont requises pour communiquer des informations sur l’effet. Cela inclut le nombre d’entrées et le type d’échantillonnage de chaque entrée. Les valeurs suivantes doivent être définies dans le code du nuanceur d’effet au-dessus du point d’entrée du nuanceur approprié, le cas échéant.

  • D2D_INPUT_COUNT <N> : déclare le nombre d’entrées de texture à l’effet. Si l’effet a un nombre variable d’entrées, cette valeur doit être délimitée de manière appropriée à chaque point d’entrée du nuanceur. La définition de cette valeur est obligatoire.
  • D2D_INPUT<N>_SIMPLE : déclare la Nième entrée pour utiliser l’échantillonnage simple. Si elle n’est pas définie, l’entrée Nth est complexe par défaut. La définition de cette valeur est facultative.
  • D2D_INPUT<N>_COMPLEX : déclare la Nième entrée pour utiliser l’échantillonnage complexe. Si elle n’est pas définie, l’entrée Nth est complexe par défaut. La définition de cette valeur est facultative.
  • D2D_REQUIRES_SCENE_POSITION : indique que la fonction de nuanceur appelle les méthodes d’assistance qui utilisent la valeur de position de scène (à savoir, la fonction d’assistance D2DGetScenePosition ). Ce paramètre ne doit être inclus que si nécessaire, car une seule fonction par nuanceur lié peut utiliser ce paramètre. La définition de cette valeur est facultative.
  • D2D_CUSTOM_ENTRY : indique que la fonction de nuanceur de pixels consomme la sortie d’un nuanceur de vertex personnalisé et déclare donc ses paramètres d’entrée. Toutes les entrées de nuanceur de vertex personnalisés utilisent un échantillonnage complexe et ne peuvent pas consommer la sortie d’une autre fonction de nuanceur (c’est-à-dire qu’elles ne peuvent être liées qu’après liaison). La définition de cette valeur est facultative.

Exemple :

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

Fonctions d’assistance

Les fonctions d’assistance sont utilisées en remplacement de certaines fonctions intrinsèques HLSL natives. Au moment de la compilation, ces fonctions d’assistance sont redéfinies par Direct2D dans la version appropriée en fonction du type de cible de compilation (fonction de nuanceur complet ou d’exportation).

Les fonctions d’assistance :

D2DGetInput
D2DSampleInput
D2DSampleInputAtOffset
D2DSampleInputAtPosition
D2DGetInputCoordinate
D2DGetScenePosition
D2D_PS_ENTRY

Liaison de nuanceurs d’effet