énumération D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE (d3d12umddi.h)

Type d’opération de copie à effectuer.

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
Copiez une structure d’accélération tout en corrigeant tous les pointeurs autoréférentiels qui peuvent être présents, afin que la destination soit une correspondance autonome pour 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.

La mémoire source et de destination doit être à l’état de ressource D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT
Semblable au mode clone, produit une structure d’accélération fonctionnellement équivalente à la source dans la destination. Le mode Compact permet également à la destination de s’adapter à un encombrement mémoire potentiellement plus petit. 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é créée à l’origine avec l’indicateur D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION de l’énumération D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS . Sinon, les résultats ne sont pas définis.

La mémoire source et de destination doit être à l’état de ressource D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS
La destination prend après la disposition décrite dans D3D12DDI_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER_0054. La taille requise pour la destination peut être récupérée au préalable à partir de EmitRaytracingAccelerationStructurePostBuildInfo.

Ce mode est destiné aux outils tels que PIX sur Windows uniquement, 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.

Pour les structures d’accélération de niveau supérieur, la sortie inclut un ensemble de descriptions de 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 comprend 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 parce que la création de rapports exactement la même structure que celle encodée conceptuellement peut ne pas être simple.

Les AABB (zone englobante alignée sur l’axe) retournées pour les primitives procédurales, pour instance, pourraient être plus conservatrices (par exemple, plus grandes) en volume et même différentes en nombre de ce qui se trouve réellement dans la représentation de la structure d’accélération, car il n’est peut-être pas propre d’exposer la représentation exacte.

Les géométries, chacune avec sa propre description géométrique, doivent apparaître dans le même ordre que dans la build d’origine, car les calculs d’indexation des tables de nuanceur en dépendent.

Cette structure globale avec est suffisante pour que des outils tels que PIX sur Windows 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.

La mémoire source doit être à l’état de ressource D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La mémoire de destination doit être à l’état de ressource D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS.

Ce mode n’est autorisé que lorsque le mode développeur est activé sur le système d’exploitation.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE
Destination prend la disposition et la taille décrites dans D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC_0054, via EmitRaytracingAccelerationStructurePostBuildInfo.

Cela sérialise une structure d’accélération afin que des outils tels que PIX sur Windows puissent stocker dans un fichier pour une lecture ultérieure, via la désérialisation. Bien que destiné à des outils tels que PIX pour Windows, rien n’empêche une application de l’utiliser.

La mémoire source doit être à l’état de ressource D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La mémoire de destination doit être à l’état de ressource D3D12DDI_RESOURCE_STATE_UNORDERED_ACCESS.

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 dans la mémoire. De même, les structures d’accélération de niveau inférieur peuvent être sérialisées indépendamment du fait que des structures d’accélération de niveau supérieur pointent vers elles. Autrement dit, l’ordre de sérialisation des structures d’accélération n’a pas d’importance.
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE
La source doit être une structure d’accélération sérialisée, avec tous les pointeurs, directement après l’en-tête, fixés pour pointer vers leurs nouveaux emplacements, comme indiqué dans la structure D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC_0054 .

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, auxquelles le niveau supérieur fait référence, sont désérialisées, tant qu’au moment où une structure d’accélération de niveau supérieur est utilisée pour les mises à jour de la structure de raytracing ou d’accélération, les structures d’accélération de niveau inférieur référencées sont présentes.

Deserialize fonctionne uniquement sur le même appareil et la version du pilote, sinon les résultats ne sont pas définis. Cela n’est pas destiné à être utilisé 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 d’un disque.
Bien que destiné à des outils tels que PIX pour Windows, rien n’empêche une application de l’utiliser, bien qu’au moins pour l’instant la désérialisation nécessite que le système d’exploitation soit en mode développeur.

La mémoire source doit être à l’état de ressource D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.
La mémoire de destination doit être à l’état D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 1809
En-tête d3d12umddi.h