Compartilhar via


estrutura D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS (d3d12.h)

Define as entradas para uma operação de build de estrutura de aceleração de raytracing. Essa estrutura é usada por ID3D12GraphicsCommandList4::BuildRaytracingAccelerationStructure e ID3D12Device5::GetRaytracingAccelerationStructurePrebuildInfo.

Sintaxe

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;

Membros

Type

O tipo de estrutura de aceleração a ser compilada.

Flags

Os sinalizadores de build.

NumDescs

Se Type for D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL, esse valor será o número de instâncias, disposto com base em DescsLayout.

Se Type for D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL, esse valor será o número de elementos referenciados por pGeometryDescs ou ppGeometryDescs. Qual desses campos é usado depende de DescsLayout.

DescsLayout

Como as descrições de geometria são especificadas; uma matriz de descrições ou uma matriz de ponteiros para descrições.

InstanceDescs

Se Type for D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL, isso se referirá a Estruturas de D3D12_RAYTRACING_INSTANCE_DESCNumDescs na memória de GPU que descrevem instâncias. Cada instância deve ser alinhada a 16 bytes, definidos como D3D12_RAYTRACING_INSTANCE_DESC_BYTE_ALIGNMENT.

Se Type não for D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TOP_LEVEL, esse parâmetro não será utilizado.

Se DescLayout for D3D12_ELEMENTS_LAYOUT_ARRAY, InstanceDescs apontará para uma matriz de descrições de instância na memória da GPU.

Se DescLayout for D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS, InstanceDescs apontará para uma matriz na memória de GPU de D3D12_GPU_VIRTUAL_ADDRESS ponteiros para descrições de instância.

A memória apontada deve estar no estado D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.

pGeometryDescs

Se Type for D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL e DescsLayout for D3D12_ELEMENTS_LAYOUT_ARRAY, esse campo será usado e apontará para estruturas de D3D12_RAYTRACING_GEOMETRY_DESC contíguas numDescs na CPU, descrevendo geometrias individuais.

Se Type não for D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL ou DescsLayout não for D3D12_ELEMENTS_LAYOUT_ARRAY, esse parâmetro não será utilizado.

ppGeometryDescs

Se Type for D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BOTTOM_LEVEL e DescsLayout for D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS, esse campo será usado e apontará para uma matriz de ponteiros NumDescs para D3D12_RAYTRACING_GEOMETRY_DESC estruturas na CPU, descrevendo geometrias individuais.

Comentários

Quando usado com GetRaytracingAccelerationStructurePrebuildInfo, que realmente executa um build, qualquer parâmetro referenciado por meio de D3D12_GPU_VIRTUAL_ADDRESS (um endereço na memória gpu), como InstanceDescs, não será acessado pela operação. Portanto, essa memória ainda não precisa ser inicializada ou estar em um estado de recurso específico. Se os endereços GPU são nulos ou não podem ser inspecionados pela operação, mesmo que os ponteiros não sejam desreferenciados.

Requisitos

Requisito Valor
Cabeçalho d3d12.h