Skip to main content
隨著 XBOX Series 主機推出,光線追蹤變得越來越普遍,為遊戲資產離線產生 BVH 結構也隨之普及。這些資產可能很大且佔用大量磁碟空間,可能導致遊戲必須在其他方面刪減內容,才能符合實體媒體光碟的容量限制。 為了協助降低此影響,我們開發了一項針對性的 BVH 壓縮技術,可大幅減少 BVH 在磁碟上的整體大小,同時在執行階段仍具備快速的解壓縮速度。此技術將從 2022 年 3 月 GDK 開始提供。 在我們的測試中,視原始 BVH 的大小而定,我們看到的壓縮比介於 3.5 倍到 6.6 倍之間。

考量事項

使用 BVH 壓縮器之前,您應考量下列幾項注意事項:
  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 上執行,且為單一執行緒。您可以輕鬆建立並使用解壓縮器,如下列範例程式碼所示:
如果您需要驗證載入的 BVH 結構是否已壓縮,可以使用下列呼叫,並傳入 BVH 結構標頭中的旗標:
**注意:**解壓縮器的速度很快,但 XBOX Series 主機中的 NVMe SSD 將資料串流到遊戲的速度,可能比 CPU 解壓縮的速度更快。如果您發現載入時的解壓縮是瓶頸,可以考慮使用分散在多個實體 CPU 核心上的多個解壓縮執行緒。

XBOX ATG 範例

我們最近更新了 OfflineRT 圖形範例,以示範 BVH 結構的離線建立和執行階段解壓縮。請確定您擁有最新版本 (可從這裡取得),其中包含這些變更。
Last modified on October 6, 2026