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

# D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC

> 描述光線追蹤加速結構。將此結構傳入 ID3D12GraphicsCommandList4::BuildRaytracingAccelerationStructure 以描述。

描述光線追蹤加速結構。將此結構傳入 [ID3D12GraphicsCommandList4::BuildRaytracingAccelerationStructure](/zh-TW/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist4/methods/id3d12graphicscommandlist4_buildraytracingaccelerationstructure_public)，以描述要建置的加速結構。

## 語法

```cpp theme={null}
typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
{
    D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
    D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
    D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
    D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
```

### 成員

*DestAccelerationStructureData*\
類型：D3D12\_GPU\_VIRTUAL\_ADDRESS

儲存所產生之加速結構的位置。[ID3D12Device5::GetRaytracingAccelerationStructurePrebuildInfo](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device5/methods/id3d12device5_getraytracingaccelerationstructureprebuildinfo_public) 會根據一組加速結構建置參數，回報此處結果所需的記憶體數量。

位址必須對齊 256 位元組，定義為 [D3D12\_RAYTRACING\_ACCELERATION\_STRUCTURE\_BYTE\_ALIGNMENT](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/constants)。

<Info>
  記憶體必須處於 [**D3D12\_RESOURCE\_STATE\_RAYTRACING\_ACCELERATION\_STRUCTURE**](/zh-TW/reference/graphics/d3d12_x/enums/d3d12_resource_states) 狀態。
</Info>

*Inputs*\
類型：D3D12\_BUILD\_RAYTRACING\_ACCELERATION\_STRUCTURE\_INPUTS

加速結構建置之輸入資料的描述。此資料儲存在個別的結構中，因為 **GetRaytracingAccelerationStructurePrebuildInfo** 也會使用它。

*SourceAccelerationStructureData*\
類型：D3D12\_GPU\_VIRTUAL\_ADDRESS

如果透過在 Flags 參數中設定 [D3D12\_RAYTRACING\_ACCELERATION\_STRUCTURE\_BUILD\_FLAG\_PERFORM\_UPDATE](/zh-TW/reference/graphics/d3d12/enums/d3d12_raytracing_acceleration_structure_build_flags_public) 來要求加速結構更新 (增量建置)，則為現有加速結構的位址。否則此位址必須為 NULL。

如果此位址與 <i>DestAccelerationStructureData</i> 相同，則會就地執行更新。來源與目的地記憶體的任何其他形式重疊都是無效的，並會產生未定義的行為。

位址必須對齊 256 位元組，定義為 [D3D12\_RAYTRACING\_ACCELERATION\_STRUCTURE\_BYTE\_ALIGNMENT](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/constants)；這應該會自動成立，因為此處傳入的任何現有加速結構，先前就已必須以這樣的對齊方式放置。

<Info>
  記憶體必須處於 [**D3D12\_RESOURCE\_STATE\_RAYTRACING\_ACCELERATION\_STRUCTURE**](/zh-TW/reference/graphics/d3d12_x/enums/d3d12_resource_states) 狀態。
</Info>

#### ScratchAccelerationStructureData

建置作業將儲存暫存資料的位置。**GetRaytracingAccelerationStructurePrebuildInfo** 會回報實作針對一組指定的加速結構建置參數所需的暫存記憶體數量。

<Info>
  記憶體必須處於 [**D3D12\_RESOURCE\_STATE\_UNORDERED\_ACCESS**](/zh-TW/reference/graphics/d3d12_x/enums/d3d12_resource_states) 狀態。
</Info>

*ScratchAccelerationStructureData*\
類型：D3D12\_GPU\_VIRTUAL\_ADDRESS

## 需求

**標頭:** d3d12\_xs.h\
**程式庫:** d3d12\_xs.lib\
**支援的平台**: XBOX Series 主機


## Related topics

- [BuildRaytracingAccelerationStructure (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist4/methods/id3d12graphicscommandlist4_buildraytracingaccelerationstructure_public.md)
- [D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS](/zh-TW/reference/graphics/d3d12/structs/d3d12_build_raytracing_acceleration_structure_inputs_public.md)
- [D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC](/zh-TW/reference/graphics/d3d12/structs/d3d12_raytracing_acceleration_structure_postbuild_info_desc_public.md)
- [D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/structs/d3d12_build_raytracing_acceleration_structure_tools_visualization_header_public.md)
- [D3D12_RAYTRACING_GEOMETRY_DESC (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/structs/d3d12_raytracing_geometry_desc_public.md)
