D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS-Struktur (d3d12.h)
Definiert die Eingaben für einen Buildvorgang für die Raytracingbeschleunigungsstruktur. Diese Struktur wird von ID3D12GraphicsCommandList4::BuildRaytracingAccelerationStructure und ID3D12Device5::GetRaytracingAccelerationStructurePrebuildInfo verwendet.
Syntax
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;
Member
Type
Der Typ der zu erstellenden Beschleunigungsstruktur.
Flags
Die Buildflags.
NumDescs
Wenn TypeD3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL ist, ist dieser Wert die Anzahl der Instanzen, die basierend auf DescsLayout angeordnet sind.
Wenn TypeD3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL ist, ist dieser Wert die Anzahl der Elemente, auf die von pGeometryDescs oder ppGeometryDescs verwiesen wird. Welches dieser Felder verwendet wird, hängt von DescsLayout ab.
DescsLayout
Angabe von Geometriebeschreibungen; entweder ein Array von Beschreibungen oder ein Array von Zeigern auf Beschreibungen.
InstanceDescs
Wenn TypeD3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL ist, bezieht sich dies auf NumDescsD3D12_RAYTRACING_INSTANCE_DESC Strukturen im GPU-Speicher, die Instanzen beschreiben. Jede instance muss an 16 Bytes ausgerichtet werden, die als D3D12_RAYTRACING_INSTANCE_DESC_BYTE_ALIGNMENT definiert sind.
Wenn Type nicht D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL ist, wird dieser Parameter nicht verwendet.
Wenn DescLayoutD3D12_ELEMENTS_LAYOUT_ARRAY ist, verweist InstanceDescs auf ein Array von instance Beschreibungen im GPU-Speicher.
Wenn DescLayoutD3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS ist, zeigt InstanceDescs auf ein Array im GPU-Speicher mit D3D12_GPU_VIRTUAL_ADDRESS Zeigern auf instance Beschreibungen.
Der Speicher, auf den verwiesen wird, muss sich im Zustand D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE befinden.
pGeometryDescs
Wenn TypeD3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL und DescsLayoutD3D12_ELEMENTS_LAYOUT_ARRAY ist, wird dieses Feld verwendet und verweist auf numDescs zusammenhängende D3D12_RAYTRACING_GEOMETRY_DESC Strukturen auf der CPU, wobei einzelne Geometrien beschrieben werden.
Wenn Type nicht D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL oder DescsLayout nicht D3D12_ELEMENTS_LAYOUT_ARRAY ist, wird dieser Parameter nicht verwendet.
ppGeometryDescs
Wenn TypeD3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL und DescsLayoutD3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS ist, wird dieses Feld verwendet und verweist auf ein Array von NumDescs-Zeigern auf D3D12_RAYTRACING_GEOMETRY_DESC Strukturen auf der CPU, wobei einzelne Geometrien beschrieben werden.
Hinweise
Bei Verwendung mit GetRaytracingAccelerationStructurePrebuildInfo, die tatsächlich einen Build ausführen, wird nicht auf alle Parameter zugegriffen, auf die über D3D12_GPU_VIRTUAL_ADDRESS (eine Adresse im GPU-Speicher) verwiesen wird, z. B. InstanceDescs. Daher muss dieser Arbeitsspeicher noch nicht initialisiert werden oder sich in einem bestimmten Ressourcenzustand befinden. Ob GPU-Adressen NULL sind oder nicht, kann vom Vorgang überprüft werden, auch wenn die Zeiger nicht dereferenziert sind.
Anforderungen
Anforderung | Wert |
---|---|
Header | d3d12.h |