Partager via


structure D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS (d3d12.h)

Définit les entrées pour une opération de build de structure d’accélération de raytracing. Cette structure est utilisée par ID3D12GraphicsCommandList4 ::BuildRaytracingAccelerationStructure et ID3D12Device5 ::GetRaytracingAccelerationStructurePrebuildInfo.

Syntaxe

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;

Membres

Type

Type de structure d’accélération à générer.

Flags

Indicateurs de build.

NumDescs

Si Type est D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL, cette valeur correspond au nombre d’instances, disposées en fonction de DescsLayout.

Si Type est D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL, cette valeur correspond au nombre d’éléments référencés par pGeometryDescs ou ppGeometryDescs. Lequel de ces champs est utilisé dépend de DescsLayout.

DescsLayout

Comment les descriptions géométriques sont spécifiées ; tableau de descriptions ou tableau de pointeurs vers des descriptions.

InstanceDescs

Si Type est D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL, cela fait référence aux structures NumDescsD3D12_RAYTRACING_INSTANCE_DESC dans la mémoire GPU décrivant des instances. Chaque instance doit être aligné sur 16 octets, défini comme D3D12_RAYTRACING_INSTANCE_DESC_BYTE_ALIGNMENT.

Si Type n’est pas D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL, ce paramètre n’est pas utilisé.

Si DescLayout est D3D12_ELEMENTS_LAYOUT_ARRAY, InstanceDescs pointe vers un tableau de descriptions instance dans la mémoire GPU.

Si DescLayout est D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS, InstanceDescs pointe vers un tableau dans la mémoire GPU de D3D12_GPU_VIRTUAL_ADDRESS pointeurs vers instance descriptions.

La mémoire pointée vers doit être à l’état D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

pGeometryDescs

Si Type est D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL et Que DescsLayout est D3D12_ELEMENTS_LAYOUT_ARRAY, ce champ est utilisé et pointe vers les structures de D3D12_RAYTRACING_GEOMETRY_DESCcontiguës NumDescs sur le processeur, décrivant des géométries individuelles.

Si Type n’est pas D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL ou Si DescsLayout n’est pas D3D12_ELEMENTS_LAYOUT_ARRAY, ce paramètre n’est pas utilisé.

ppGeometryDescs

Si Type est D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL et que DescsLayout est D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS, ce champ est utilisé et pointe vers un tableau de pointeurs NumDescs vers D3D12_RAYTRACING_GEOMETRY_DESC structures sur le processeur, décrivant des géométries individuelles.

Remarques

Lorsqu’il est utilisé avec GetRaytracingAccelerationStructurePrebuildInfo, qui effectue une build, l’opération n’accède pas à tout paramètre référencé via D3D12_GPU_VIRTUAL_ADDRESS (une adresse dans la mémoire GPU), comme InstanceDescs. Cette mémoire n’a donc pas besoin d’être initialisée ou d’être dans un état de ressource particulier. Si les adresses GPU sont null ou non, vous pouvez inspecter par l’opération, même si les pointeurs ne sont pas déréférencés.

Configuration requise

Condition requise Valeur
En-tête d3d12.h