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