Historique des pixels Graphics
L'outil Historique des pixels Graphics est l'un des outils Graphics Diagnostics de Visual Studio. Il peut vous aider à comprendre comment un pixel spécifique est affecté par des événements Direct3D dans un frame particulier de votre jeu ou application.
Voici la fenêtre Historique des pixels Graphics :
Notes
Depuis Visual Studio 2013 Update 3, les fenêtres de l'outil Graphics Diagnostics sont hébergées dans une copie indépendante de l'IDE Visual Studio.Cet environnement personnalisé, appelé Analyse Graphics, élimine les menus et les options inutiles, sans toutefois toucher à l'historique des pixels et au flux de travail.Pour plus d'informations sur ce changement, consultez Vue d'ensemble de Graphics Diagnostics.
Présentation de l'historique des pixels
À l'aide de l'Historique des pixels Graphics, vous pouvez analyser la façon dont un pixel spécifique de la cible de rendu est affecté par des événements Direct3D dans un frame particulier. Vous pouvez identifier un problème de rendu d'un événement Direct3D spécifique, même quand d'autres évènements (ou d'autres primitives du même événement) continuent à changer la valeur de la couleur finale du pixel. Par exemple, un pixel peut être rendu de manière incorrecte et être ensuite masqué par un autre pixel, semi-transparent, ce qui entraîne un mélange de leurs couleurs dans le framebuffer. Ce genre de problème peut être difficile à diagnostiquer si vous n'avez que le contenu final de la cible de rendu comme repère.
La fenêtre Historique des pixels Graphics affiche l'historique complet d'un pixel dans le frame sélectionné. La zone Tampon de trame final en haut de la fenêtre affiche la couleur écrite dans le framebuffer à la fin du frame, ainsi que des informations supplémentaires sur le pixel, par exemple son frame d'origine et ses coordonnées d'écran. Cette zone contient également la case à cocher Restituer Alpha. Quand cette case est cochée, la couleur de la zone Tampon de trame final et les valeurs de couleur intermédiaires sont affichées en transparence sur un modèle de damier. Si la case n'est pas cochée, le canal alpha des valeurs de couleur est ignoré.
La partie inférieure de la fenêtre affiche les événements qui ont pu affecter la couleur du pixel, ainsi que les pseudo-événements Initial et Final qui représentent les valeurs de couleur initiale et finale du pixel dans le framebuffer. La valeur de couleur initiale est déterminée par le premier événement qui a changé la couleur du pixel (en règle générale un événement Clear). Un pixel a toujours ces deux pseudo-événements dans son historique, même quand aucun autre événement ne l'a affecté. Quand d'autres événements ont eu l'occasion d'affecter le pixel, ils sont affichés entre les événements Initial et Final. Vous pouvez développer les événements pour afficher leurs détails. Pour les événements simples comme ceux qui effacent une cible de rendu, l'effet de l'événement correspond juste à une valeur de couleur. Les événements plus complexes tels que les appels de dessin génèrent une ou plusieurs primitives qui peuvent contribuer à la couleur du pixel.
Les primitives dessinées par l'événement sont identifiées par leur type et leur index, ainsi que par le nombre total de primitives de l'objet. Par exemple, un identificateur comme Triangle (1456) sur (6214) signifie que la primitive correspond au 1456e triangle d'un objet composé de 6214 triangles. À gauche de chaque identificateur de primitive se trouve une icône qui résume l'effet de la primitive sur le pixel. Les primitives qui affectent la couleur du pixel sont représentées par un rectangle arrondi rempli à l'aide de la couleur résultante. Les primitives qui n'ont pas d'effet sur la couleur du pixel sont représentées par des icônes qui indiquent la raison pour laquelle le pixel a été exclu. Ces icônes sont décrites dans la section Primitive exclusion plus loin dans cet article.
Vous pouvez développer chaque primitive pour examiner la façon dont la sortie du nuanceur de pixels a été fusionnée avec la couleur de pixel existante pour produire la couleur résultante. À ce stade, vous pouvez également examiner ou déboguer le code du nuanceur de pixels associé à la primitive. En outre, vous pouvez développer davantage le nœud du nuanceur de sommets pour examiner l'entrée du nuanceur de sommets.
Exclusion de primitive
Si une primitive ne peut pas affecter la couleur d'un pixel, l'exclusion peut se produire pour diverses raisons. Chaque raison est représentée par une icône décrite dans ce tableau :
Icône |
Raison de l'exclusion |
---|---|
Le pixel a été exclu parce qu'il n'a pas réussi le test Depth Test. |
|
Le pixel a été exclu parce qu'il n'a pas réussi le test Scissor Test. |
|
Le pixel a été exclu parce qu'il n'a pas réussi le test Stencil Test. |
Exclusion d'appel de dessin
Si aucune des primitives d'un appel de dessin ne peut affecter la cible de rendu, car elles ne réussissent pas un test, l'appel de dessin ne peut pas être développé et une icône correspondant à la raison de l'exclusion s'affiche juste à côté. Les raisons de l'exclusion d'un appel de dessin ressemblent aux raisons de l'exclusion d'une primitive. En outre, leurs icônes sont similaires.
Affichage et débogage du code du nuanceur
Vous pouvez afficher le code d'un Nuanceur de sommets, Nuanceur de coque, Nuanceur de domaine, Nuanceur de géométrie ou Nuanceur de pixels. Vous pouvez également le déboguer à l'aide des contrôles situés sous la primitive associée au nuanceur.
Pour afficher le code source d'un nuanceur
- Sous la primitive associée au nuanceur que vous souhaitez afficher, choisissez le titre du nuanceur. Par exemple, choisissez Nuanceur de sommets pour afficher le code source du nuanceur de sommets.
Pour déboguer un nuanceur
- Sous la primitive associée au nuanceur que vous souhaitez déboguer, à droite du titre du nuanceur, choisissez Démarrer le débogage.
Liens vers les objets graphiques
Pour comprendre les événements graphiques de l'historique des pixels, vous pouvez avoir besoin d'informations sur l'état de l'appareil au moment de l'événement ou sur les objets Direct3D référencés par l'événement. Pour chaque événement de l'historique des pixels, l'Historique des pixels Graphics fournit des liens vers l'état de l'appareil actuel et les objets connexes.
Voir aussi
Tâches
Procédure pas à pas : objets manquants en raison de l'état du périphérique
Procédure pas à pas : débogage des erreurs de rendus dues à la trame