Syntaxe
typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
{
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0x0,
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,
// The following are deprecated and to be removed in June 2024
D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE_AND_COMPRESS = 0x80000005,
D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE_AND_COMPRESS_FOR_GPU = 0x80000006,
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
Constantes
| Constante | Description |
|---|---|
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE | Copie une structure d’accélération en corrigeant les éventuels pointeurs autoréférentiels afin que la destination soit une copie autonome de la source. Les pointeurs externes vers d’autres structures d’accélération restent inchangés entre la source et la destination dans la copie. La taille de la destination est identique à celle de la source. IMPORTANT La mémoire source doit être dans l’état D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La mémoire de destination doit être dans l’état D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT | Produit dans la destination une structure d’accélération fonctionnellement équivalente à la source, comme le mode clone, mais en faisant tenir la destination dans une empreinte mémoire potentiellement plus petite, et en tout cas pas plus grande. 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é générée à l’origine avec l’indicateur D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION ; sinon, les résultats sont indéfinis. Le compactage de la géométrie nécessite que la structure d’accélération entière soit construite ; c’est pourquoi vous devez d’abord générer la structure, puis la compacter. IMPORTANT La mémoire source doit être dans l’état D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La mémoire de destination doit être dans l’état D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS | La destination adopte 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, même si rien n’empêche une application de l’utiliser. La sortie est essentiellement l’inverse d’une génération de structure d’accélération. Cette structure globale suffit aux outils/à PIX pour donner à l’application une idée visuelle de la structure d’accélération que le pilote a créée à partir des entrées 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 affiché diffère grossièrement des 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 comprend un ensemble de descriptions d’instances identiques aux données utilisées lors de la génération 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 de géométrie correspondant approximativement aux données utilisées lors de la génération d’origine. La sortie ne correspond qu’approximativement à l’original, en partie en raison des tolérances autorisées par la spécification des structures d’accélération et en partie en raison de la complexité inhérente au fait de restituer exactement la même structure que celle encodée conceptuellement. Par exemple, les zones englobantes alignées sur les axes (AABB) retournées pour les primitives procédurales peuvent être plus conservatrices (plus grandes) en volume, voire différentes en nombre, par rapport à ce qui figure réellement dans la représentation de la structure d’accélération. Les géométries, chacune avec sa propre description, apparaissent dans le même ordre que dans la structure d’accélération d’origine, car les calculs d’indexation de la table de nuanceurs en dépendent. IMPORTANT La mémoire source doit être dans l’état D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La mémoire de destination doit être dans 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 | La destination adopte la disposition et la taille décrites dans la documentation de D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC, structure elle-même générée par 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 en vue d’une réutilisation ultérieure, généralement sur une autre instance d’appareil, par 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 auxquelles elle fait référence n’ont pas besoin d’être encore 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 fait que des structures d’accélération de niveau supérieur pointent vers elles ou non. 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 dans l’état D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. La mémoire de destination doit être dans l’état D3D12_RESOURCE_STATE_UNORDERED_ACCESS. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE | La source doit être une structure d’accélération sérialisée dont les éventuels pointeurs, situés directement après l’en-tête, ont été corrigés pour pointer vers leurs nouveaux emplacements. Pour plus d’informations, consultez D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC. La destination reçoit une structure d’accélération fonctionnellement équivalente à la structure d’accélération sérialisée à l’origine. L’ordre dans lequel les structures d’accélération de niveau supérieur et de niveau inférieur sont désérialisées n’a pas d’importance, tant que les structures d’accélération de niveau inférieur référencées par une structure d’accélération de niveau supérieur sont présentes au moment où celle-ci est utilisée pour le lancer de rayons ou pour des mises à jour de structure d’accélération. La désérialisation ne peut être effectuée que sur le même appareil et avec la même version de pilote que ceux sur lesquels les données ont été sérialisées. Sinon, les résultats sont indéfinis. Ce mode est uniquement destiné aux outils tels que PIX, même si rien n’empêche une application de l’utiliser, mais il 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 à la mise en cache des structures d’accélération, car l’exécution d’une génération complète de structure d’accélération est susceptible d’être plus rapide que son chargement à partir du disque. IMPORTANT La mémoire source doit être dans l’état D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE. > La mémoire de destination doit être dans l’état D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE. |
| D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE_AND_COMPRESS | REMARQUE : cet indicateur est déprécié et sera supprimé dans le GDK de juin 2024 Copie une structure d’accélération et la compresse pour une utilisation avec le décompresseur BVH sur processeur de XG, DecompressBVH(). Cette compression est destinée aux BVH générés hors connexion. |
| D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE_AND_COMPRESS_FOR_GPU | REMARQUE : cet indicateur est déprécié et sera supprimé dans le GDK de juin 2024 Copie une structure d’accélération et la compresse pour une utilisation avec le décompresseur BVH sur GPU de XG, DecompressBVH_BatchedGPU(). Cette compression est destinée aux BVH générés hors connexion. |
