Sintaxe
typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
{
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0x00,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x01,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x02,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x04,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x08,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_DEHYDRATE = 0x40000000,
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
Constantes
| Constante | Descrição |
|---|---|
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE | Nenhuma opção especificada para a compilação da estrutura de aceleração. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE | Compila a estrutura de aceleração de forma que ela dê suporte a atualizações futuras (por meio do sinalizador D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE), em vez de o aplicativo precisar recompilar totalmente a estrutura. Essa opção pode resultar em maior consumo de memória, maiores tempos de compilação e menor desempenho de raytracing. No entanto, as atualizações futuras devem ser mais rápidas do que compilar a estrutura de aceleração equivalente do zero. Esse sinalizador só pode ser definido em uma compilação inicial da estrutura de aceleração ou em uma atualização em que a estrutura de aceleração de origem tenha especificado D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE. Em outras palavras, depois que uma estrutura de aceleração tiver sido compilada sem D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE, nenhuma outra estrutura de aceleração poderá ser criada a partir dela por meio de atualizações. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION | Habilita a opção de compactar a estrutura de aceleração chamando CopyRaytracingAccelerationStructure usando o modo de compactação, especificado com D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT. Essa opção pode resultar em maior consumo de memória e maiores tempos de compilação. No entanto, após a compactação futura, a estrutura de aceleração resultante deve ocupar menos memória do que compilar a estrutura de aceleração do zero. Esse sinalizador é compatível com todos os outros sinalizadores. Se especificado como parte de uma atualização da estrutura de aceleração, a estrutura de aceleração de origem também deverá ter sido compilada com esse sinalizador. Em outras palavras, depois que uma estrutura de aceleração tiver sido compilada sem D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION, nenhuma outra estrutura de aceleração poderá ser criada a partir dela por meio de atualizações que especifiquem D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION. Especificar ALLOW_COMPACTION pode aumentar o tamanho da estrutura de aceleração antes da compactação em comparação a não especificar ALLOW_COMPACTION. Se várias compilações incrementais forem executadas antes da compactação final, poderá haver trabalho redundante relacionado à compactação. O tamanho necessário para a estrutura de aceleração compactada pode ser consultado antes da compactação por meio de EmitRaytracingAccelerationStructurePostbuildInfo. Consulte D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC para obter mais informações sobre as propriedades do tamanho da estrutura de aceleração compactada. Observação Quando D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE é especificado, há certas informações que precisam ser mantidas na estrutura de aceleração, e a compactação só ajudará até certo ponto. No entanto, se o pipeline souber que a estrutura de aceleração não será mais atualizada, ele poderá tornar a estrutura mais compacta. Alguns aplicativos podem se beneficiar da compactação dupla: uma vez após a compilação inicial e novamente depois que a estrutura de aceleração se estabilizar em um estado estático, se isso ocorrer. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE | Constrói uma estrutura de aceleração de alta qualidade que maximiza o desempenho de raytracing à custa de tempo adicional de compilação. Normalmente, a implementação levará de 2 a 3 vezes o tempo de compilação da configuração padrão para obter um melhor desempenho de rastreamento. Esse sinalizador é recomendado especialmente para geometria estática. Ele é compatível com todos os outros sinalizadores, exceto D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD | Constrói uma estrutura de aceleração de qualidade inferior, trocando desempenho de raytracing por velocidade de compilação. Normalmente, a implementação levará de 1/2 a 1/3 do tempo de compilação da configuração padrão, com sacrifício no desempenho de rastreamento. Esse sinalizador é compatível com todos os outros sinalizadores, exceto D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY | Minimiza a quantidade de memória de rascunho usada durante a compilação da estrutura de aceleração, bem como o tamanho do resultado. Essa opção pode resultar em maiores tempos de compilação e/ou de raytracing. Isso é ortogonal ao sinalizador D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION e à compactação explícita da estrutura de aceleração que ele habilita. Combinar os sinalizadores pode significar que tanto a estrutura de aceleração inicial quanto o resultado de sua compactação usem menos memória. O impacto do uso desse sinalizador em uma compilação é refletido no resultado da chamada de GetRaytracingAccelerationStructurePrebuildInfo antes da compilação para recuperar os requisitos de memória da compilação. Esse sinalizador é compatível com todos os outros sinalizadores. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE | Executa uma atualização da estrutura de aceleração, em vez de compilá-la do zero. Isso é mais rápido do que uma compilação completa, mas pode afetar negativamente o desempenho de raytracing, especialmente se as posições dos objetos subjacentes tiverem mudado significativamente desde a compilação original da estrutura de aceleração antes das atualizações. Se os endereços das estruturas de aceleração de origem e de destino forem idênticos, a atualização será executada no local. Qualquer outra sobreposição dos intervalos de endereços de origem e destino é inválida. Para origens e destinos sem sobreposição, a estrutura de aceleração de origem não é modificada. O requisito de memória para a estrutura de aceleração de saída é o mesmo da estrutura de aceleração de entrada A estrutura de aceleração de origem deve ter sido compilada com D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE. Esse sinalizador é compatível com todos os outros sinalizadores. As demais seleções de sinalizadores, além de D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE e D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE, devem corresponder aos sinalizadores da estrutura de aceleração de origem. As atualizações da estrutura de aceleração podem ser executadas em sucessão ilimitada, desde que a estrutura de aceleração de origem tenha sido criada com D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE e os sinalizadores da compilação de atualização continuem especificando D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE. |
| D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_DEHYDRATE | Gera uma BVH desidratada (os dados de geometria são zerados) que pode ser compactada com Deflate. A BVH pode ser reidratada no local usando a GPU com ID3D12GraphicsCommandList8::RehydrateRaytracingAccelerationStructureBatchedX ou pela CPU com ID3D12Device11::RehydrateRaytracingAccelerationStructureX |
Requisitos
Cabeçalho: d3d12_xs.hBiblioteca: d3d12_xs.lib
Plataformas com suporte: consoles XBOX Series
