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 de la source à 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 en mode clone, mais en faisant tenir la destination dans une empreinte mémoire potentiellement plus petite, et certainement pas plus grande. La taille requise pour la destination peut être obtenue au préalable avec 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 exige 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 obtenue au préalable avec EmitRaytracingAccelerationStructurePostbuildInfo. Ce mode est uniquement destiné aux outils tels que PIX, mais 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 pour que les outils/PIX puissent 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 du pilote dans les structures d’accélération si ce qui est affiché ne correspond grossièrement pas aux données utilisées par l’application pour créer la structure d’accélération, au-delà des tolérances permises. 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 originale, 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 originale. La sortie ne correspond qu’approximativement à l’original, en partie en raison des tolérances permises dans la spécification des structures d’accélération, et en partie en raison de la complexité inhérente au fait de rapporter 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 pourraient être plus conservatrices (plus grandes) en volume, et même différentes en nombre, par rapport à ce qui se trouve réellement dans la représentation de la structure d’accélération. Les géométries, chacune avec sa propre description de géométrie, apparaissent dans le même ordre que dans la structure d’accélération originale, 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 permis 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, elle-même une structure 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 pour la réutiliser plus tard, 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, que des structures d’accélération de niveau supérieur pointent ou non vers elles. Autrement dit, 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 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 qui a été 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 auxquelles une structure de niveau supérieur fait référence sont présentes au moment où celle-ci est utilisée pour le lancer de rayons ou pour des mises à jour de structures d’accélération. La désérialisation ne peut être effectuée que sur le même appareil et 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; rien n’empêche une application de l’utiliser, mais ce mode n’est permis 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 sera probablement 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éconseillé et sera supprimé dans le GDK de juin 2024 Copie une structure d’accélération et la compresse pour l’utiliser avec le décompresseur de BVH sur CPU de XG, DecompressBVH(). Cette compression est destinée aux BVH générés hors ligne. |
| D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE_AND_COMPRESS_FOR_GPU | REMARQUE : Cet indicateur est déconseillé et sera supprimé dans le GDK de juin 2024 Copie une structure d’accélération et la compresse pour l’utiliser avec le décompresseur de BVH sur GPU de XG, DecompressBVH_BatchedGPU(). Cette compression est destinée aux BVH générés hors ligne. |
