Il existe des bibliothèques standard de fonctions de shaders, comme pour Cg . Mais y a-t-il des ressources qui vous disent combien de temps chacun prend... Je pense à la façon dont vous pouviez autrefois rechercher le nombre de cycles que prenait chaque opération ASM.
Réponse
Trop de publicités?Il n'y a pas fiable qui vous indiqueront le temps que prennent les différentes fonctions standard des shaders. Même pas pour un matériel particulier.
La raison en est l'ordonnancement des instructions et le fonctionnement des architectures de shaders modernes. Prenez un simple sin
fonction. Disons que le matériel dispose d'un matériel spécial pour calculer le sinus d'une valeur, de sorte qu'il ne s'agit pas d'utiliser manuellement une série Tailor ou autre. Cependant, disons aussi qu'il faut une séquence de 4 opcodes pour le calculer réellement. Par conséquent, sin
prendrait "4 cycles".
Cependant tous ces opcodes sont des opérations scalaires. Par conséquent, pendant qu'ils sont en cours, vous pourriez en fait avoir des produits scalaires à 3 vecteurs, ou dans le cas de certains matériels, des produits scalaires à 4 vecteurs en cours en même temps sur le même processeur. Par conséquent, si le matériel dispose de produits scalaires de 4 vecteurs avec des opérations scalaires, le nombre de cycles nécessaires à l'exécution d'une opération de sin
et une multiplication matrice-vecteur est... toujours 4.
Alors, combien le sin
coût de l'opération ? Si vous supprimez la multiplication matricielle, rien n'est plus rapide. Si vous enlevez le sin
mais rien n'est plus rapide. Combien cela coûte-t-il ? Vous ne pouvez pas le dire, car le coût d'une seule opération n'est pas pertinent ; la seule quantité mesurable est le coût de l'ensemble de l'opération. le shader lui-même .
En fin de compte, tout ce que vous pouvez faire est d'essayer de construire votre shader de manière raisonnable et de voir quelles sont les performances. À moins de disposer d'outils de débogage de bas niveau pour déprogrammer l'assemblage du shader sous-jacent (et non, l'assemblage DX n'est pas suffisant), c'est vraiment le mieux que vous puissiez faire.