Compartir a través de


enumeración D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE (d3d12.h)

Especifica el tipo de operación de copia realizada al llamar a 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 una estructura de aceleración al corregir los punteros autorreferenciales que puedan estar presentes para que el destino sea una copia autocontenida del origen. Los punteros externos a otras estructuras de aceleración permanecen sin cambios de origen a destino en la copia. El tamaño del destino es idéntico al tamaño del origen.

IMPORTANTE

La memoria de origen debe estar en estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La memoria de destino debe estar en estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT
Valor: 0x1
Genera una estructura de aceleración funcionalmente equivalente al origen en el destino, similar al modo de clonación, pero también se ajusta al destino en una superficie de memoria potencialmente más pequeña y, sin duda, mayor. El tamaño necesario para el destino se puede recuperar de antemano de EmitRaytracingAccelerationStructurePostbuildInfo.

Este modo solo es válido si la estructura de aceleración de origen se creó originalmente con la marca D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION ; de lo contrario, los resultados no están definidos.

La geometría compacta requiere que se construya toda la estructura de aceleración, por lo que primero debe compilar y, a continuación, compactar la estructura.

IMPORTANTE

La memoria de origen debe estar en estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La memoria de destino debe estar en estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS
Valor: 0x2
El destino toma el diseño descrito en D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER. El tamaño necesario para el destino se puede recuperar de antemano de EmitRaytracingAccelerationStructurePostbuildInfo.

Este modo solo está pensado para herramientas como PIX, aunque nada impide que ninguna aplicación la use. La salida es básicamente el inverso de una compilación de estructura de aceleración. Esta estructura general con es suficiente para que las herramientas o PIX puedan dar a la aplicación cierta sensación visual de la estructura de aceleración que el controlador ha hecho de la entrada de la aplicación. La visualización puede ayudar a revelar errores de controladores en estructuras de aceleración si lo que se muestra de forma bruta no coincide con los datos que la aplicación usó para crear la estructura de aceleración, más allá de las tolerancias permitidas.

En el caso de las estructuras de aceleración de nivel superior, la salida incluye un conjunto de descripciones de instancias idénticas a los datos usados en la compilación original y en el mismo orden. Para las estructuras de aceleración de nivel inferior, la salida incluye un conjunto de descripciones de geometría que coinciden aproximadamente con los datos usados en la compilación original. La salida es solo una coincidencia aproximada para el original en parte debido a las tolerancias permitidas en la especificación para las estructuras de aceleración y en parte debido a la complejidad inherente de notificar exactamente la misma estructura que se codifica conceptualmente. Por ejemplo. Los cuadros de límite alineados con eje (AABB) devueltos para primitivos de procedimientos podrían ser más conservadores (mayores) en volumen e incluso diferentes en número que lo que realmente se encuentra en la representación de la estructura de aceleración. Las geometrías, cada una con su propia descripción de geometría, aparecen en el mismo orden que en la aceleración original, ya que los cálculos de indexación de tablas de sombreador dependen de esto.


IMPORTANTE

La memoria de origen debe estar en estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La memoria de destino debe estar en estado D3D12_RESOURCE_STATE_UNORDERED_ACCESS.

Este modo solo se permite cuando el modo de desarrollador está habilitado en el sistema operativo.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE
Valor: 0x3
Destination toma el diseño y el tamaño descritos en la documentación de D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC, en sí misma una estructura generada con una llamada a EmitRaytracingAccelerationStructurePostbuildInfo.

Este modo serializa una estructura de aceleración para que una aplicación o herramientas pueda almacenarla en un archivo para su reutilización posterior, normalmente en una instancia de dispositivo diferente, a través de la deserialización.

Al serializar una estructura de aceleración de nivel superior, las estructuras de aceleración de nivel inferior a las que hace referencia no tienen que estar presentes o intactos en la memoria. Del mismo modo, las estructuras de aceleración de nivel inferior se pueden serializar independientemente de si las estructuras de aceleración de nivel superior están apuntando a ellas. En otras palabras, no importa el orden de serialización de las estructuras de aceleración.

IMPORTANTE

La memoria de origen debe estar en estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La memoria de destino debe estar en estado D3D12_RESOURCE_STATE_UNORDERED_ACCESS.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
Valor: 0x4
El origen debe ser una estructura de aceleración serializada, con cualquier puntero, directamente después del encabezado, fijo para que apunte a sus nuevas ubicaciones. Para obtener más información, consulte D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC.

El destino obtiene una estructura de aceleración que es funcionalmente equivalente a la estructura de aceleración que se serializó originalmente. No importa qué orden se deserializan las estructuras de aceleración de nivel superior e inferior, siempre que en el momento en que se use una estructura de aceleración de nivel superior para la estructura de aceleración de raytracing o aceleración se actualicen las estructuras de aceleración de nivel inferior a las que hace referencia.

La deserialización solo se puede realizar en la misma versión de dispositivo y controlador en la que se serializaron los datos. De lo contrario, los resultados no están definidos.

Este modo solo está pensado para herramientas como PIX, aunque nada impide que ninguna aplicación la use, pero este modo solo se permite cuando el modo de desarrollador está habilitado en el sistema operativo. Esta operación de copia no está pensada para usarse para almacenar en caché estructuras de aceleración, ya que es probable que la ejecución de una compilación de estructura de aceleración completa sea más rápida que cargar una desde el disco.


IMPORTANTE

La memoria de origen debe estar en estado D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE. La memoria de destino debe estar en estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

Requisitos

   
Encabezado d3d12.h