Condividi tramite


enumerazione D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE (d3d12umddi.h)

Tipo di operazione di copia da eseguire.

Sintassi

typedef enum D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE {
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE,
  D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
} ;

Costanti

 
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE
Copiare una struttura di accelerazione durante la correzione di qualsiasi puntatore autoferenziale che può essere presente, in modo che la destinazione sia una corrispondenza autonoma per l'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.

La memoria di origine e di destinazione deve essere nello stato della risorsa D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT
Analogamente alla modalità clone, produce una struttura di accelerazione funzionalmente equivalente all'origine nella destinazione. La modalità compatta si adatta anche alla destinazione in un footprint di memoria potenzialmente più piccolo. 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 D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION dell'enumerazione D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS , altrimenti i risultati non sono definiti.

La memoria di origine e di destinazione deve essere nello stato della risorsa D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS
La destinazione accetta dopo il layout descritto in D3D12DDI_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER_0054. Le dimensioni necessarie per la destinazione possono essere recuperate in anticipo da EmitRaytracingAccelerationStructurePostBuildInfo.

Questa modalità è destinata a strumenti come PIX solo in Windows , anche se nulla impedisce l'uso di alcuna app. L'output è essenzialmente l'inverso di una compilazione della struttura di accelerazione.

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 perché la creazione di report esattamente come è codificata concettualmente potrebbe non essere semplice.

Gli AABB (rettangolo delimitatore allineato all'asse) restituiti per le primitive procedurali, ad esempio, potrebbero essere più conservativi (ad esempio, maggiori) in volume e anche diversi in numero rispetto a quello effettivamente presente nella rappresentazione della struttura di accelerazione, perché potrebbe non essere pulito per esporre la rappresentazione esatta.

Le geometrie, ognuna con la propria descrizione geometrica, deve essere visualizzata nello stesso ordine della compilazione originale, in quanto i calcoli di indicizzazione delle tabelle shader dipendono da questo.

Questa struttura complessiva con è sufficiente per strumenti come PIX in Windows per offrire all'applicazione un senso visivo della struttura di accelerazione che il driver ha ottenuto 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.

La memoria di origine deve essere nello stato della risorsa D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La memoria di destinazione deve essere nello stato della risorsa D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS.

Questa modalità è consentita solo quando la modalità sviluppatore è abilitata nel sistema operativo.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE
La destinazione accetta il layout e le dimensioni descritte in D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC_0054, tramite EmitRaytracingAccelerationStructurePostBuildInfo.

Questo serializza una struttura di accelerazione in modo che strumenti come PIX in Windows possano archiviare in un file per la riproduzione successiva, tramite deserializzazione. Anche se destinato a strumenti come PIX per Windows, non viene impedito l'uso di questa app.

La memoria di origine deve essere nello stato della risorsa D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La memoria di destinazione deve essere nello stato della risorsa D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS.

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 in 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. Detto un altro modo, l'ordine di serializzazione delle strutture di accelerazione non è importante.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
L'origine deve essere una struttura di accelerazione serializzata, con qualsiasi puntatore, direttamente dopo l'intestazione, fissa per puntare alle nuove posizioni, come descritto nella struttura D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC_0054 .

La destinazione ottiene una struttura di accelerazione equivalente funzionalmente alla struttura di accelerazione originariamente serializzata. Non importa a quali strutture di accelerazione di primo livello e di livello inferiore, a cui fa riferimento il primo livello, vengono deserializzate, purché nel momento in cui sia presente una struttura di accelerazione di primo livello per il raytracing o gli aggiornamenti della struttura di accelerazione a cui fa riferimento le strutture di accelerazione di basso livello.

La deserializzazione funziona solo nello stesso dispositivo e nella stessa versione del driver; in caso contrario, i risultati non sono definiti. Questo non è progettato per essere usato per memorizzare nella cache le strutture di accelerazione, perché l'esecuzione di una compilazione completa della struttura di accelerazione è probabilmente più veloce del caricamento di uno dal disco.
Anche se destinato a strumenti come PIX per Windows, non viene impedito l'uso di questa app, anche se almeno per il momento la deserializzazione richiede che il sistema operativo sia in modalità sviluppatore.

La memoria di origine deve essere nello stato della risorsa D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.
La memoria di destinazione deve essere nello stato D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

Requisiti

Requisito Valore
Client minimo supportato Windows 10, versione 1809
Intestazione d3d12umddi.h