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

> 定義光線追蹤加速結構建置作業的輸入。此結構由下列項目使用。

定義光線追蹤加速結構建置作業的輸入。此結構由 [ID3D12GraphicsCommandList4::BuildRaytracingAccelerationStructure](/zh-TW/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist4/methods/id3d12graphicscommandlist4_buildraytracingaccelerationstructure_public) 與 [ID3D12Device5::GetRaytracingAccelerationStructurePrebuildInfo](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device5/methods/id3d12device5_getraytracingaccelerationstructureprebuildinfo_public) 使用。

## 語法

```cpp theme={null}
typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
{
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
    UINT NumDescs;
    D3D12_ELEMENTS_LAYOUT DescsLayout;
    D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
    const D3D12_RAYTRACING_GEOMETRY_DESC  pGeometryDescs;
    const D3D12_RAYTRACING_GEOMETRY_DESC const  ppGeometryDescs;
} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
```

### 成員

*Type*\
類型：D3D12\_RAYTRACING\_ACCELERATION\_STRUCTURE\_TYPE

要建置的加速結構類型。

*Flags*\
類型：D3D12\_RAYTRACING\_ACCELERATION\_STRUCTURE\_BUILD\_FLAGS

建置旗標。

*NumDescs*\
類型：UINT

如果 <i>Type</i> 為 **D3D12\_RAYTRACING\_ACCELERATION\_STRUCTURE\_TOP\_LEVEL**，此值為執行個體的數目，並根據 <i>DescsLayout</i> 配置。

如果 <i>Type</i> 為 **D3D12\_RAYTRACING\_ACCELERATION\_STRUCTURE\_BOTTOM\_LEVEL**，此值為 <i>pGeometryDescs</i> 或 <i>ppGeometryDescs</i> 所參考的元素數目。使用這兩個欄位中的哪一個取決於 <i>DescsLayout</i>。

*DescsLayout*\
類型：D3D12\_ELEMENTS\_LAYOUT

指定幾何描述的方式；可以是描述的陣列，或是指向描述之指標的陣列。

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

如果 <i>Type</i> 為 **D3D12\_RAYTRACING\_ACCELERATION\_STRUCTURE\_TOP\_LEVEL**，這會參考 GPU 記憶體中描述執行個體的 <i>NumDescs</i> 個 [D3D12\_RAYTRACING\_INSTANCE\_DESC](/zh-TW/reference/graphics/d3d12/structs/d3d12_raytracing_instance_desc_public) 結構。每個執行個體都必須對齊 16 位元組，定義為 [D3D12\_RAYTRACING\_INSTANCE\_DESC\_BYTE\_ALIGNMENT](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/constants)。

如果 <i>Type</i> 不是 **D3D12\_RAYTRACING\_ACCELERATION\_STRUCTURE\_TOP\_LEVEL**，則不會使用此參數。

如果 <i>DescLayout</i> 為 **D3D12\_ELEMENTS\_LAYOUT\_ARRAY**，<i>InstanceDescs</i> 會指向 GPU 記憶體中的執行個體描述陣列。

如果 <i>DescLayout</i> 為 **D3D12\_ELEMENTS\_LAYOUT\_ARRAY\_OF\_POINTERS**，<i>InstanceDescs</i> 會指向 GPU 記憶體中由指向執行個體描述之 [D3D12\_GPU\_VIRTUAL\_ADDRESS](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/d3d12_gpu_virtual_address) 指標所組成的陣列。

所指向的記憶體必須處於 [D3D12\_RESOURCE\_STATE\_NON\_PIXEL\_SHADER\_RESOURCE](/zh-TW/reference/graphics/d3d12_x/enums/d3d12_resource_states) 狀態。

*pGeometryDescs*\
類型：const D3D12\_RAYTRACING\_GEOMETRY\_DESC \*

如果 <i>Type</i> 為 **D3D12\_RAYTRACING\_ACCELERATION\_STRUCTURE\_BOTTOM\_LEVEL**，且 <i>DescsLayout</i> 為 **D3D12\_ELEMENTS\_LAYOUT\_ARRAY**，則會使用此欄位，並指向 CPU 上描述個別幾何的 <i>NumDescs</i> 個連續 **D3D12\_RAYTRACING\_GEOMETRY\_DESC** 結構。

如果 <i>Type</i> 不是 **D3D12\_RAYTRACING\_ACCELERATION\_STRUCTURE\_BOTTOM\_LEVEL**，或 <i>DescsLayout</i> 不是 **D3D12\_ELEMENTS\_LAYOUT\_ARRAY**，則不會使用此參數。

*ppGeometryDescs*\
類型：const D3D12\_RAYTRACING\_GEOMETRY\_DESC \*const \*

如果 <i>Type</i> 為 **D3D12\_RAYTRACING\_ACCELERATION\_STRUCTURE\_BOTTOM\_LEVEL**，且 <i>DescsLayout</i> 為 **D3D12\_ELEMENTS\_LAYOUT\_ARRAY\_OF\_POINTERS**，則會使用此欄位，並指向由 <i>NumDescs</i> 個指標組成的陣列，這些指標指向 CPU 上描述個別幾何的 [D3D12\_RAYTRACING\_GEOMETRY\_DESC](/zh-TW/reference/graphics/d3d12/structs/d3d12_raytracing_geometry_desc_public) 結構。

## 備註

與 [GetRaytracingAccelerationStructurePrebuildInfo](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device5/methods/id3d12device5_getraytracingaccelerationstructureprebuildinfo_public) 搭配使用時，任何透過 [D3D12\_GPU\_VIRTUAL\_ADDRESS](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/d3d12_gpu_virtual_address) (GPU 記憶體中的位址) 參考的參數 (例如 <i>InstanceDescs</i>) 都不會被該作業存取。因此，此記憶體尚不需要初始化，也不需要處於特定資源狀態。即使不會對指標進行取值，作業仍可能檢查 GPU 位址是否為 null。

## 需求

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


## Related topics

- [GetRaytracingAccelerationStructurePrebuildInfo](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device5/methods/id3d12device5_getraytracingaccelerationstructureprebuildinfo_public.md)
- [D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC](/zh-TW/reference/graphics/d3d12/structs/d3d12_build_raytracing_acceleration_structure_desc_public.md)
- [D3D12_RAYTRACING_GEOMETRY_DESC (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/structs/d3d12_raytracing_geometry_desc_public.md)
- [D3D12_RAYTRACING_GEOMETRY_AABBS_DESC (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/structs/d3d12_raytracing_geometry_aabbs_desc_public.md)
- [D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC](/zh-TW/reference/graphics/d3d12/structs/d3d12_raytracing_acceleration_structure_postbuild_info_desc_public.md)
