D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE enumeração (d3d12umddi.h)

Tipo de operação de cópia a ser executada.

Syntax

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

Constantes

 
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE
Copie uma estrutura de aceleração ao corrigir quaisquer ponteiros auto-referenciais que possam estar presentes, de modo que o destino seja uma correspondência autossuficiente para a origem. Todos os 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.

A memória de origem e de destino deve estar no estado do recurso D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT
Semelhante ao modo clone, produz uma estrutura de aceleração funcionalmente equivalente à origem no destino. O modo compacto também se encaixa no destino em um volume de memória potencialmente menor. O tamanho necessário para o destino pode ser recuperado com antecedência de EmitRaytracingAccelerationStructurePostBuildInfo.

Esse modo só será válido se a estrutura de aceleração de origem tiver sido originalmente criada com o sinalizador D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION da enumeração D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS , caso contrário, os resultados serão indefinidos.

A memória de origem e de destino deve estar no estado do recurso D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS
O destino é feito após o layout descrito em D3D12DDI_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER_0054. O tamanho necessário para o destino pode ser recuperado com antecedência de EmitRaytracingAccelerationStructurePostBuildInfo.

Esse modo destina-se apenas a ferramentas como PIX no Windows , embora nada impeça qualquer aplicativo de usá-lo. A saída é essencialmente o inverso de um build de estrutura de aceleração.

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 no build 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 no build original. A saída é apenas uma correspondência aproximada para o original em parte devido às tolerâncias permitidas na especificação para estruturas de aceleração e, em parte, porque relatar exatamente a mesma estrutura que é codificada conceitualmente pode não ser simples.

Os AABBs (caixa delimitadora alinhada ao eixo) retornados para primitivos processuais, por exemplo, podem ser mais conservadores (por exemplo, maiores) em volume e até mesmo diferentes em número do que o que realmente está na representação da estrutura de aceleração, pois pode não ser limpo expor a representação exata.

Geometrias, cada uma com sua própria descrição de geometria, devem aparecer na mesma ordem que na compilação original, pois os cálculos de indexação de tabela de sombreador dependem disso.

Essa estrutura geral com é suficiente para que ferramentas como o PIX no Windows possam dar ao aplicativo alguma noção visual da estrutura de aceleração que o driver fez com a entrada do aplicativo. A visualização pode ajudar a revelar bugs de driver em estruturas de aceleração se o que é mostrado incompatibilidade grosseiramente com os dados usados pelo aplicativo para criar a estrutura de aceleração, além das tolerâncias permitidas.

A memória de origem deve estar no estado do recurso D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. A memória de destino deve estar no estado do recurso D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS.

Esse modo só é permitido quando o modo de desenvolvedor está habilitado no sistema operacional.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE
O destino usa o layout e o tamanho descritos em D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC_0054, por meio de EmitRaytracingAccelerationStructurePostBuildInfo.

Isso serializa uma estrutura de aceleração para que ferramentas como o PIX no Windows possam armazenar em um arquivo para reprodução posterior, por meio da desserialização. Embora pretenda ferramentas como o PIX para Windows, nada impede que nenhum aplicativo use isso.

A memória de origem deve estar no estado do recurso D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. A memória de destino deve estar no estado do recurso D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS.

Ao serializar uma estrutura de aceleração de nível superior, as estruturas de aceleração de nível inferior a que se refere não precisam estar presentes ou intactas na memória. Da mesma forma, as estruturas de aceleração de nível inferior podem ser serializadas independentemente de qualquer estrutura de aceleração de nível superior apontar para elas. Dito de outra forma, a ordem de serialização de estruturas de aceleração não importa.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
A origem deve ser uma estrutura de aceleração serializada, com quaisquer ponteiros, diretamente após o cabeçalho, corrigidos para apontar para seus novos locais, conforme discutido na estrutura D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC_0054 .

O destino obtém uma estrutura de aceleração que é funcionalmente equivalente à estrutura de aceleração que foi originalmente serializada. Não importa a ordem a que as estruturas de aceleração de nível superior e inferior, às quais o nível superior se refere, sejam desserializadas, desde que uma estrutura de aceleração de nível superior seja usada para atualizações de estrutura de raytracing ou aceleração referenciadas, as estruturas de aceleração de nível inferior são referenciadas.

Desserializar só funciona no mesmo dispositivo e na mesma versão do driver, caso contrário, os resultados são indefinidos. Isso não se destina a ser usado para armazenar em cache estruturas de aceleração, pois a execução de um build de estrutura de aceleração completa provavelmente será mais rápida do que carregar uma do disco.
Embora pretenda ferramentas como o PIX para Windows, nada impede que nenhum aplicativo use isso, embora pelo menos por enquanto a desserialização exija que o sistema operacional esteja no modo de desenvolvedor.

A memória de origem deve estar no estado do recurso D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.
A memória de destino deve estar no estado D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 1809
Cabeçalho d3d12umddi.h