V. Effets (Direct3D 10)▲
Un effet DirectX est une collection d'état du pipeline, mis en place par des expressions écrites en HLSL, et une syntaxe spécifique au framework effect. Après avoir compilé un effet, utilisez les interfaces de programmation applicative (API) du framework effect pour obtenir le rendu. La fonctionnalité d'effet peut aller de quelque chose d'aussi simple qu'un vertex shader qui transforme la géométrie et un pixel shader qui produit une couleur homogène, jusqu'à une technique de rendu qui nécessite plusieurs passes, utilise toutes les étapes du pipeline graphique et manipule aussi bien un état de shader qu'un état de pipeline non associé aux shaders programmables.
La première étape est d'organiser l'état que vous voulez contrôler dans un effet. Cela inclut l'état de shader (capacité d'envoi en mémoire des données de points générées par le pipeline - vertices, geometry shaders et pixel shaders), la texture et l'état d'échantillonneur (sampler) utilisé par les shaders, et tout autre état de pipeline non-programmable. Vous pouvez créer un effet en mémoire sous la forme d'une chaîne texte, mais typiquement, la taille devient assez grande pour qu'il soit commode d'enregistrer l'état d'effet dans un fichier effet (un fichier texte dont le nom se finit par une extension .fx). Pour utiliser un effet, vous devez le compiler (pour vérifier la syntaxe HLSL ainsi que la syntaxe du framework effect), initialiser l'état de l'effet par des appels API, et modifier votre boucle de rendu pour appeler les API de rendu.
- Organiser un Etat dans un Effet
- Interfaces Système Effet
- Interfaces de Spécialisation
- Rendu d'un Effet
Un effet encapsule tout l'état de rendu nécessaire à un effet particulier dans une unique fonction de rendu appelée une technique. Une passe est un sous-ensemble d'une technique, qui contient l'état de rendu. Pour mettre en œuvre un effet de rendu en plusieurs passes, mettez en œuvre une ou plusieurs passes à l'intérieur d'une technique. Par exemple, disons que vous voulez rendre une géométrie avec un jeu de tampons profondeur/stencil, puis tracer quelques sprites au-dessus. Vous pourriez mettre en œuvre le rendu de géométrie dans la première passe et le tracé de sprite dans la seconde passe. Pour rendre l'effet, il vous suffit de rendre les deux passes dans votre boucle de rendu. Vous pouvez mettre en œuvre autant de techniques que vous voulez dans un effet. Bien sûr, plus grand est le nombre de techniques, plus longue est la durée de compilation de l'effet. Une façon d'exploiter cette fonctionnalité est de créer des effets avec des techniques conçues pour tourner sur différents hardwares. Cela permet à une application de réduire élégamment les performances basées sur les capacités détectées du hardware.