> ## 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.

# BVH 壓縮

> BVH 壓縮

隨著 XBOX Series 主機推出，光線追蹤變得越來越普遍，為遊戲資產離線產生 BVH 結構也隨之普及。這些資產可能很大且佔用大量磁碟空間，可能導致遊戲必須在其他方面刪減內容，才能符合實體媒體光碟的容量限制。

為了協助降低此影響，我們開發了一項針對性的 BVH 壓縮技術，可大幅減少 BVH 在磁碟上的整體大小，同時在執行階段仍具備快速的解壓縮速度。此技術將從 2022 年 3 月 GDK 開始提供。

在我們的測試中，視原始 BVH 的大小而定，我們看到的壓縮比介於 **3.5 倍到 6.6 倍**之間。

## 考量事項

<Note>
  使用 BVH 壓縮器之前，您應考量下列幾項注意事項：
</Note>

1. BVH 壓縮目前僅在離線 BVH 建置器中受到支援
2. BVH 壓縮**只**會影響磁碟上的資料大小，不會影響解壓縮到記憶體中的大小
3. 壓縮的 BVH 結構必須先在執行階段由 CPU 解壓縮，才能使用

## BVH 離線壓縮

您可以使用一般使用的 Scarlett PC 驅動程式，輕鬆建立壓縮的 BVH 結構，只要在 *CopyRaytracingAccelerationStructure* 呼叫中提供新的旗標即可，此旗標會序列化並壓縮 BVH 結構，以便儲存到磁碟。

此旗標為 **D3D12XBOX\_RAYTRACING\_ACCELERATION\_STRUCTURE\_COPY\_MODE\_SERIALIZE\_AND\_COMPRESS**。

\*\*注意：\*\*壓縮的 BVH 結構仍可使用標準 ZLIB 壓縮進一步壓縮，以進一步減少整體大小。

## BVH 執行階段解壓縮

若要在執行階段解壓縮 BVH 結構，您需要使用「XG」程式庫。解壓縮程序目前只會在 CPU 上執行，且為單一執行緒。您可以輕鬆建立並使用解壓縮器，如下列範例程式碼所示：

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

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

如果您需要驗證載入的 BVH 結構是否已壓縮，可以使用下列呼叫，並傳入 BVH 結構標頭中的旗標：

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

\*\*注意：\*\*解壓縮器的速度很快，但 XBOX Series 主機中的 NVMe SSD 將資料串流到遊戲的速度，可能比 CPU 解壓縮的速度更快。如果您發現載入時的解壓縮是瓶頸，可以考慮使用分散在多個實體 CPU 核心上的多個解壓縮執行緒。

## XBOX ATG 範例

我們最近更新了 [OfflineRT](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/development-downloads/gdk-samples-list#graphics) 圖形範例，以示範 BVH 結構的離線建立和執行階段解壓縮。請確定您擁有最新版本 (可從[這裡](https://aka.ms/gdkdl)取得)，其中包含這些變更。


## Related topics

- [NDA 主題目錄 - Microsoft Learn 線上連結](/zh-TW/nda/nda-topic-directory.md)
- [安裝 GDK 工具鏈](/zh-TW/home/setup-install/download-install.md)
- [Raytracing on XBOX Series X|S with XDXR](/build/core-features/graphics/newfeatures/raytracing/index.md)
- [Raytracing en XBOX Series X|S con XDXR](/es/build/core-features/graphics/newfeatures/raytracing/index.md)
- [在 XBOX Series X|S 上使用 XDXR 进行光线追踪](/zh-CN/build/core-features/graphics/newfeatures/raytracing/index.md)
