雖然下文所述的功能適用於任何符合對齊需求的資料,但其設計用途是搭配離線 swizzle 處理的內容,而且在此情況下最有效。
內容
- DSTORAGE_SWIZZLE_MODE_4K_4K_8K
- DSTORAGE_SWIZZLE_MODE_4K_12K_4K_4K_8K
- DSTORAGE_SWIZZLE_MODE_4K_4K_24K
- DSTORAGE_SWIZZLE_MODE_4K_12K_4K_12K
DSTORAGE_SWIZZLE_MODE_4K_4K_8K
此模式適用於 BC1 編碼的內容。未壓縮內容的大小必須是 16KB 的倍數。此模式假設來源資料依串流 (亦即端點和索引) 分組,以改善可壓縮性。來源資料也必須使用 Zlib 或 BCPack 進行壓縮。當為 DSTORAGE_REQUEST_OPTIONS::SwizzleMode 選項提供 DSTORAGE_SWIZZLE_MODE_4K_4K_8K 時,DirectStorage 會從分組內容中的對應資料擷取,將記憶體中未壓縮的內容重新排列為大小 16KB 的交錯群組。每個 16KB 群組都包含原始 BC1 內容的所有資料,但仍保持分組。可以使用計算著色器從 16KB 群組就地完整重建原始內容。
DSTORAGE_SWIZZLE_MODE_4K_12K_4K_4K_8K
此模式適用於 BC3 編碼的內容。未壓縮內容的大小必須是 32KB 的倍數。此模式假設來源資料依串流 (亦即端點和索引) 分組,以改善可壓縮性。來源資料也必須使用 Zlib 或 BCPack 進行壓縮。當為 DSTORAGE_REQUEST_OPTIONS::SwizzleMode 選項提供 DSTORAGE_SWIZZLE_MODE_4K_12K_4K_4K_8K 時,DirectStorage 會從分組內容中的對應資料擷取,將記憶體中未壓縮的內容重新排列為大小 32KB 的交錯群組。每個 32KB 群組都包含原始 BC3 內容的所有資料,但仍保持分組。可以使用計算著色器從 32KB 群組就地完整重建原始內容。
DSTORAGE_SWIZZLE_MODE_4K_4K_24K
此模式適用於 BC4 編碼的內容。未壓縮內容的大小必須是 32KB 的倍數。此模式假設來源資料依串流 (亦即端點和索引) 分組,以改善可壓縮性。來源資料也必須使用 Zlib 或 BCPack 進行壓縮。當為 DSTORAGE_REQUEST_OPTIONS::SwizzleMode 選項提供 DSTORAGE_SWIZZLE_MODE_4K_4K_24K 時,DirectStorage 會從分組內容中的對應資料擷取,將記憶體中未壓縮的內容重新排列為大小 32KB 的交錯群組。每個 32KB 群組都包含原始 BC4 內容的所有資料,但仍保持分組。可以使用計算著色器從 32KB 群組就地完整重建原始內容。
DSTORAGE_SWIZZLE_MODE_4K_12K_4K_12K
此模式適用於 BC5 編碼的內容。未壓縮內容的大小必須是 32KB 的倍數。此模式假設來源資料依串流 (亦即端點和索引) 分組,以改善可壓縮性。來源資料也必須使用 Zlib 或 BCPack 進行壓縮。當為 DSTORAGE_REQUEST_OPTIONS::SwizzleMode 選項提供 DSTORAGE_SWIZZLE_MODE_4K_12K_4K_12K 時,DirectStorage 會從分組內容中的對應資料擷取,將記憶體中未壓縮的內容重新排列為大小 32KB 的交錯群組。每個 32KB 群組都包含原始 BC5 內容的所有資料,但仍保持分組。可以使用計算著色器從 32KB 群組就地完整重建原始內容。
