énumération D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE (d3d12umddi.h)
Type d’opération de copie à effectuer.
Syntaxe
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 les pointeurs auto-ré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 dans état de ressource D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. |
D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT Similaire au mode clone, produit une structure d’accélération fonctionnellement équivalente à la source dans la destination. Le mode compact correspond également à la destination dans une empreinte mémoire potentiellement plus petite. La taille requise pour la destination peut être récupérée au préalable à partir de EmitRaytracingAccelerationStructurePostBuildInfo. Ce mode est valide uniquement 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 dans é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 toute 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 d’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 l’original en partie en raison des tolérances autorisées dans la spécification des structures d’accélération, et en partie, car la création de rapports exactement la même structure que celle qui est codée conceptuellement peut ne pas être simple. Les AABB (cadre englobant aligné sur l’axe) retournés pour les primitives procédurales, par exemple, peuvent être plus conservateurs (par exemple, plus grands) en volume et même différents en nombre que dans la représentation de structure d’accélération, car il peut ne pas être 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 de table de nuanceur dépendent de cela. Cette structure globale avec est suffisante pour les outils tels que PIX sur Windows afin de pouvoir donner à l’application une certaine idée visuelle de la structure d’accélération que le pilote a fait de l’entrée de l’application. La visualisation peut aider à révéler les bogues du pilote dans les structures d’accélération si ce qui est affiché 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 dans état de ressource D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La mémoire de destination doit être dans é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 La 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 les outils tels que PIX sur Windows puissent stocker dans un fichier pour la lecture ultérieure, via la désérialisation. Bien que prévu pour des outils tels que PIX pour Windows, aucune application n’empêche l’utilisation de cette application. La mémoire source doit être dans état de ressource D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La mémoire de destination doit être dans é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 qu’il fait référence n’ont pas besoin d’être 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 de la question de savoir si 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, fixe pour pointer vers leurs nouveaux emplacements, comme indiqué dans la structure D3D12DDI_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC_0054. La destination obtient une structure d’accélération qui équivaut fonctionnellement à la structure d’accélération qui a été sérialisée à l’origine. Il n’importe quel ordre les structures d’accélération de niveau supérieur et de bas niveau, auxquelles le niveau supérieur fait référence, sont désérialisées, tant que le moment où une structure d’accélération de niveau supérieur est utilisée pour les mises à jour de la structure d’accélération ou de raytracing, il est référencé des structures d’accélération de niveau inférieur référencées. La désérialisation fonctionne uniquement sur le même périphérique et la même 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 d’un disque. Bien que prévu pour les outils tels que PIX pour Windows, rien n’empêche toute 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 dans D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE d’état de ressource. La mémoire de destination doit être dans l’état D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. |
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 10, version 1809 |
d’en-tête | d3d12umddi.h |