> ## 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.

# Pratiques exemplaires et recommandations pour XDXR

> Pratiques exemplaires et recommandations pour XDXR

XBOX DXR (XDXR) est disponible depuis un certain temps déjà; toutefois, nous continuons d'étendre et d'améliorer notre prise en charge du lancer de rayons sur les consoles XBOX Series X|S. Continuez de consulter les nouveaux conseils publiés ici et dans les présentations de l'ATG hébergées à [https://aka.ms/gdkdl](https://aka.ms/gdkdl).

* Évitez d'utiliser des nuanceurs any-hit et d'intersection, sauf si vous en avez vraiment besoin. Lorsqu'ils sont utilisés, ces deux types de nuanceurs augmentent massivement 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écursion 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 à partir de la mémoire lorsque **TraceRay** retourne.
* Évitez si possible de placer **TraceRay** dans des boucles for et des expressions imbriquées; le meilleur endroit pour ces appels est la portée de la fonction du nuanceur de génération de rayons. 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 nuanceurs combinés dans un RTPSO doivent s'exécuter avec l'« occupation du pire cas » en raison du partage des allocations de VGPR. Privilégiez des RTPSO distincts pour différents effets de lancer de rayons. Si le nombre de VGPR des RTPSO reste élevé, envisagez de forcer le compilateur de nuanceurs à déverser les registres au-delà d'une limite définie en utilisant `#define __XBOX_MAX_VGPR_COUNT {REGISTER COUNT}` dans vos nuanceurs de lancer de rayons. Cela troque une baisse 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 lancer de rayons, cela peut constituer un gain net. Essayez de définir cette valeur sur des multiples de 8 inférieurs à votre nombre total de VGPR et profilez les changements de performances.
* XDXR n'effectue actuellement pas l'intégration en ligne des petites tables de liaison de nuanceurs. Si la logique d'ombrage anyhit/closest hit est simple, comme pour l'AO ou les ombres, privilégiez le [parcours autonome XDXR](/fr-CA/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 stockage pour le parcours de style `TraceRay()` de DXR 1.0. Si votre titre utilise uniquement le lancer de rayons en ligne, vous pourriez vouloir récupérer cette mémoire. En date de juin 2022, il s'agit de 12 Mo sur XBOX Series S et de 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-CA/reference/graphics/d3d12_xs/structs/d3d12xbox_create_device_parameters_xs).
* La version à en-tête en ligne de XDXR comprend le mécanisme InlineAHS() pour améliorer les performances anyhit; privilégiez-le dans la mesure du possible pour simplifier le flux de parcours.
* Suivez les pratiques exemplaires générales du lancer de rayons pour réduire au minimum le chevauchement des boîtes englobantes dans les constructions de BVH. Lorsque des modifications de contenu sont impossibles, envisagez d'utiliser la fonctionnalité TAPU décrite dans [Générateurs de BVH XDXR](/fr-CA/build/core-features/graphics/newfeatures/raytracing/rt-bvhbuilders).
* Évitez les triangles longs et minces dans la géométrie. Ils produisent des boîtes englobantes comportant de grandes quantités d'espace vide. Le générateur hors ligne peut diviser les triangles en plusieurs boîtes englobantes; toutefois, des modifications de contenu peuvent tout de même être préférables et sont requises pour le générateur à l'exécution.
* Les problèmes de contenu peuvent entraîner une grave dégradation des performances du lancer de rayons. 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 lancer de rayons. Consultez [Visionneuse de BVH de PIX](/fr-CA/tools/tools-console/pix/gpu/pix-bvh-viewer).
* Utilisez les extensions `XDXR_*` mentionnées dans [XDXR (XBOX DXR) (détails d'implémentation)](/fr-CA/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 considérablement améliorées pour 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 lancer de rayons](/fr-CA/build/core-features/graphics/newfeatures/raytracing/rt-overview)


## Related topics

- [Lancer de rayons sur la XBOX Series X|S avec XDXR](/fr-CA/build/core-features/graphics/newfeatures/raytracing/index.md)
- [Pratiques exemplaires et recommandations pour les expériences](/fr-CA/services/playfab/live-service-management/game-configuration/experiments/experimentation-keys.md)
- [Pratiques exemplaires](/fr-CA/services/xbox-services/develop/best-practices/index.md)
- [Pratiques exemplaires de construction de graphes de flux audio SHAPE](/fr-CA/build/console-features/audio/overviews/best-practices-audio-flowgraph-construction.md)
- [Pratiques exemplaires pour la résolution personnalisée de la diffusion de jeux en continu](/fr-CA/build/core-features/common/game-streaming/game-streaming-custom-resolution-best-practices.md)
