enumeración D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS (d3d12.h)

Especifica marcas para la compilación de una estructura de aceleración de raytracing. Use un valor de esta enumeración con la estructura D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS que proporciona entrada a la operación de compilación de la estructura de aceleración.

Syntax

typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS {
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20
} ;

Constantes

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE
Valor: 0
No se han especificado opciones para la compilación de la estructura de aceleración.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE
Valor: 0x1
Compile la estructura de aceleración de modo que admita actualizaciones futuras (a través de la marca D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE) en lugar de que la aplicación tenga que volver a compilar completamente la estructura. Esta opción puede dar lugar a un mayor consumo de memoria, tiempos de compilación y menor rendimiento de raytracing. Sin embargo, las actualizaciones futuras deben ser más rápidas que crear la estructura de aceleración equivalente desde cero.

Esta marca solo se puede establecer en una compilación de estructura de aceleración inicial o en una actualización en la que la estructura de aceleración de origen especificó D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE. Es decir, después de crear una estructura de aceleración sin D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE, no se pueden crear otras estructuras de aceleración a partir de ella a través de actualizaciones.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION
Valor: 0x2
Habilita la opción para compactar la estructura de aceleración llamando a CopyRaytracingAccelerationStructure mediante el modo compacto, especificado con D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT.

Esta opción puede dar lugar a un mayor consumo de memoria y tiempos de compilación. Sin embargo, después de la compactación futura, la estructura de aceleración resultante debe consumir una superficie de memoria más pequeña que crear la estructura de aceleración desde cero.

Esta marca es compatible con todas las demás marcas. Si se especifica como parte de una actualización de la estructura de aceleración, la estructura de aceleración de origen también se debe haber creado con esta marca. Es decir, después de crear una estructura de aceleración sin D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION, no se pueden crear otras estructuras de aceleración a partir de ella a través de actualizaciones que especifiquen D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION.



Especificar ALLOW_COMPACTION puede aumentar el tamaño de la estructura de aceleración de compactación previa frente a no especificar ALLOW_COMPACTION.



Si se realizan varias compilaciones incrementales antes de finalizar la compactación, puede haber un trabajo relacionado con la compactación redundante realizado.


El tamaño necesario para la estructura de aceleración compacta se puede consultar antes de la compactación a través de EmitRaytracingAccelerationStructurePostbuildInfo. Consulte D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC para obtener más información sobre las propiedades del tamaño de la estructura de aceleración compacta.

Nota Cuando se especifica D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE , hay cierta información que debe conservarse en la estructura de aceleración y la compactación solo ayudará tanto. Sin embargo, si la canalización sabe que la estructura de aceleración ya no se actualizará, puede hacer que la estructura sea más compacta. Algunas aplicaciones pueden beneficiarse de la compactación dos veces: una vez después de la compilación inicial y de nuevo después de que la estructura de aceleración se haya establecido en un estado estático, si esto ocurre.

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE
Valor: 0x4
Construya una estructura de aceleración de alta calidad que maximice el rendimiento de raytracing a costa del tiempo de compilación adicional. Normalmente, la implementación tardará entre 2 y 3 veces el tiempo de compilación que la configuración predeterminada para obtener un mejor rendimiento de seguimiento.

Esta marca se recomienda para la geometría estática en particular. Es compatible con todas las demás marcas, excepto por D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD
Valor: 0x8
Construir una estructura de aceleración de menor calidad, negociando el rendimiento de raytracing para la velocidad de compilación. Normalmente, la implementación tardará entre 1/2 y 1/3 en el tiempo de compilación que la configuración predeterminada, con un sacrificio en el rendimiento del seguimiento.

Esta marca es compatible con todas las demás marcas, excepto para D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY
Valor: 0x10
Minimice la cantidad de memoria temporal usada durante la compilación de la estructura de aceleración, así como el tamaño del resultado. Esta opción puede dar lugar a un aumento de los tiempos de compilación o los tiempos de raytracing. Esto es ortogonal a la marca D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION y la compactación explícita de la estructura de aceleración que habilita. La combinación de las marcas puede significar tanto la estructura de aceleración inicial como el resultado de la compactación que usa menos memoria.

El impacto del uso de esta marca para una compilación se refleja en el resultado de llamar a GetRaytracingAccelerationStructurePrebuildInfo antes de realizar la compilación para recuperar los requisitos de memoria de la compilación.

Esta marca es compatible con todas las demás marcas.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE
Valor: 0x20
Realice una actualización de la estructura de aceleración, en lugar de compilar desde cero. Esto es más rápido que una compilación completa, pero puede afectar negativamente al rendimiento de raytracing, especialmente si las posiciones de los objetos subyacentes han cambiado significativamente de la compilación original de la estructura de aceleración antes de las actualizaciones.

Si las direcciones de las estructuras de aceleración de origen y destino son idénticas, la actualización se realiza en contexto. Cualquier otra superposición de intervalos de direcciones del origen y el destino no es válido. En el caso de los destinos y el origen no superpuestos, la estructura de aceleración de origen no está modificada. El requisito de memoria para la estructura de aceleración de salida es el mismo que en la estructura de aceleración de entrada.

La estructura de aceleración de origen debe haberse creado con D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE.

Esta marca es compatible con todas las demás marcas. Las demás selecciones de marcas, aparte de D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE y D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE, deben coincidir con las marcas de la estructura de aceleración de origen.

Las actualizaciones de la estructura de aceleración se pueden realizar en sucesión ilimitada, siempre que la estructura de aceleración de origen se haya creado con D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE y las marcas de la compilación de actualización continúen especificando D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE.

Requisitos

Requisito Valor
Header d3d12.h