Syntaxe
typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
{
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0x00,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x01,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x02,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x04,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x08,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_DEHYDRATE = 0x40000000,
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
Constantes
| Constante | Description |
|---|---|
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE | Aucune option n’est spécifiée pour la génération de la structure d’accélération. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE | Génère la structure d’accélération de façon à ce qu’elle prenne en charge les mises à jour futures (au moyen de l’indicateur D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE) au lieu que l’application doive régénérer entièrement la structure. Cette option peut entraîner une consommation de mémoire et des temps de génération accrus, ainsi qu’une baisse des performances du lancer de rayons. Les mises à jour futures devraient toutefois être plus rapides que la génération de la structure d’accélération équivalente à partir de zéro. Cet indicateur ne peut être défini que lors de la génération initiale d’une structure d’accélération, ou lors d’une mise à jour dont la structure d’accélération source a spécifié D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE. Autrement dit, une fois qu’une structure d’accélération a été généré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 au moyen de mises à jour. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION | Active l’option permettant de compacter la structure d’accélération en appelant CopyRaytracingAccelerationStructure en mode compact, spécifié avec D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT. Cette option peut entraîner une consommation de mémoire et des temps de génération accrus. Après un compactage ultérieur, la structure d’accélération résultante devrait toutefois occuper moins de mémoire que si elle avait été générée à partir de zéro. Cet indicateur est compatible avec tous les autres indicateurs. S’il est spécifié dans le cadre d’une mise à jour de structure d’accélération, la structure d’accélération source doit également avoir été générée avec cet indicateur. Autrement dit, une fois qu’une structure d’accélération a été généré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 au moyen de mises à jour qui spécifient D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION. La spécification d’ALLOW_COMPACTION peut augmenter la taille de la structure d’accélération avant compactage par rapport à l’absence d’ALLOW_COMPACTION. Si plusieurs générations incrémentielles sont effectuées avant le compactage final, du travail redondant lié au compactage peut être effectué. La taille requise pour la structure d’accélération compactée peut être interrogée avant le compactage au moyen de EmitRaytracingAccelerationStructurePostbuildInfo. Consultez D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC pour obtenir plus d’informations sur les propriétés de la taille d’une structure d’accélération compactée. Remarque 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’aide que dans une certaine mesure. Toutefois, si le pipeline sait que la structure d’accélération ne sera plus mise à jour, il peut rendre la structure plus compacte. Certaines applications peuvent tirer avantage d’un double compactage : une fois après la génération initiale, puis de nouveau lorsque la structure d’accélération s’est stabilisée dans un état statique, le cas échéant. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE | Construit une structure d’accélération de haute qualité qui maximise les performances du lancer de rayons au prix d’un temps de génération supplémentaire. En général, l’implémentation prend de 2 à 3 fois plus de temps de génération que le paramètre par défaut afin d’obtenir de meilleures performances de traçage. Cet indicateur est particulièrement recommandé pour la géométrie statique. Il est compatible avec tous les autres indicateurs, sauf D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD | Construit une structure d’accélération de moindre qualité, en échangeant les performances du lancer de rayons contre la vitesse de génération. En général, l’implémentation prend de 1/2 à 1/3 du temps de génération du paramètre par défaut, au détriment des performances de traçage. Cet indicateur est compatible avec tous les autres indicateurs, sauf D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY | Réduit au minimum 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 des temps de génération ou de lancer de rayons accrus. Elle est indépendante de l’indicateur D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION et du compactage explicite de la structure d’accélération qu’il permet. La combinaison de ces indicateurs peut faire en sorte que la structure d’accélération initiale et le résultat de son compactage utilisent tous deux moins de mémoire. L’incidence de l’utilisation de cet indicateur pour une génération se reflète dans le résultat de l’appel à GetRaytracingAccelerationStructurePrebuildInfo avant la génération, afin d’obtenir les besoins en mémoire de celle-ci. Cet indicateur est compatible avec tous les autres indicateurs. |
| D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE | Effectue une mise à jour de la structure d’accélération, plutôt qu’une génération à partir de zéro. Cette opération est plus rapide qu’une génération complète, mais peut nuire aux performances du lancer de rayons, surtout si les positions des objets sous-jacents ont beaucoup changé depuis la génération originale 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 des plages d’adresses de la source et de la destination est non valide. Si la source et la destination ne se chevauchent pas, la structure d’accélération source n’est pas modifiée. Les besoins en mémoire de la structure d’accélération de sortie sont les mêmes que ceux de 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 indicateurs sélectionnés, à part D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE et D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE, doivent correspondre aux indicateurs de la structure d’accélération source. Les mises à jour de structures d’accélération peuvent être effectuées successivement sans limite, 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 génération de mise à jour continuent de spécifier D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE. |
| D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_DEHYDRATE | Génère un BVH déshydraté (les données de géométrie sont mises à zéro) qui peut être compressé avec Deflate. Le BVH peut être réhydraté sur place par le GPU avec ID3D12GraphicsCommandList8::RehydrateRaytracingAccelerationStructureBatchedX ou par le CPU avec ID3D12Device11::RehydrateRaytracingAccelerationStructureX |
Configuration requise
En-tête : d3d12_xs.hBibliothèque : d3d12_xs.lib
Plateformes prises en charge : consoles XBOX Series
