D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS 結構 (d3d12.h)
定義光線追蹤加速結構建置作業的輸入。 此結構由 ID3D12GraphicsCommandList4::BuildRaytracingAccelerationStructure 和 ID3D12Device5::GetRaytracingAccelerationStructurePrebuildInfo 使用。
語法
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;
union {
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
要建置的加速結構類型。
Flags
組建旗標。
NumDescs
如果 Type 是 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL,則此值是以 DescsLayout 為基礎的實例數目。
如果 Type 是 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL,這個值就是 pGeometryDescs 或 ppGeometryDescs 所參考的元素數目。 使用哪一個字段取決於 DescsLayout。
DescsLayout
如何指定幾何描述;描述的陣列或描述的指標陣列。
InstanceDescs
如果 Type 是 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL,這是指描述實例之 GPU 記憶體中的 NumDescsD3D12_RAYTRACING_INSTANCE_DESC 結構。 每個實例都必須對齊 16 個字節,定義為 D3D12_RAYTRACING_INSTANCE_DESC_BYTE_ALIGNMENT。
如果未D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVELType,則不會使用此參數。
如果 DescLayout 是D3D12_ELEMENTS_LAYOUT_ARRAY,InstanceDescs 會指向 GPU 記憶體中的實例描述陣列。
如果 DescLayout是D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS,InstanceDescs 會指向 GPU 記憶體中的陣列,D3D12_GPU_VIRTUAL_ADDRESS實例描述的指標。
指向的記憶體必須處於狀態 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE。
pGeometryDescs
如果 Type 是 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL,且 DescsLayout是D3D12_ELEMENTS_LAYOUT_ARRAY,則會使用此字段,並指向 CPU 上的 NumDescs 連續 D3D12_RAYTRACING_GEOMETRY_DESC 結構,並描述個別幾何。
如果未D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVELType 或 DescsLayout 未D3D12_ELEMENTS_LAYOUT_ARRAY,則不會使用此參數。
ppGeometryDescs
如果 Type 是D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL,而 DescsLayout是D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS,則會使用此欄位,並指向 CPU 上D3D12_RAYTRACING_GEOMETRY_DESC結構的 NumDescs 指標陣列,並描述個別幾何。
備註
與實際執行組建的 GetRaytracingAccelerationStructurePrebuildInfo 搭配使用時,透過 D3D12_GPU_VIRTUAL_ADDRESS 參考的任何參數都會 (GPU 記憶體中的位址) ,例如 InstanceDescs,將無法由作業存取。 因此,此記憶體不需要初始化,或處於特定資源狀態。 即使指標未取值,GPU 位址還是無法由作業檢查。
規格需求
需求 | 值 |
---|---|
標頭 | d3d12.h |