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 |