Sintaxe
typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
{
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0x0,
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,
// The following are deprecated and to be removed in June 2024
D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE_AND_COMPRESS = 0x80000005,
D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE_AND_COMPRESS_FOR_GPU = 0x80000006,
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
Constantes
| Constante | Descrição |
|---|---|
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE | Copia uma estrutura de aceleração corrigindo quaisquer ponteiros autorreferenciais que possam estar presentes, de modo que o destino seja uma cópia autossuficiente da origem. Quaisquer ponteiros externos para outras estruturas de aceleração permanecem inalterados da origem para o destino na cópia. O tamanho do destino é idêntico ao tamanho da origem. IMPORTANTE A memória de origem deve estar no estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. A memória de destino deve estar no estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT | Produz no destino uma estrutura de aceleração funcionalmente equivalente à origem, semelhante ao modo de clonagem, mas também ajusta o destino a um consumo de memória potencialmente menor e certamente não maior. O tamanho necessário para o destino pode ser recuperado antecipadamente de EmitRaytracingAccelerationStructurePostbuildInfo. Esse modo só é válido se a estrutura de aceleração de origem tiver sido originalmente compilada com o sinalizador D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION; caso contrário, os resultados serão indefinidos. A compactação da geometria exige que toda a estrutura de aceleração seja construída, e é por isso que você deve primeiro compilar e depois compactar a estrutura. IMPORTANTE A memória de origem deve estar no estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. A memória de destino deve estar no estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS | O destino assume o layout descrito em D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER. O tamanho necessário para o destino pode ser recuperado antecipadamente de EmitRaytracingAccelerationStructurePostbuildInfo. Esse modo destina-se apenas a ferramentas como o PIX, embora nada impeça qualquer aplicativo de usá-lo. A saída é essencialmente o inverso de uma compilação de estrutura de aceleração. Essa estrutura geral é suficiente para que ferramentas/PIX possam dar ao aplicativo alguma noção visual da estrutura de aceleração que o driver criou a partir da entrada do aplicativo. A visualização pode ajudar a revelar bugs do driver em estruturas de aceleração se o que for exibido divergir grosseiramente dos dados que o aplicativo usou para criar a estrutura de aceleração, além das tolerâncias permitidas. Para estruturas de aceleração de nível superior, a saída inclui um conjunto de descrições de instância idênticas aos dados usados na compilação original e na mesma ordem. Para estruturas de aceleração de nível inferior, a saída inclui um conjunto de descrições de geometria que correspondem aproximadamente aos dados usados na compilação original. A saída é apenas uma correspondência aproximada do original, em parte devido às tolerâncias permitidas na especificação para estruturas de aceleração e em parte devido à complexidade inerente de relatar exatamente a mesma estrutura que está conceitualmente codificada. Por exemplo, as caixas delimitadoras alinhadas aos eixos (AABBs) retornadas para primitivos procedurais podem ser mais conservadoras (maiores) em volume e até diferentes em número do que o que realmente está na representação da estrutura de aceleração. As geometrias, cada uma com sua própria descrição de geometria, aparecem na mesma ordem que na aceleração original, pois os cálculos de indexação da tabela de sombreadores dependem disso. IMPORTANTE A memória de origem deve estar no estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. A memória de destino deve estar no estado D3D12_RESOURCE_STATE_UNORDERED_ACCESS. Esse modo só é permitido quando o modo de desenvolvedor está habilitado no sistema operacional. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE | O destino assume o layout e o tamanho descritos na documentação de D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC, que por sua vez é uma estrutura gerada com uma chamada para EmitRaytracingAccelerationStructurePostbuildInfo. Esse modo serializa uma estrutura de aceleração para que um aplicativo ou ferramentas possam armazená-la em um arquivo para reutilização posterior, normalmente em uma instância de dispositivo diferente, por meio de desserialização. Ao serializar uma estrutura de aceleração de nível superior, as estruturas de aceleração de nível inferior às quais ela se refere não precisam mais estar presentes ou intactas na memória. Da mesma forma, as estruturas de aceleração de nível inferior podem ser serializadas independentemente de haver estruturas de aceleração de nível superior apontando para elas. Em outras palavras, a ordem de serialização das estruturas de aceleração não importa. IMPORTANTE A memória de origem deve estar no estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. A memória de destino deve estar no estado D3D12_RESOURCE_STATE_UNORDERED_ACCESS. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE | A origem deve ser uma estrutura de aceleração serializada, com quaisquer ponteiros, logo após o cabeçalho, corrigidos para apontar para seus novos locais. Para obter mais informações, consulte D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC. O destino recebe uma estrutura de aceleração funcionalmente equivalente à estrutura de aceleração que foi originalmente serializada. Não importa em que ordem as estruturas de aceleração de nível superior e de nível inferior são desserializadas, desde que, no momento em que uma estrutura de aceleração de nível superior for usada para raytracing ou para atualizações de estruturas de aceleração, as estruturas de aceleração de nível inferior que ela referencia estejam presentes. A desserialização só pode ser executada no mesmo dispositivo e na mesma versão de driver em que os dados foram serializados. Caso contrário, os resultados serão indefinidos. Esse modo destina-se apenas a ferramentas como o PIX, embora nada impeça qualquer aplicativo de usá-lo, mas esse modo só é permitido quando o modo de desenvolvedor está habilitado no sistema operacional. Essa operação de cópia não se destina a ser usada para armazenar estruturas de aceleração em cache, pois executar uma compilação completa da estrutura de aceleração provavelmente será mais rápido do que carregar uma do disco. IMPORTANTE A memória de origem deve estar no estado D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE. > A memória de destino deve estar no estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. |
| D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE_AND_COMPRESS | OBSERVAÇÃO: este sinalizador foi preterido e será removido no GDK de junho de 2024 Copia uma estrutura de aceleração e a compacta para uso com o descompactador de BVH baseado em CPU do XG, DecompressBVH(). Essa compactação destina-se ao uso com BVHs compiladas offline. |
| D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE_AND_COMPRESS_FOR_GPU | OBSERVAÇÃO: este sinalizador foi preterido e será removido no GDK de junho de 2024 Copia uma estrutura de aceleração e a compacta para uso com o descompactador de BVH baseado em GPU do XG, DecompressBVH_BatchedGPU(). Essa compactação destina-se ao uso com BVHs compiladas offline. |
