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

# DispatchRaysX (consoles XBOX Series)

> Versão extensível de DispatchRays. O conjunto de memória de trabalho pode ser fornecido pelo usuário.

Versão extensível de DispatchRays. O conjunto de memória de trabalho pode ser fornecido pelo usuário.

## Sintaxe

```cpp theme={null}
void DispatchRaysX(  
         const D3D12XBOX_DISPATCH_RAYS_DESC* pDesc  
)  
```

### Parâmetros

*pDesc*   \_In\_\
Tipo: [D3D12XBOX\_DISPATCH\_RAYS\_DESC\*](/pt-BR/reference/graphics/d3d12_xs/structs/d3d12xbox_dispatch_rays_desc)

Internamente, DispatchRays usa uma alocação do driver para a pilha DXR e sincroniza automaticamente o acesso a essa memória. DispatchRaysX permite que o título especifique sua própria alocação de memória e seu tamanho. O driver redimensionará o Dispatch interno de ray tracing adequadamente.

### Valor retornado

Tipo: void

## Comentários

Exemplo 1 -- um aplicativo usa sua própria alocação de memória e precisa garantir a sincronização adequada

```CPP theme={null}
D3D12XBOX_DISPATCH_RAYS_DESC dispatchDescX {};
dispatchDescX.DispatchArgs = dispatchDesc;
dispatchDescX.Scratch.StartAddress = m_customStackScratch->GetGPUVirtualAddress();
dispatchDescX.Scratch.SizeInBytes = CUSTOM_SCRATCH_SIZE;
m_commandList->DispatchRaysX(&dispatchDescX);  
```

O dimensionamento da memória de rascunho (scratch) pode ser feito de forma aproximada; por exemplo, o driver usa um scratch do mesmo tamanho para todos os dispatches (ele apenas varia o número de waves em execução), ou ela pode ser dimensionada adequadamente. Observe que há algumas implicações de desempenho para espaços de scratch extremamente reduzidos, devido à redução da ocupação. Se for necessário um cálculo mais preciso, GetInformationX poderá ser usado para consultá-lo.

Exemplo 2 -- usando GetInformationX para consultar a quantidade de scratch necessária por wave

```CPP theme={null}
D3D12XBOX_RAYTRACING_INFORMATION stats {};
ComPtr<ID3D12StateObjectProperties> stateObjectProperties;
auto& ref = ComPtr<ID3D12StateObject>(pRTPSO);
ThrowIfFailed(ref.As(&stateObjectProperties));
stateObjectProperties->GetInformationX(0, &stats);  
```

Dentro da estrutura "stats" há um campo chamado ScratchSize, que é o número de bytes de scratch necessários por lane. O scratch é alocado em blocos de 1024B; portanto, para obter a alocação segura para uma wave, precisamos calcular ScratchSize \* 32 (o XDXR sempre executa wave 32 internamente) e arredondar para cima até 1KB.

## Requisitos

**Cabeçalho:** d3d12\_xs.h

**Biblioteca:** d3d12\_xs.lib\
**Plataformas compatíveis**: consoles XBOX Series

## Confira também

[ID3D12GraphicsCommandList6](/pt-BR/reference/graphics/d3d12_xs/interfaces/ID3D12GraphicsCommandList6/id3d12graphicscommandlist6)


## Related topics

- [DispatchRays (XBOX Series consoles)](/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist4/methods/id3d12graphicscommandlist4_dispatchrays_public.md)
- [D3D12_DISPATCH_RAYS_DESC (XBOX Series consoles)](/reference/graphics/d3d12/structs/d3d12_dispatch_rays_desc_public.md)
- [DispatchRays (consolas XBOX Series)](/es/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist4/methods/id3d12graphicscommandlist4_dispatchrays_public.md)
- [DispatchRays (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist4/methods/id3d12graphicscommandlist4_dispatchrays_public.md)
- [DispatchRays (XBOX Series 콘솔)](/ko/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist4/methods/id3d12graphicscommandlist4_dispatchrays_public.md)
