Compartir a través de


enumeración D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE (d3d12umddi.h)

Tipo de operación de copia que se va a realizar.

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 una estructura de aceleración al corregir los punteros autorreferenciales que puedan estar presentes, de modo que el destino sea una coincidencia independiente para el 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.

La memoria de origen y destino debe estar en estado de recurso D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT
De forma similar al modo de clonación, genera una estructura de aceleración funcionalmente equivalente al origen en el destino. El modo compacto también se ajusta al destino en una superficie de memoria potencialmente menor. 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 D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION de la enumeración D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS ; de lo contrario, los resultados no están definidos.

La memoria de origen y destino debe estar en estado de recurso D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS
El destino toma después del diseño descrito en D3D12DDI_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER_0054. El tamaño necesario para el destino se puede recuperar de antemano de EmitRaytracingAccelerationStructurePostBuildInfo.

Este modo está pensado para herramientas como PIX solo en Windows , 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.

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, porque la creación de informes exactamente la misma estructura que se codifica conceptualmente puede no ser simple.

Los AABB (cuadro de límite alineado con eje) devueltos para primitivos de procedimientos, por ejemplo, podrían ser más conservadores (por ejemplo, más grandes) en volumen e incluso diferentes en número que lo que realmente está en la representación de la estructura de aceleración, ya que es posible que no esté limpio para exponer la representación exacta.

Las geometrías, cada una con su propia descripción de geometría, deben aparecer en el mismo orden que en la compilación original, ya que los cálculos de indexación de tablas de sombreador dependen de esto.

Esta estructura general con es suficiente para herramientas como PIX en Windows para poder 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.

La memoria de origen debe estar en estado de recurso D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La memoria de destino debe estar en estado de recurso D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS.

Este modo solo se permite cuando el modo de desarrollador está habilitado en el sistema operativo.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE
El destino toma el diseño y el tamaño descritos en D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC_0054, a través de EmitRaytracingAccelerationStructurePostBuildInfo.

Esto serializa una estructura de aceleración para que herramientas como PIX en Windows puedan almacenarse en un archivo para su posterior reproducción, a través de la deserialización. Aunque está pensado para herramientas como PIX para Windows, nada impide que ninguna aplicación use esto.

La memoria de origen debe estar en estado de recurso D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La memoria de destino debe estar en estado de recurso D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS.

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. Dicho de otra manera, el orden de serialización de las estructuras de aceleración no importa.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
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, como se describe en la estructura de D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC_0054 .

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

Deserializar solo funciona en el mismo dispositivo y la misma versión del controlador; de lo contrario, los resultados no están definidos. Esto no está pensado 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.
Aunque está pensado para herramientas como PIX para Windows, nada impide que ninguna aplicación use esto, aunque al menos por ahora la deserialización requiere que el sistema operativo esté en modo de desarrollador.

La memoria de origen debe estar en estado de recurso D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.
La memoria de destino debe estar en estado D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 1809
Encabezado d3d12umddi.h