estructura D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS (d3d12.h)

Define las entradas de una operación de compilación de estructura de aceleración raytracing. Id3D12GraphicsCommandList4::BuildRaytracingAccelerationStructure y ID3D12Device5::GetRaytracingAccelerationStructurePrebuildInfo.

Sintaxis

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;

Miembros

Type

Tipo de estructura de aceleración que se va a compilar.

Flags

Marcas de compilación.

NumDescs

Si Type es D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL, este valor es el número de instancias, que se establecen en función de DescsLayout.

Si Type es D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL, este valor es el número de elementos a los que hace referencia pGeometryDescs o ppGeometryDescs. Cuál de estos campos se usa depende de DescsLayout.

DescsLayout

Cómo se especifican las descripciones de geometría; una matriz de descripciones o una matriz de punteros a descripciones.

InstanceDescs

Si Type es D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL, esto hace referencia a NumDescsD3D12_RAYTRACING_INSTANCE_DESC estructuras en memoria de GPU que describen instancias. Cada instancia debe estar alineada con 16 bytes, definidas como D3D12_RAYTRACING_INSTANCE_DESC_BYTE_ALIGNMENT.

Si Type no está D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL, este parámetro no se usa.

Si DescLayout está D3D12_ELEMENTS_LAYOUT_ARRAY, InstanceDescs apunta a una matriz de descripciones de instancias en memoria de GPU.

Si DescLayout está D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS, InstanceDescs apunta a una matriz en memoria gpu de punteros de D3D12_GPU_VIRTUAL_ADDRESS a descripciones de instancia.

La memoria a la que apunta debe estar en estado D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

pGeometryDescs

Si Type es D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL y DescsLayout es D3D12_ELEMENTS_LAYOUT_ARRAY, este campo se usa y apunta a NumDescscontiguos D3D12_RAYTRACING_GEOMETRY_DESC estructuras en la CPU, que describen geometrías individuales.

Si Type no está D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL o DescsLayout no está D3D12_ELEMENTS_LAYOUT_ARRAY, este parámetro no se usa.

ppGeometryDescs

Si Type es D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL y DescsLayout es D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS, este campo se usa y apunta a una matriz de punteros NumDescs para D3D12_RAYTRACING_GEOMETRY_DESC estructuras en la CPU, que describen geometrías individuales.

Comentarios

Cuando se usa con GetRaytracingAccelerationStructurePrebuildInfo, que realmente realiza una compilación, cualquier parámetro al que se hace referencia a través de D3D12_GPU_VIRTUAL_ADDRESS (una dirección en memoria de GPU), como InstanceDescs, no será accesible por la operación. Por lo tanto, esta memoria aún no necesita inicializarse o estar en un estado de recurso determinado. Si las direcciones de GPU son nulas o no se pueden inspeccionar mediante la operación, aunque los punteros no se desreferencian.

Requisitos

Requisito Valor
Header d3d12.h