Share via


D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS enumeração (d3d12.h)

Especifica sinalizadores para a compilação de uma estrutura de aceleração de raytracing. Use um valor dessa enumeração com a estrutura D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS que fornece entrada para a operação de build da estrutura de aceleração.

Syntax

typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS {
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20
} ;

Constantes

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE
Valor: 0
Nenhuma opção especificada para o build da estrutura de aceleração.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE
Valor: 0x1
Crie a estrutura de aceleração de modo 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, tempos de build e menor desempenho de raytracing. No entanto, as atualizações futuras devem ser mais rápidas do que criar a estrutura de aceleração equivalente do zero.

Esse sinalizador só pode ser definido em um build de estrutura de aceleração inicial ou em uma atualização em que a estrutura de aceleração de origem especificada D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE. Em outras palavras, depois que uma estrutura de aceleração foi criada sem D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE, nenhuma outra estrutura de aceleração pode ser criada a partir dela por meio de atualizações.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION
Valor: 0x2
Habilita a opção para compactar a estrutura de aceleração chamando CopyRaytracingAccelerationStructure usando o modo compacto, especificado com D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT.

Essa opção pode resultar em maior consumo de memória e tempos de build. Após a compactação futura, no entanto, a estrutura de aceleração resultante deve consumir um volume de memória menor do que criar a estrutura de aceleração do zero.

Esse sinalizador é compatível com todos os outros sinalizadores. Se especificado como parte de uma atualização de estrutura de aceleração, a estrutura de aceleração de origem também deverá ter sido criada com esse sinalizador. Em outras palavras, depois que uma estrutura de aceleração foi criada sem D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION, nenhuma outra estrutura de aceleração pode ser criada a partir dela por meio de atualizações que especificam D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION.



Especificar ALLOW_COMPACTION pode aumentar o tamanho da estrutura de aceleração de pré-compactação em vez de não especificar ALLOW_COMPACTION.



Se várias compilações incrementais forem executadas antes da compactação, poderá haver trabalho relacionado à compactação redundante executado.


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.

Nota 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á muito. 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 duas vezes - uma após o build inicial e novamente após a estrutura de aceleração ter sido resolvida em um estado estático, se isso ocorrer.

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE
Valor: 0x4
Construa uma estrutura de aceleração de alta qualidade que maximize o desempenho do raytracing em detrimento do tempo de build adicional. Normalmente, a implementação levará de 2 a 3 vezes o tempo de build do que a configuração padrão para obter um melhor desempenho de rastreamento.

Esse sinalizador é recomendado para geometria estática em particular. Ele é compatível com todos os outros sinalizadores, exceto para D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD
Valor: 0x8
Construa uma estrutura de aceleração de qualidade inferior, negociando o desempenho de raytracing para velocidade de build. Normalmente, a implementação levará de 1/2 a 1/3 o tempo de build do que a configuração padrão, com um sacrifício no desempenho de rastreamento.

Esse sinalizador é compatível com todos os outros sinalizadores, exceto para D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY
Valor: 0x10
Minimize a quantidade de memória de rascunho usada durante o build da estrutura de aceleração, bem como o tamanho do resultado. Essa opção pode resultar em tempos de build maiores e/ou tempos de raytracing. Isso é ortogonal para o sinalizador D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION e a compactação explícita da estrutura de aceleração que ele habilita. Combinar os sinalizadores pode significar que a estrutura de aceleração inicial, bem como o resultado da compactação, usam menos memória.

O impacto do uso desse sinalizador para um build é refletido no resultado da chamada de GetRaytracingAccelerationStructurePrebuildInfo antes de fazer o build para recuperar os requisitos de memória para o build.

Esse sinalizador é compatível com todos os outros sinalizadores.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE
Valor: 0x20
Execute uma atualização de estrutura de aceleração, em vez de compilar do zero. Isso é mais rápido do que um build completo, mas pode afetar negativamente o desempenho do raytracing, especialmente se as posições dos objetos subjacentes tiverem sido alteradas significativamente do build original da estrutura de aceleração antes das atualizações.

Se os endereços das estruturas de aceleração de origem e destino forem idênticos, a atualização será executada in-loco. Qualquer outra sobreposição de intervalos de endereços da origem e do destino é inválida. Para origem e destinos não sobrepostos, 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 que na estrutura de aceleração de entrada

A estrutura de aceleração de origem deve ter sido criada com D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE.

Esse sinalizador é compatível com todos os outros sinalizadores. As outras 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 na 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 para o build de atualização continuem a especificar D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE.

Requisitos

Requisito Valor
Cabeçalho d3d12.h