> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Compression de BVH

> Compression de BVH

Avec le lancement des consoles XBOX Series, le lancer de rayons devient plus courant, et avec lui la génération hors ligne de structures BVH pour les ressources de jeu. Ces ressources peuvent être volumineuses et occuper beaucoup d'espace disque, ce qui peut obliger les jeux à couper du contenu ailleurs pour respecter les limites des disques physiques.

Pour aider à réduire cet impact, nous avons développé une technologie ciblée de compression de BVH qui peut réduire considérablement la taille globale de vos BVH sur le disque, tout en offrant une décompression rapide à l'exécution. Cette technologie sera disponible à partir du GDK de mars 2022.

Lors de nos tests, nous avons observé des taux de compression **de 3,5 à 6,6 fois**, selon la taille du BVH d'origine.

## Considérations

<Note>
  Il y a quelques mises en garde à prendre en compte avant d'utiliser le compresseur de BVH :
</Note>

1. La compression de BVH n'est actuellement prise en charge que dans le générateur de BVH hors ligne
2. La compression de BVH influe **uniquement** sur la taille des données sur le disque, et non une fois décompressées en mémoire
3. La structure BVH compressée doit être décompressée à l'exécution par le processeur avant de pouvoir être utilisée

## Compression de BVH hors ligne

On peut facilement créer une structure BVH compressée à l'aide du pilote PC Scarlett habituellement utilisé, en fournissant un nouvel indicateur à l'appel *CopyRaytracingAccelerationStructure*, qui sérialise et compresse la structure BVH, prête à être enregistrée sur le disque.

L'indicateur est **D3D12XBOX\_RAYTRACING\_ACCELERATION\_STRUCTURE\_COPY\_MODE\_SERIALIZE\_AND\_COMPRESS**.

**Remarque :** La structure BVH compressée peut encore être compressée à l'aide de la compression ZLIB standard pour réduire davantage la taille globale.

## Décompression de BVH à l'exécution

Pour décompresser la structure BVH à l'exécution, vous devez utiliser la bibliothèque « XG ».  Le processus de décompression s'exécute actuellement uniquement sur le processeur et utilise un seul thread.  Vous pouvez facilement créer et utiliser le décompresseur comme le montre cet exemple de code :

```c++ theme={null}
// Create a BVHComputer for the BVH Decompression
XGBVHComputer* bvhComputer = nullptr;
DX::ThrowIfFailed(XGCreateBVHComputer( &bvhComputer ));

bvhComputer->DecompressBVH(...);
```

Si vous devez vérifier qu'une structure BVH chargée est compressée, vous pouvez utiliser l'appel suivant, en lui transmettant les indicateurs de l'en-tête de la structure BVH :

```c++ theme={null}
bvhComputer->XdxrBvhIsCompressed(myBVHHeaderFlags)
```

**Remarque :** Le décompresseur est rapide, mais le SSD NVMe des consoles XBOX Series peut transmettre des données à votre jeu plus rapidement que le processeur ne peut les décompresser.  Si vous constatez que la décompression au chargement constitue un goulot d'étranglement, vous pourriez envisager d'utiliser plusieurs threads de décompression répartis sur plusieurs cœurs physiques du processeur.

## Exemple XBOX ATG

Nous avons récemment mis à jour l'exemple graphique [OfflineRT](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/development-downloads/gdk-samples-list#graphics) pour illustrer la création hors ligne et la décompression à l'exécution des structures BVH. Assurez-vous d'avoir la dernière version, disponible [ici](https://aka.ms/gdkdl), qui comprend ces modifications.


## Related topics

- [Répertoire des rubriques NDA : liens actifs vers Microsoft Learn](/fr/nda/nda-topic-directory.md)
- [Raytracing on XBOX Series X|S with XDXR](/build/core-features/graphics/newfeatures/raytracing/index.md)
- [HCCompressionLevel](/es/reference/live/httpclient/httpclient/enums/hccompressionlevel.md)
- [Raytracing en XBOX Series X|S con XDXR](/es/build/core-features/graphics/newfeatures/raytracing/index.md)
- [HCHttpCallRequestEnableGzipCompression](/es/reference/live/httpclient/httpclient/functions/hchttpcallrequestenablegzipcompression.md)
