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

# Práticas recomendadas e recomendações do XDXR

> Práticas recomendadas e recomendações do XDXR

O XBOX DXR (XDXR) já está disponível há algum tempo, mas continuamos a expandir e aprimorar nosso suporte a raytracing nos consoles XBOX Series X|S. Continue verificando se há novas orientações aqui e nas apresentações do ATG hospedadas em [https://aka.ms/gdkdl](https://aka.ms/gdkdl).

* Evite usar sombreadores any-hit e de interseção, a menos que você realmente precise deles. Quando usados, ambos os tipos de sombreador aumentam muito o custo de travessia e de agendamento. Essa é uma área em que nos concentraremos para otimização em versões futuras do Microsoft Game Development Kit (GDK).
* Evite recursão acima do nível 1. Isso aumenta a pressão sobre a pilha e, portanto, reduz o número de raios simultâneos em andamento.
* Tente reduzir o número de variáveis ativas que atravessam o ponto de chamada de **TraceRay**. Essas variáveis precisam ser gravadas na memória antes da execução de **TraceRay** e restauradas da memória quando **TraceRay** retorna.
* Se possível, evite colocar **TraceRay** dentro de loops for e de expressões aninhadas; o melhor lugar para essas chamadas é o escopo da função do sombreador de geração de raios. Colocar **TraceRay** em um fluxo complexo aumenta o tamanho do código e reduz a taxa de acertos do cache de instruções (I\$).
* Os sombreadores combinados em um RTPSO devem ser executados com a "ocupação do pior caso", pois compartilham as alocações de VGPR. Prefira usar RTPSOs separados para diferentes efeitos de raytracing. Se a contagem de VGPRs do RTPSO continuar alta, considere forçar o compilador de sombreadores a descarregar registradores além de um limite definido, usando `#define __XBOX_MAX_VGPR_COUNT {REGISTER COUNT}` nos seus sombreadores de raytracing. Isso troca um desempenho de sombreamento pior, devido ao descarregamento na memória, por um melhor desempenho de travessia, devido à maior ocupação. Como a travessia muitas vezes representa uma grande parte do tempo de raytracing, isso pode ser vantajoso no geral. Tente definir esse valor como múltiplos de 8 abaixo da sua contagem total de VGPRs e crie perfis das alterações de desempenho.
* Atualmente, o XDXR não realiza o inlining de pequenas tabelas de associação de sombreadores. Se a lógica de sombreamento anyhit/closest hit for simples, como para AO ou sombras, prefira usar a [travessia autônoma do XDXR](/pt-BR/build/core-features/graphics/newfeatures/raytracing/rt-standalone) para obter melhorias de desempenho e de ocupação.
* O driver do XDXR aloca memória de suporte para a travessia no estilo `TraceRay()` do DXR 1.0. Se o seu título usar apenas raytracing embutido, talvez você queira recuperar essa memória. Em junho de 2022, isso corresponde a 12 MB no XBOX Series S e 32 MB no XBOX Series X. Para desabilitar essa memória, o título deve especificar `D3D12_GPU_VIRTUAL_ADDRESS_UNKNOWN` para `pDXRStackBuffer`, além de especificar um tamanho de `0` para `DXRStackBufferOverrideSizeBytes` em [D3D12XBOX\_CREATE\_DEVICE\_PARAMETERS](/pt-BR/reference/graphics/d3d12_xs/structs/d3d12xbox_create_device_parameters_xs).
* A versão de cabeçalho embutido do XDXR inclui o mecanismo InlineAHS() para melhorar o desempenho de anyhit; prefira-o sempre que possível para simplificar o fluxo de travessia.
* Siga as práticas recomendadas gerais de raytracing para minimizar a sobreposição de caixas delimitadoras nos builds de BVH. Quando não for possível alterar o conteúdo, considere utilizar o recurso TAPU especificado em [Construtores de BVH do XDXR](/pt-BR/build/core-features/graphics/newfeatures/raytracing/rt-bvhbuilders).
* Evite triângulos longos e finos na geometria. Eles geram caixas delimitadoras com grandes quantidades de espaço vazio. O construtor offline pode dividir triângulos em várias caixas delimitadoras; no entanto, alterações no conteúdo ainda podem ser preferíveis e são necessárias para o construtor em tempo de execução.
* Problemas de conteúdo podem causar uma degradação grave do desempenho de raytracing. O visualizador de BVH do PIX pode exibir um mapa de calor das áreas custosas ao selecionar qualquer recurso de BVH usado em uma chamada de Dispatch ou DispatchRays. O PIX também pode exibir uma visualização codificada por cores e filtrável dos raios lançados durante eventos de raytracing. Confira [Visualizador de BVH do PIX](/pt-BR/tools/tools-console/pix/gpu/pix-bvh-viewer).
* Use as extensões `XDXR_*` mencionadas em [XDXR (XBOX DXR) (detalhes de implementação)](/pt-BR/build/core-features/graphics/newfeatures/raytracing/rt-xdxr) para consultar o estado da travessia sem aumentar o tamanho do payload.
* Considere adicionar `XBOX_RAY_FLAG_COHERENT_RAYS_HINT` aos sinalizadores de raio de `TraceRay()` do DXR 1.0 para cargas de trabalho altamente coerentes, como sombras ou reflexos não brilhantes. Esse sinalizador habilita um novo tipo de travessia otimizado para essas cargas de trabalho e pode proporcionar um desempenho significativamente melhor em alguns conteúdos. Os sinalizadores de raio e o ponteiro da TLAS devem ser uniformes para habilitar esse tipo de travessia. Para `TraceRayInline()`, o cabeçalho equivalente é `XDXRStandaloneTraverseHT.hlsli`.

## Confira também

[Visão geral de raytracing](/pt-BR/build/core-features/graphics/newfeatures/raytracing/rt-overview)


## Related topics

- [Ray tracing no XBOX Series X|S com XDXR](/pt-BR/build/core-features/graphics/newfeatures/raytracing/index.md)
- [Diretório de tópicos NDA: links ativos do Microsoft Learn](/pt-BR/nda/nda-topic-directory.md)
- [Práticas recomendadas e recomendações de experimentos](/pt-BR/services/playfab/live-service-management/game-configuration/experiments/experimentation-keys.md)
- [Práticas recomendadas para construção de flowgraphs de áudio do SHAPE](/pt-BR/build/console-features/audio/overviews/best-practices-audio-flowgraph-construction.md)
- [Práticas recomendadas do Insights](/pt-BR/services/playfab/data-analytics/legacy/insights/best-practices.md)
