Partager via


énumération D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE (d3d12.h)

Spécifie le type d’opération de copie effectuée lors de l’appel de CopyRaytracingAccelerationStructure.

Syntaxe

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
Valeur : 0
Copiez une structure d’accélération tout en corrigeant les pointeurs autoréférentiels qui peuvent être présents afin que la destination soit une copie autonome de la source. Tous les pointeurs externes vers d’autres structures d’accélération restent inchangés de la source à la destination dans la copie. La taille de la destination est identique à la taille de la source.

IMPORTANT

La mémoire source doit être à l’état D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La mémoire de destination doit être à l’état D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT
Valeur : 0x1
Produit une structure d’accélération fonctionnellement équivalente à la source dans la destination, similaire au mode clone, mais s’adapte également à la destination dans un encombrement mémoire potentiellement plus petit, et certainement pas plus grand. La taille requise pour la destination peut être récupérée au préalable à partir de EmitRaytracingAccelerationStructurePostbuildInfo.

Ce mode n’est valide que si la structure d’accélération source a été initialement générée avec l’indicateur D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION ; sinon, les résultats ne sont pas définis.

Le compactage de la géométrie nécessite la construction de la structure d’accélération entière, c’est pourquoi vous devez d’abord générer, puis compacter la structure.

IMPORTANT

La mémoire source doit être à l’état D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La mémoire de destination doit être à l’état D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS
Valeur : 0x2
La destination prend la disposition décrite dans D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER. La taille requise pour la destination peut être récupérée au préalable à partir de EmitRaytracingAccelerationStructurePostbuildInfo.

Ce mode est uniquement destiné aux outils tels que PIX, bien que rien n’empêche une application de l’utiliser. La sortie est essentiellement l’inverse d’une build de structure d’accélération. Cette structure globale avec est suffisante pour que les outils/PIX puissent donner à l’application une idée visuelle de la structure d’accélération que le pilote a faite à partir de l’entrée de l’application. La visualisation peut aider à révéler des bogues de pilote dans les structures d’accélération si ce qui est montré ne correspond pas aux données utilisées par l’application pour créer la structure d’accélération, au-delà des tolérances autorisées.

Pour les structures d’accélération de niveau supérieur, la sortie inclut un ensemble de descriptions instance identiques aux données utilisées dans la build d’origine et dans le même ordre. Pour les structures d’accélération de niveau inférieur, la sortie inclut un ensemble de descriptions géométriques correspondant approximativement aux données utilisées dans la build d’origine. La sortie n’est qu’une correspondance approximative pour la partie d’origine en raison des tolérances autorisées dans la spécification pour les structures d’accélération et en partie en raison de la complexité inhérente de la création de rapports exactement la même structure que celle encodée conceptuellement. Par exemple, Les cadres englobants alignés sur l’axe (AABBs) retournés pour les primitives procédurales peuvent être plus conservateurs (plus grands) en volume et même différents en nombre que ce qui se trouve réellement dans la représentation de structure d’accélération. Les géométries, chacune avec sa propre description géométrique, apparaissent dans le même ordre que dans l’accélération d’origine, car les calculs d’indexation des tables de nuanceur en dépendent.


IMPORTANT

La mémoire source doit être à l’état D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La mémoire de destination doit être à l’état D3D12_RESOURCE_STATE_UNORDERED_ACCESS.

Ce mode n’est autorisé que lorsque le mode développeur est activé dans le système d’exploitation.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE
Valeur : 0x3
Destination prend la disposition et la taille décrites dans la documentation pour D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC, elle-même une structure générée avec un appel à EmitRaytracingAccelerationStructurePostbuildInfo.

Ce mode sérialise une structure d’accélération afin qu’une application ou des outils puissent la stocker dans un fichier pour une réutilisation ultérieure, généralement sur un autre appareil instance, via la désérialisation.

Lors de la sérialisation d’une structure d’accélération de niveau supérieur, les structures d’accélération de niveau inférieur auquel elle fait référence n’ont pas besoin d’être toujours présentes ou intactes en mémoire. De même, les structures d’accélération de niveau inférieur peuvent être sérialisées indépendamment du point de vue des structures d’accélération de niveau supérieur. En d’autres termes, l’ordre de sérialisation des structures d’accélération n’a pas d’importance.

IMPORTANT

La mémoire source doit être à l’état D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La mémoire de destination doit être à l’état D3D12_RESOURCE_STATE_UNORDERED_ACCESS.

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
Valeur : 0x4
La source doit être une structure d’accélération sérialisée, avec tous les pointeurs, directement après l’en-tête, fixes pour pointer vers leurs nouveaux emplacements. Pour plus d’informations, consultez D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC.

La destination obtient une structure d’accélération qui est fonctionnellement équivalente à la structure d’accélération qui a été sérialisée à l’origine. Peu importe l’ordre dans lequel les structures d’accélération de niveau supérieur et inférieur sont désérialisées, tant qu’au moment où une structure d’accélération de niveau supérieur est utilisée pour le raytracing ou la structure d’accélération, les structures d’accélération de niveau inférieur qu’elle référence sont présentes.

La désérialisation ne peut être effectuée que sur le périphérique et la version du pilote sur lesquels les données ont été sérialisées. Si ce n'est pas le cas, les résultats ne sont pas définis.

Ce mode est uniquement destiné aux outils tels que PIX, bien que rien n’empêche une application de l’utiliser, mais ce mode n’est autorisé que lorsque le mode développeur est activé dans le système d’exploitation. Cette opération de copie n’est pas destinée à être utilisée pour la mise en cache des structures d’accélération, car l’exécution d’une build de structure d’accélération complète est susceptible d’être plus rapide que le chargement à partir du disque.


IMPORTANT

La mémoire source doit être à l’état D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE. La mémoire de destination doit être à l’état D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

Spécifications

   
En-tête d3d12.h