J'utilise XNA pour mes projets et sur ces forums, je vois parfois des références au fait que l'échange d'un effet pour un maillage a un coût relativement élevé, ce qui me surprend car je pensais que l'échange d'un effet était simplement un cas de copie du programme de remplacement de shader au GPU avec les paramètres appropriés.
Je me demandais si quelqu'un pourrait expliquer exactement ce qui coûte cher dans ce processus? Et si possible, mettre «relativement» en contexte?
Par exemple, disons que je voulais utiliser un shader court pour aider à la cueillette, je voudrais:
- Modifiez l'effet sur chaque objet, en calculant une couleur unique pour l'identifier et en la fournissant au shader.
- Dessinez tous les objets sur une cible de rendu en mémoire.
- Obtenez la couleur de la cible et utilisez-la pour rechercher l'objet sélectionné.
Quelle partie du temps total nécessaire pour terminer ce processus serait consacrée à l'échange des shaders? Mes instincts diraient que rendre la scène à nouveau, peu importe la simplicité du shader, serait un ordre de grandeur plus lent que toute autre partie du processus, alors pourquoi tout le souci des effets?