enumerazione D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE (d3d12.h)

Specifica il tipo di operazione di copia eseguita quando si chiama CopyRaytracingAccelerationStructure.

Sintassi

typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE {
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4
} ;

Costanti

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE
Valore: 0
Copiare una struttura di accelerazione durante la correzione di qualsiasi puntatore autoferenziale che può essere presente in modo che la destinazione sia una copia autonoma dell'origine. Tutti i puntatori esterni ad altre strutture di accelerazione rimangono invariati dall'origine alla destinazione nella copia. Le dimensioni della destinazione sono identiche alle dimensioni dell'origine.

IMPORTANTE

La memoria di origine deve essere nello stato D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La memoria di destinazione deve essere nello stato D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT
Valore: 0x1
Produce una struttura di accelerazione funzionalmente equivalente all'origine nella destinazione, simile alla modalità clone, ma adatta anche la destinazione a un footprint di memoria potenzialmente più piccolo e certamente non maggiore. Le dimensioni necessarie per la destinazione possono essere recuperate in anticipo da EmitRaytracingAccelerationStructurePostbuildInfo.

Questa modalità è valida solo se la struttura di accelerazione di origine è stata originariamente compilata con il flag D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION , altrimenti i risultati non sono definiti.

La geometria compattante richiede la costruzione dell'intera struttura di accelerazione, motivo per cui è necessario prima compilare e quindi compattare la struttura.

IMPORTANTE

La memoria di origine deve essere nello stato D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La memoria di destinazione deve essere nello stato D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS
Valore: 0x2
La destinazione accetta il layout descritto in D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER. Le dimensioni necessarie per la destinazione possono essere recuperate in anticipo da EmitRaytracingAccelerationStructurePostbuildInfo.

Questa modalità è destinata solo a strumenti come PIX, anche se nulla impedisce a qualsiasi app di usarla. L'output è essenzialmente l'inverso di una compilazione della struttura di accelerazione. Questa struttura complessiva con è sufficiente per gli strumenti/PIX per consentire all'applicazione un certo senso visivo della struttura di accelerazione del driver creato dall'input dell'app. La visualizzazione può aiutare a rivelare i bug del driver nelle strutture di accelerazione se ciò che viene visualizzato in modo grossolano non corrisponde ai dati usati dall'applicazione per creare la struttura di accelerazione, oltre alle tolleranze consentite.

Per le strutture di accelerazione di primo livello, l'output include un set di descrizioni di istanza identiche ai dati usati nella compilazione originale e nello stesso ordine. Per le strutture di accelerazione di livello inferiore, l'output include un set di descrizioni geometriche corrispondenti approssimativamente ai dati usati nella compilazione originale. L'output è solo una corrispondenza approssimativa per l'originale in parte a causa delle tolleranze consentite nella specifica per le strutture di accelerazione e in parte a causa della complessità intrinseca della segnalazione esattamente della stessa struttura come è concettualmente codificata. Ad esempio, I rettangoli di delimitazione allineati all'asse (AABB) restituiti per le primitive procedurali potrebbero essere più conservativi (maggiori) in volume e persino diversi in numero rispetto a quello effettivamente presente nella rappresentazione della struttura di accelerazione. Le geometrie, ognuna con la propria descrizione geometrica, viene visualizzata nello stesso ordine dell'accelerazione originale, in quanto i calcoli di indicizzazione delle tabelle shader dipendono da questo.


IMPORTANTE

La memoria di origine deve essere nello stato D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La memoria di destinazione deve essere nello stato D3D12_RESOURCE_STATE_UNORDERED_ACCESS.

Questa modalità è consentita solo quando la modalità sviluppatore è abilitata nel sistema operativo.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE
Valore: 0x3
Destination accetta il layout e le dimensioni descritti nella documentazione per D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC, una struttura generata con una chiamata a EmitRaytracingAccelerationStructurePostbuildInfo.

Questa modalità serializza una struttura di accelerazione in modo che un'app o gli strumenti possano archiviarla in un file per un riutilizzo successivo, in genere in un'istanza diversa del dispositivo, tramite deserializzazione.

Quando si serializza una struttura di accelerazione di primo livello, le strutture di accelerazione di livello inferiore a cui fa riferimento non devono essere ancora presenti o intatte nella memoria. Analogamente, le strutture di accelerazione di livello inferiore possono essere serializzate indipendentemente dal fatto che le strutture di accelerazione di primo livello puntino a esse. In altre parole, l'ordine di serializzazione delle strutture di accelerazione non è rilevante.

IMPORTANTE

La memoria di origine deve essere nello stato D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La memoria di destinazione deve essere nello stato D3D12_RESOURCE_STATE_UNORDERED_ACCESS.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
Valore: 0x4
L'origine deve essere una struttura di accelerazione serializzata, con qualsiasi puntatore, direttamente dopo l'intestazione, fisso in modo da puntare alle nuove posizioni. Per altre informazioni, vedere D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC.

La destinazione ottiene una struttura di accelerazione equivalente funzionalmente alla struttura di accelerazione originariamente serializzata. Non importa quale ordine le strutture di accelerazione di livello superiore e inferiore vengono deserializzate, purché nel momento in cui viene usata una struttura di accelerazione di primo livello per raytracing o la struttura di accelerazione aggiorna le strutture di accelerazione di livello inferiore a cui fa riferimento sono presenti.

La deserializzazione può essere eseguita solo sullo stesso dispositivo e sulla stessa versione del driver in cui i dati sono stati serializzati. In caso contrario i risultati non saranno definiti.

Questa modalità è destinata solo a strumenti come PIX, anche se nulla impedisce l'uso di un'app, ma questa modalità è consentita solo quando la modalità sviluppatore è abilitata nel sistema operativo. Questa operazione di copia non è progettata per la memorizzazione nella cache delle strutture di accelerazione, perché è probabile che l'esecuzione di una compilazione completa della struttura di accelerazione sia più veloce del caricamento di un disco.


IMPORTANTE

La memoria di origine deve essere nello stato D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE. La memoria di destinazione deve essere nello stato D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

Requisiti

   
Intestazione d3d12.h