> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Bonnes pratiques et recommandations XDXR

> Bonnes pratiques et recommandations XDXR

XBOX DXR (XDXR) est disponible depuis un certain temps déjà, mais nous continuons d'étendre et d'améliorer notre prise en charge du raytracing sur les consoles XBOX Series X|S. Continuez à consulter cette page pour obtenir de nouveaux conseils, ainsi que les présentations ATG hébergées sur [https://aka.ms/gdkdl](https://aka.ms/gdkdl).

* Évitez d'utiliser des shaders any-hit et d'intersection, sauf si vous en avez réellement besoin. Lorsqu'ils sont utilisés, ces deux types de shaders augmentent considérablement le coût du parcours et de la planification. C'est un domaine sur lequel nous concentrerons nos efforts d'optimisation dans les futures versions du Microsoft Game Development Kit (GDK).
* Évitez la récursivité au-delà du niveau 1. Elle augmente la pression sur la pile et réduit donc le nombre de rayons simultanés en cours de traitement.
* Essayez de réduire le nombre de variables actives qui traversent le site d'appel de **TraceRay**. Ces variables doivent être écrites en mémoire avant l'exécution de **TraceRay**, puis restaurées depuis la mémoire au retour de **TraceRay**.
* Si possible, évitez de placer **TraceRay** dans des boucles for et des expressions imbriquées : le meilleur emplacement est la portée de fonction du Ray Generation Shader. Placer **TraceRay** dans un flux complexe augmente la taille du code et réduit le taux de réussite du cache d'instructions (I\$).
* Les shaders combinés dans un RTPSO doivent s'exécuter avec l'« occupation du pire cas », car ils partagent les allocations de VGPR. Préférez utiliser des RTPSO distincts pour les différents effets de raytracing. Si le nombre de VGPR des RTPSO reste élevé, envisagez de forcer le compilateur de shaders à déverser (spill) les registres au-delà d'une limite définie en utilisant `#define __XBOX_MAX_VGPR_COUNT {REGISTER COUNT}` dans vos shaders de raytracing. Cela échange une dégradation des performances d'ombrage due au déversement en mémoire contre de meilleures performances de parcours grâce à une occupation plus élevée. Comme le parcours représente souvent une grande partie du temps de raytracing, le bilan peut être positif. Essayez des multiples de 8 inférieurs à votre nombre total de VGPR et profilez les variations de performances.
* XDXR n'effectue actuellement pas l'inlining des petites tables de liaison de shaders. Si la logique d'ombrage anyhit/closest hit est simple, comme pour l'AO ou les ombres, préférez utiliser le [parcours autonome XDXR](/fr/build/core-features/graphics/newfeatures/raytracing/rt-standalone) pour améliorer les performances et l'occupation.
* Le pilote XDXR alloue de la mémoire de support pour le parcours de style `TraceRay()` de DXR 1.0. Si votre titre utilise uniquement le raytracing inline, vous pouvez souhaiter récupérer cette mémoire. Depuis juin 2022, elle représente 12 Mo sur XBOX Series S et 32 Mo sur XBOX Series X. Pour désactiver cette mémoire, un titre doit spécifier `D3D12_GPU_VIRTUAL_ADDRESS_UNKNOWN` pour `pDXRStackBuffer` et spécifier une taille de `0` pour `DXRStackBufferOverrideSizeBytes` dans [D3D12XBOX\_CREATE\_DEVICE\_PARAMETERS](/fr/reference/graphics/d3d12_xs/structs/d3d12xbox_create_device_parameters_xs).
* La version en en-tête inline de XDXR inclut le mécanisme InlineAHS() pour améliorer les performances anyhit ; privilégiez-le dans la mesure du possible afin de simplifier le flux de parcours.
* Suivez les bonnes pratiques générales du raytracing pour réduire au minimum le chevauchement des boîtes englobantes dans les constructions de BVH. Lorsque des modifications du contenu sont impossibles, envisagez d'utiliser la fonctionnalité TAPU décrite dans [Constructeurs de BVH XDXR](/fr/build/core-features/graphics/newfeatures/raytracing/rt-bvhbuilders).
* Évitez les triangles longs et fins dans la géométrie. Ils produisent des boîtes englobantes comportant beaucoup d'espace vide. Le constructeur hors ligne peut diviser les triangles en plusieurs boîtes englobantes ; toutefois, des modifications du contenu peuvent rester préférables et sont nécessaires pour le constructeur d'exécution.
* Les problèmes de contenu peuvent entraîner une grave dégradation des performances du raytracing. La visionneuse de BVH de PIX peut afficher une carte thermique des zones coûteuses lorsque vous sélectionnez une ressource BVH utilisée dans un appel Dispatch ou DispatchRays. PIX peut également afficher une vue filtrable et codée par couleur des rayons lancés pendant les événements de raytracing. Consultez [Visionneuse de BVH PIX](/fr/tools/tools-console/pix/gpu/pix-bvh-viewer).
* Utilisez les extensions `XDXR_*` mentionnées dans [XDXR (XBOX DXR) (détails d'implémentation)](/fr/build/core-features/graphics/newfeatures/raytracing/rt-xdxr) pour interroger l'état du parcours sans augmenter la taille de la charge utile.
* Envisagez d'ajouter `XBOX_RAY_FLAG_COHERENT_RAYS_HINT` aux indicateurs de rayon de votre `TraceRay()` DXR 1.0 pour les charges de travail très cohérentes, comme les ombres ou les réflexions non brillantes. Cet indicateur active un nouveau type de parcours optimisé pour ces charges de travail, qui peut offrir des performances nettement améliorées sur certains contenus. Les indicateurs de rayon et le pointeur de TLAS doivent être uniformes pour activer ce type de parcours. Pour `TraceRayInline()`, l'en-tête équivalent est `XDXRStandaloneTraverseHT.hlsli`.

## Voir aussi

[Vue d'ensemble du raytracing](/fr/build/core-features/graphics/newfeatures/raytracing/rt-overview)


## Related topics

- [Lancer de rayons sur XBOX Series X|S avec XDXR](/fr/build/core-features/graphics/newfeatures/raytracing/index.md)
- [Bonnes pratiques et recommandations pour les expériences](/fr/services/playfab/live-service-management/game-configuration/experiments/experimentation-keys.md)
- [Notions de base et bonnes pratiques de connexion](/fr/services/playfab/identity/player-identity/login/login-basics-best-practices.md)
- [Bonnes pratiques Insights](/fr/services/playfab/data-analytics/legacy/insights/best-practices.md)
- [Bonnes pratiques et tests des gamertags modernes](/fr/services/xbox-services/fundamentals/identity/user-profile/gamertags/live-modern-gamertags-best-practices-and-testing.md)
