Partager via


énumération D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS (d3d12.h)

Spécifie des indicateurs pour la génération d’une structure d’accélération de raytracing. Utilisez une valeur de cette énumération avec la structure D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS qui fournit une entrée à l’opération de génération de structure d’accélération.

Syntax

typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS {
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20
} ;

Constantes

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE
Valeur : 0
Aucune option spécifiée pour la build de structure d’accélération.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE
Valeur : 0x1
Générez la structure d’accélération de telle sorte qu’elle prenne en charge les futures mises à jour (via l’indicateur D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE) au lieu que l’application ait à reconstruire entièrement la structure. Cette option peut entraîner une augmentation de la consommation de mémoire, des temps de génération et une baisse des performances de raytracing. Toutefois, les mises à jour futures doivent être plus rapides que la création de la structure d’accélération équivalente à partir de zéro.

Cet indicateur ne peut être défini que sur une build de structure d’accélération initiale ou sur une mise à jour où la structure d’accélération source spécifiée D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE. En d’autres termes, une fois qu’une structure d’accélération a été créée sans D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE, aucune autre structure d’accélération ne peut être créée à partir de celle-ci via des mises à jour.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION
Valeur : 0x2
Active l’option permettant de compacter la structure d’accélération en appelant CopyRaytracingAccelerationStructure en utilisant le mode compact, spécifié avec D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT.

Cette option peut entraîner une augmentation de la consommation de mémoire et des temps de génération. Toutefois, après un futur compactage, la structure d’accélération résultante doit consommer un encombrement mémoire plus faible que la création de la structure d’accélération à partir de zéro.

Cet indicateur est compatible avec tous les autres indicateurs. Si elle est spécifiée dans le cadre d’une mise à jour de la structure d’accélération, la structure d’accélération source doit également avoir été générée avec cet indicateur. En d’autres termes, une fois qu’une structure d’accélération a été créée sans D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION, aucune autre structure d’accélération ne peut être créée à partir de celle-ci via des mises à jour qui spécifient D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION.



La spécification de ALLOW_COMPACTION peut augmenter la taille de la structure d’accélération de pré-compactage au lieu de ne pas spécifier ALLOW_COMPACTION.



Si plusieurs builds incrémentielles sont effectuées avant le compactage final, un travail lié au compactage redondant peut être effectué.


La taille requise pour la structure d’accélération compactée peut être interrogée avant le compactage via EmitRaytracingAccelerationStructurePostbuildInfo. Consultez D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC pour plus d’informations sur les propriétés de la taille de structure d’accélération compactée.

Note Lorsque D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE est spécifié, certaines informations doivent être conservées dans la structure d’accélération, et le compactage n’est que très utile. Toutefois, si le pipeline sait que la structure d’accélération ne sera plus mise à jour, cela peut rendre la structure plus compacte. Certaines applications peuvent bénéficier d’un compactage deux fois : une fois après la build initiale, puis une fois que la structure d’accélération a atteint un état statique, si cela se produit.

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE
Valeur : 0x4
Construisez une structure d’accélération de haute qualité qui optimise les performances de raytracing au détriment du temps de génération supplémentaire. En règle générale, l’implémentation prend 2 à 3 fois plus de temps de génération que le paramètre par défaut pour obtenir de meilleures performances de suivi.

Cet indicateur est recommandé pour la géométrie statique en particulier. Il est compatible avec tous les autres indicateurs, à l’exception des D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD
Valeur : 0x8
Construisez une structure d’accélération de qualité inférieure, en échangeant les performances de raytracing pour la vitesse de génération. En règle générale, l’implémentation prend 1/2 à 1/3 de temps de génération par rapport au paramètre par défaut, avec un sacrifice dans les performances de suivi.

Cet indicateur est compatible avec tous les autres indicateurs à l’exception des D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY
Valeur : 0x10
Réduisez la quantité de mémoire de travail utilisée pendant la génération de la structure d’accélération, ainsi que la taille du résultat. Cette option peut entraîner une augmentation des temps de génération et/ou des temps de raytracing. Ceci est orthogonal à l’indicateur D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION et au compactage de structure d’accélération explicite qu’il permet. La combinaison des indicateurs peut signifier que la structure d’accélération initiale et le résultat de son compactage utilisent moins de mémoire.

L’impact de l’utilisation de cet indicateur pour une build se reflète dans le résultat de l’appel de GetRaytracingAccelerationStructurePrebuildInfo avant d’effectuer la build pour récupérer la mémoire requise pour la build.

Cet indicateur est compatible avec tous les autres indicateurs.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE
Valeur : 0x20
Effectuez une mise à jour de structure d’accélération, par opposition à la génération à partir de zéro. Cela est plus rapide qu’une build complète, mais peut avoir un impact négatif sur les performances de raytracing, en particulier si les positions des objets sous-jacents ont changé de manière significative par rapport à la build d’origine de la structure d’accélération avant les mises à jour.

Si les adresses des structures d’accélération source et de destination sont identiques, la mise à jour est effectuée sur place. Tout autre chevauchement de plages d’adresses de la source et de la destination n’est pas valide. Pour les sources et les destinations qui ne se chevauchent pas, la structure d’accélération source n’est pas modifiée. La mémoire requise pour la structure d’accélération de sortie est la même que dans la structure d’accélération d’entrée

La structure d’accélération source doit avoir été générée avec D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE.

Cet indicateur est compatible avec tous les autres indicateurs. Les autres sélections d’indicateurs, à l’exception des D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE et des D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE, doivent correspondre aux indicateurs de la structure d’accélération source.

Les mises à jour de structure d’accélération peuvent être effectuées de façon illimitée, tant que la structure d’accélération source a été créée avec D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE et que les indicateurs de la build de mise à jour continuent de spécifier D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE.

Configuration requise

Condition requise Valeur
En-tête d3d12.h