enumerazione D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS (d3d12.h)

Specifica i flag per la compilazione di una struttura di accelerazione raytracing. Usare un valore da questa enumerazione con la struttura di D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS che fornisce input all'operazione di compilazione della struttura di accelerazione.

Sintassi

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
} ;

Costanti

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE
Valore: 0
Nessuna opzione specificata per la compilazione della struttura di accelerazione.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE
Valore: 0x1
Creare la struttura di accelerazione in modo che supporti gli aggiornamenti futuri (tramite il flag D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE) anziché l'app deve ricompilare completamente la struttura. Questa opzione può comportare un aumento del consumo di memoria, tempi di compilazione e prestazioni di raytracing inferiori. Gli aggiornamenti futuri, tuttavia, devono essere più veloci rispetto alla creazione della struttura di accelerazione equivalente da zero.

Questo flag può essere impostato solo su una compilazione iniziale della struttura di accelerazione o su un aggiornamento in cui la struttura di accelerazione di origine specificata D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE. In altre parole, dopo la creazione di una struttura di accelerazione senza D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE, non è possibile creare altre strutture di accelerazione tramite aggiornamenti.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION
Valore: 0x2
Consente di compattare la struttura di accelerazione chiamando CopyRaytracingAccelerationStructure usando la modalità compatta, specificata con D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT.

Questa opzione può comportare un aumento del consumo di memoria e dei tempi di compilazione. Dopo la compattazione futura, tuttavia, la struttura di accelerazione risultante deve utilizzare un footprint di memoria minore rispetto alla creazione della struttura di accelerazione da zero.

Questo flag è compatibile con tutti gli altri flag. Se specificato come parte di un aggiornamento della struttura di accelerazione, la struttura di accelerazione di origine deve essere stata compilata anche con questo flag. In altre parole, dopo la creazione di una struttura di accelerazione senza D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION, non è possibile creare altre strutture di accelerazione tramite aggiornamenti che specificano D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION.



Se si specifica ALLOW_COMPACTION, è possibile aumentare le dimensioni della struttura di accelerazione pre-compattazione e non specificare ALLOW_COMPACTION.



Se vengono eseguite più compilazioni incrementali prima di compattare infine, è possibile che vengano eseguite operazioni di compattazione ridondanti.


Le dimensioni necessarie per la struttura di accelerazione compattata possono essere eseguite prima della compattazione tramite EmitRaytracingAccelerationStructurePostbuildInfo. Per altre informazioni sulle proprietà delle dimensioni della struttura di accelerazione compattata, vedere D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC .

Nota Quando si specifica D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE , esistono alcune informazioni che devono essere mantenute nella struttura di accelerazione e la compattazione aiuterà solo così tanto. Tuttavia, se la pipeline sa che la struttura di accelerazione non verrà più aggiornata, può rendere la struttura più compatta. Alcune app possono trarre vantaggio dalla compattazione due volte : una volta dopo la compilazione iniziale e nuovamente dopo che la struttura di accelerazione si è stabilita in uno stato statico, se si verifica.

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE
Valore: 0x4
Costruire una struttura di accelerazione di alta qualità che ottimizza le prestazioni di raytracing a spese del tempo di compilazione aggiuntivo. In genere, l'implementazione richiederà 2-3 volte il tempo di compilazione rispetto all'impostazione predefinita per ottenere prestazioni di traccia migliori.

Questo flag è consigliato per la geometria statica in particolare. È compatibile con tutti gli altri flag, ad eccezione di D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD
Valore: 0x8
Costruire una struttura di accelerazione di qualità inferiore, scambiando le prestazioni di raytracing per la velocità di compilazione. In genere, l'implementazione richiederà da 1/2 a 1/3 il tempo di compilazione rispetto all'impostazione predefinita, con un sacrificio nelle prestazioni di traccia.

Questo flag è compatibile con tutti gli altri flag ad eccezione di D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY
Valore: 0x10
Ridurre al minimo la quantità di memoria zero usata durante la compilazione della struttura di accelerazione e le dimensioni del risultato. Questa opzione può comportare un aumento dei tempi di compilazione e/o dei tempi di raytracing. Si tratta di un flag ortogonale per il flag D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION e la compattazione esplicita della struttura di accelerazione che consente. La combinazione dei flag può significare sia la struttura di accelerazione iniziale che il risultato della compattazione usano meno memoria.

L'impatto dell'uso di questo flag per una compilazione si riflette nel risultato della chiamata a GetRaytracingAccelerationStructurePrebuildInfo prima di eseguire la compilazione per recuperare i requisiti di memoria per la compilazione.

Questo flag è compatibile con tutti gli altri flag.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE
Valore: 0x20
Eseguire un aggiornamento della struttura di accelerazione, anziché la compilazione da zero. Questa operazione è più veloce di una compilazione completa, ma può influire negativamente sulle prestazioni di raytracing, soprattutto se le posizioni degli oggetti sottostanti sono state modificate in modo significativo dalla compilazione originale della struttura di accelerazione prima degli aggiornamenti.

Se gli indirizzi delle strutture di accelerazione di origine e di destinazione sono identici, l'aggiornamento viene eseguito sul posto. Qualsiasi altra sovrapposizione di intervalli di indirizzi dell'origine e della destinazione non è valida. Per le destinazioni e l'origine non sovrapposte, la struttura di accelerazione di origine non viene modificata. Il requisito di memoria per la struttura di accelerazione dell'output è lo stesso della struttura di accelerazione di input

La struttura di accelerazione di origine deve essere stata compilata con D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE.

Questo flag è compatibile con tutti gli altri flag. Le altre selezioni di flag, oltre a D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE e D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE, devono corrispondere ai flag nella struttura di accelerazione di origine.

Gli aggiornamenti della struttura di accelerazione possono essere eseguiti in successione illimitata, purché la struttura di accelerazione di origine sia stata creata con D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE e i flag per la compilazione dell'aggiornamento continuino a specificare D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE.

Requisiti

Requisito Valore
Intestazione d3d12.h