Effets (Direct3D 10)

Un effet DirectX est une collection d’état de pipeline, défini par des expressions écrites en HLSL et une syntaxe spécifique à l’infrastructure d’effet. Après avoir compilé un effet, utilisez les API d’infrastructure d’effet pour effectuer le rendu. La fonctionnalité d’effet peut aller d’un nuanceur de vertex qui transforme la géométrie et un nuanceur de pixels qui génère une couleur unie, à une technique de rendu qui nécessite plusieurs passes, utilise chaque étape du pipeline graphique et manipule l’état du nuanceur ainsi que l’état du pipeline non associé aux nuanceurs programmables.

La première étape consiste à organiser l’état que vous souhaitez contrôler dans un effet. Cela inclut l’état du nuanceur (vertex, géométrie et nuanceurs de pixels), l’état de texture et d’échantillonneur utilisé par les nuanceurs et d’autres états de pipeline non programmables. Vous pouvez créer un effet en mémoire sous forme de chaîne de texte, mais généralement, la taille est suffisamment grande pour qu’il soit pratique pour stocker l’état d’effet dans un fichier d’effet (un fichier texte qui se termine par une extension .fx). Pour utiliser un effet, vous devez le compiler (pour case activée syntaxe HLSL ainsi que la syntaxe de l’infrastructure d’effet), initialiser l’état d’effet via des appels d’API et modifier votre boucle de rendu pour appeler les API de rendu.

Un effet encapsule tout l’état de rendu requis par un effet particulier dans une seule fonction de rendu appelée technique. Une passe est un sous-ensemble d’une technique, qui contient l’état de rendu. Pour implémenter un effet de rendu de passage multiple, implémentez une ou plusieurs passes au sein d’une technique. Par exemple, supposons que vous souhaitiez afficher une géométrie avec un ensemble de mémoires tampons de profondeur/gabarit, puis dessiner des sprites par-dessus. Vous pouvez implémenter le rendu de la géométrie dans la première passe et le dessin de sprite dans la deuxième passe. Pour afficher l’effet, il vous suffit d’afficher les deux passes dans votre boucle de rendu. Vous pouvez implémenter n’importe quel nombre de techniques dans un effet. Bien sûr, plus le nombre de techniques est élevé, plus le temps de compilation de l’effet est important. Une façon d’exploiter cette fonctionnalité consiste à créer des effets avec des techniques conçues pour s’exécuter sur différents matériels. Cela permet à une application de rétrograder correctement les performances en fonction des fonctionnalités matérielles détectées.

Guide de programmation pour Direct3D 10