Freigeben über


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;
    const D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC *pOpacityMicromapArrayDesc;
  };
} 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.

pOpacityMicromapArrayDesc

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