enumeração D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE (d3d12.h)

Especifica o tipo de operação de cópia executada ao chamar CopyRaytracingAccelerationStructure.

Syntax

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

Constantes

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE
Valor: 0
Copie uma estrutura de aceleração ao corrigir quaisquer ponteiros auto-referenciais que possam estar presentes para que o destino seja uma cópia autossuficiente da 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.

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
Valor: 0x1
Produz uma estrutura de aceleração funcionalmente equivalente à origem no destino, semelhante ao modo clone, mas também se encaixa no destino em um volume 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ó será válido se a estrutura de aceleração de origem tiver sido criada originalmente com o sinalizador D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION , caso contrário, os resultados serão indefinidos.

A geometria de compactação requer que toda a estrutura de aceleração seja construída, razão pela qual você deve primeiro compilar e 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
Valor: 0x2
O destino usa 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 um build de estrutura de aceleração. Essa estrutura geral com é suficiente para que as ferramentas/PIX 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.

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, devido à complexidade inerente de relatar exatamente a mesma estrutura que é codificada conceitualmente. Por exemplo. As AABBs (caixas delimitadoras alinhadas ao eixo) retornadas para primitivos processuais podem ser mais conservadoras (maiores) em volume e até mesmo 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 de tabela de sombreador 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
Valor: 0x3
O destino usa o layout e o tamanho descritos na documentação do D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC, em si uma estrutura gerada com uma chamada para EmitRaytracingAccelerationStructurePostbuildInfo.

Esse modo serializa uma estrutura de aceleração para que um aplicativo ou ferramentas possa armazená-la em um arquivo para reutilização posterior, normalmente em uma instância de dispositivo diferente, por meio da 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 ainda 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. Em outras palavras, a ordem de serialização de 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
Valor: 0x4
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. Para obter mais informações, consulte D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC.

O destino obtém uma estrutura de aceleração que é funcionalmente equivalente à estrutura de aceleração que foi originalmente serializada. Não importa qual ordem as estruturas de aceleração de nível superior e inferior sejam desserializadas, desde que uma estrutura de aceleração de nível superior seja usada para raytracing ou estrutura de aceleração atualize as estruturas de aceleração de nível inferior que ela referencia estiver presente.

A desserialização só pode ser executada no mesmo dispositivo e na mesma versão do 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 em cache estruturas de aceleração, pois a execução de uma compilação de estrutura de aceleração completa provavelmente será mais rápida 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.

Requisitos

   
Cabeçalho d3d12.h