DispatchRays, ainsi que les événements Dispatch ou Draw qui utilisent l’en-tête de parcours autonome : XDXR Standalone Traversal.

Commandes
- Cliquez avec le bouton droit de la souris et faites glisser pour orienter la caméra.
- Utilisez les touches WASD + QE du clavier pour naviguer dans la scène.
- Maintenez CTRL enfoncée pendant la navigation pour réduire la vitesse de la caméra, et MAJ pour l’augmenter.
- Si le déplacement de la caméra est trop lent ou trop rapide, utilisez ’+’ ou ’-’ dans la visionneuse.
- Cliquez avec le bouton gauche de la souris pour sélectionner des instances dans la BVH.
- Sélectionnez
pour Recenter view.
- Les caméras peuvent être enregistrées et restaurées à partir de la liste déroulante de la barre supérieure de l’interface en tapant un nom et en appuyant sur ENTRÉE ; cela permet de définir des signets dans un vaste monde.
- La position de la caméra peut être consultée et modifiée dans la barre supérieure de l’interface.
- Les bascules situées à côté des champs de position de la caméra permettent de choisir Y vers le haut ou Z vers le haut, ainsi qu’un repère gaucher ou droitier, en fonction de l’orientation de votre scène.
- Le menu des paramètres de PIX permet également de définir des valeurs par défaut pour l’orientation de la caméra, partagées entre toutes les captures ; cela est utile aux utilisateurs qui examinent souvent des captures du même moteur.
Fonctionnalités de la visionneuse BVH
Vous pouvez basculer entre la vue de la mémoire du tampon et la visualisation de la BVH à l’aide de la bascule « Buffer/BVH ». Le panneau Info affiche les propriétés de la TLAS ainsi que de la BLAS et de l’instance sélectionnées. Cliquer sur le lien Address ouvre la visionneuse de mémoire (Memory Viewer), qui affiche l’en-tête BVH natif. Le panneau XDXR Options contrôle le rendu de la scène et les visualisations des performances. Le panneauLeaves propose différents modes de coloration de la géométrie rendue :
- Coloration selon
Quads: colore les triangles inclus dans un « quad ». Les quads permettent des représentations de géométrie plus compactes en mémoire et peuvent améliorer les performances. Un quad valide est affiché en deux nuances d’une même couleur autre que le gris, tandis que les triangles isolés sont affichés en gris. Si une part importante de la géométrie est rendue en gris, vous pouvez exécuter un optimiseur de tampon d’index ou vérifier que la réutilisation des vertex dans les tampons d’entrée est conforme à vos attentes. Le GDK d’octobre 2023 a introduit un nouveau type de regroupement des feuilles en quads. Auparavant, tous les nœuds feuilles regroupés en quads effectuaient le parcours sur les deux triangles lorsqu’ils étaient atteints. Ce n’est plus le cas, car nous pouvons désormais partager deux triangles dans une feuille tout en ayant des références distinctes depuis les nœuds internes vers ces triangles spécifiques de la feuille. Ces nœuds sont ombrés avec un motif de points pour les distinguer.Depth: colore les triangles selon leur profondeur dans la hiérarchie BVH. Cela peut révéler des zones de forte densité ou des arbres mal équilibrés.Opaque: colore les triangles selon leurs paramètres d’opacité. Les instances en gris n’ont pas d’indicateurs d’opacité définis. Les instances avecD3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUEsont marquées en rouge. Les instances avecD3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUEsont marquées en vert, celles avecD3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUEen bleu, et celles avec les deux indicateurs en vert+bleu.Geometry Index: colore les triangles de façon aléatoire pour chaque D3D12_RAYTRACING_GEOMETRY_DESC. Cela permet de voir à partir de combien de composants une BLAS a été générée.BLAS: colore les triangles de façon aléatoire pour chaque BLAS. Cela permet de voir où une géométrie unique est efficacement réutilisée grâce à l’instanciation.Instance Mask: colore les triangles selon la valeur de leur masque d’instance. La couleur dépend du masque de bits défini pour cette instance.Instance: colore les triangles de façon aléatoire pour chaque instance. Cela permet de voir quand de grands objets se chevauchent et devraient être divisés en plusieurs instances.SAH Cost: colore les instances de BLAS selon leur coût SAH (Surface-Area-Heuristic) calculé. Il s’agit d’une heuristique couramment utilisée pour évaluer les performances de parcours d’une BVH. En général, des valeurs SAH élevées indiquent des BLAS plus lentes à parcourir, et des valeurs SAH faibles des BLAS plus rapides à parcourir. Cette vue doit être utilisée comme une estimation grossière de la complexité des objets ; elle peut toutefois sous-estimer ou surestimer le coût réel du parcours d’une BLAS.BLAS Branch: colore les triangles selon la « branche » de la BLAS qui les contient. Le curseurBranch Root Levelmodifie le niveau de la hiérarchie à considérer comme racine. Par exemple, si vous définissezBranch Root Levelsur1, la BLAS s’affiche avec (jusqu’à) 4 couleurs, chacune indiquant une branche enfant du nœud racine. La sélection d’un triangle met en surbrillance la branche qui le contient et la dessine par-dessus les autres branches. Ce mode est utile pour examiner le comportement de réajustement (refit) des BLAS. Si un chevauchement important est visible entre les branches d’une BLAS, il est possible que les positions réajustées se soient trop écartées des positions d’origine, ce qui dégrade les performances de parcours.TLAS Branch: colore les instances selon la « branche » de la TLAS qui les contient. Le comportement est le même qu’en modeBLAS Branch. Ce mode est utile pour comprendre les chutes brutales de performances de votre lancer de rayons. Si les niveaux supérieurs de la TLAS présentent un chevauchement important entre les branches, vous pouvez constater de fortes variations de performances lors du franchissement des limites des branches. Envisagez de diviser ou de supprimer les grandes instances qui affectent les limites des branches, ou modifiez les indicateurs de génération de la TLAS et les options de paramètres étendus.
- Afficher uniquement :
- Ces options permettent de filtrer la géométrie visible pour n’afficher qu’un sous-ensemble de la scène, en fonction de diverses propriétés. La plupart des modes n’ont pas d’options supplémentaires ; toutefois,
High SAH Cost Instancesutilise le curseurMinimum SAHpour ajuster le seuil à partir duquel afficher les instances en fonction du SAH de leur BLAS, etSelected TLAS Branchpartage le curseurBranch Root Levelavec les modes de colorationBranchpour ajuster le niveau racine des branches.
- Ces options permettent de filtrer la géométrie visible pour n’afficher qu’un sous-ensemble de la scène, en fonction de diverses propriétés. La plupart des modes n’ont pas d’options supplémentaires ; toutefois,
Screen-Space Heatmap propose des options permettant d’afficher la complexité de la scène sous forme de carte thermique. Notez que dans tous les cas, la carte thermique est rendue avec une plage bleu->vert->orange->rouge pour les coûts faibles->élevés.
Mode: bascule entre différents modes de rendu de la superposition de la carte thermiqueRecomputed Opaque Iteration Count: affiche une superposition dans l’espace écran indiquant le nombre d’itérations effectuées par les rayons lancés depuis la perspective de la caméra dans la visionneuse BVH. Le nombre d’itérations est calculé par PIX, qui traite toute la géométrie comme opaque et réexécute le code de parcours. Ce nombre peut être sous-estimé, car le test alpha n’est pas exécuté dans des situations telles que le contenu de feuillage.Maximum Non-Opaque Hit Count: affiche une superposition dans l’espace écran indiquant le nombre d’intersections non opaques rencontrées avant la première géométrie opaque. Cela donne une estimation de la « complexité alpha » du contenu soumis au lancer de rayons. Dans les zones où cette carte thermique est chaude, un rayon peut devoir exécuter de nombreux appels d’Any Hit Shader avant de trouver une véritable intersection. Pensez par exemple à de nombreuses instances de feuillage qui se chevauchent, où un rayon peut toucher continuellement des parties transparentes de la géométrie des feuilles.
Visibility: ce curseur ajuste l’opacité de la superposition dans l’espace écran ; à 0 %, la superposition est désactivée ; à 100 %, la superposition est entièrement opaque et la géométrie des feuilles n’est plus visible.Isolate to Selected: cette option permet de limiter la carte thermique dans l’espace écran aux seuls coûts associés à l’instance sélectionnée, et de rogner la carte thermique à ses limites. Cela est utile pour visualiser le coût d’une seule instance sans voir les coûts des autres instances rencontrées ou des nœuds TLAS parents.
Visualize Hierarchy propose des options de rendu de la hiérarchie des nœuds BVH entourant la géométrie des feuilles.
Mode: bascule entre les modes de rendu de la hiérarchie.BLAS Hierarchy with Instance Bounds: affiche les zones englobantes internes qui composent la structure BLAS de l’instance sélectionnée. Affiche également les limites de l’instance sélectionnée au sein de la TLAS. Les limites d’une instance peuvent dépasser les vertex de la géométrie en raison des transformations d’instance ou d’un mauvais alignement avec l’orientation de la TLAS. Envisagez d’activer k-DOP dans les paramètres de génération étendus : XDXR BVH Builders.TLAS Hierarchy: affiche les zones englobantes qui composent la structure TLAS.Off: affiche uniquement la géométrie des feuilles, sans visualiser la hiérarchie des nœuds.
Level: ce curseur modifie le nombre de niveaux de hiérarchie à afficher.- En mode
TLAS Hierarchy, il s’agit de la profondeur sous le nœud racine de la TLAS. - En mode
BLAS Hierarchy, il s’agit de la profondeur sous la racine de la hiérarchie BLAS actuellement sélectionnée.
- En mode
Ray Path Heatmap propose des options d’affichage des chemins des rayons parcourus pendant l’événement de lancer de rayons auquel cette TLAS est liée.
Draw Rays: ce bouton active le rendu des données des chemins des rayons dans la visionneuse. Il n’est disponible que dans certains cas.- Dans un événement
DispatchRays, cette option est disponible et ne nécessite aucune modification du titre avant la capture PIX. - Dans un
Dispatchutilisant XDXR Standalone Traversal, cette option est disponible pour les titres qui utilisent une version de l’en-tête de parcours autonome de mars 2023 ou ultérieure, mais nécessite une petite modification du titre.#define XDXR_ENABLE_INLINE_RAYLOG 1doit être défini avant l’inclusion de l’en-tête de parcours autonome. Cela affecte les performances du lancer de rayons et ne doit être activé que pour examiner spécifiquement ces performances. Au lieu de définir cette valeur de manière permanente dans votre titre, vous pouvez générer des PDB pour votre passe de lancer de rayons et utiliser la fonctionnalité de modification et continuation de PIX pour ajouter cet indicateur aux options du compilateur pendant que vous examinez l’événement de lancer de rayons dans PIX.
- Dans les événements
Drawutilisant XDXR Standalone Traversal, cette option n’est actuellement pas disponible. Privilégiez si possible les nuanceurs de calcul.
- Dans un événement
Mode: bascule entre différents modes de calcul et d’affichage de la carte thermique des rayons.Recomputed Opaque Iterations: colore les rayons selon le nombre d’itérations de parcours. Le nombre d’itérations est calculé par PIX, qui traite toute la géométrie comme opaque et réexécute le code de parcours. Ce nombre peut être sous-estimé, car le test alpha n’est pas exécuté dans des situations telles que le contenu de feuillage.Recomputed Iterations to Original Hit Point: colore les rayons selon le nombre d’itérations de parcours. Le nombre d’itérations est calculé par PIX, qui réexécute le code de parcours et continue jusqu’à rencontrer le point d’intersection d’origine. Ce nombre peut être surestimé, car la valeur MaxT d’origine définie pendant la passe de lancer de rayons n’est pas connue.Solid Color: colore les rayons en rose uni. Peut être utile lorsqu’il est difficile de voir les chemins des rayons.
Length: modifie la longueur des rayons affichés. À 100 %, les rayons sont dessinés jusqu’à leur point final d’origine ; réduire la longueur peut aider à comprendre le chemin parcouru par les rayons.Depth Test: détermine si les rayons sont dessinés par-dessus la géométrie de la scène ou à l’intérieur de celle-ci. La désactivation de cette option peut aider à trouver des rayons dans une grande scène où ils peuvent être entourés de géométrie.
Filter Displayed Rays permet de filtrer les rayons rendus afin d’examiner les zones problématiques.
Origin: filtre les rayons selon leur position d’origine ; ces curseurs divisent la scène en compartiments sur lesquels filtrer.Dispatch: filtre les rayons selon leur ID de dispatch.Selected Instance: filtre les rayons pour n’afficher que ceux qui se terminent sur l’instance sélectionnée.Iteration Count: filtre les rayons selon le nombre d’itérations effectuées pendant leur parcours. Cette valeur est recalculée selon la même méthode que pour Ray Path Heatmap. L’augmentation de cette valeur de filtre peut aider à trouver les objets ou chemins les plus coûteux de votre événement de lancer de rayons.
Modify TLAS est expérimental ; il permet de supprimer des instances ou de modifier les indicateurs d’opacité, puis de régénérer la TLAS. Les modifications effectuées dans ce panneau n’affectent que la visionneuse BVH et ne sont pas reflétées dans les autres composants de PIX, comme les sorties de dispatch ou le minutage des événements. La section Dispatch(Rays) Time (ms) du panneau Info, à droite de la visionneuse BVH, est affectée par ces modifications et peut être utilisée pour profiler les variations du temps d’exécution GPU dues aux modifications du contenu.
Notez que ces modifications ne peuvent pas actuellement être utilisées conjointement avec le système Ray Path Heatmap.
BLAS:Delete: supprime toutes les instances de la BLAS sélectionnéeForce Opaque: marque toutes les instances de la BLAS sélectionnée avec D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUEForce Non-Opaque: marque toutes les instances de la BLAS sélectionnée avec D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE
Instance:Delete: supprime l’instance sélectionnéeForce Opaque: marque l’instance sélectionnée avec D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUEForce Non-Opaque: marque l’instance sélectionnée avec D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE
All:Force Opaque: marque tous les objets de la scène avec D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUEForce Non-Opaque: marque tous les objets de la scène avec D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE
Apply Modifications: régénère la TLAS avec les instances modifiées, et met à jour la visionneuse BVH et les panneaux Info.Revert Modifications: régénère la TLAS avec les instances d’origine, et met à jour la visionneuse BVH et les panneaux Info.
Display on Console : copie l’affichage actuel de la BVH sur le périphérique de sortie de votre kit de développement.
