Google 與 Binomial 開源 Basis Universal 紋理壓縮系統

Google和二項式 打開 源代碼 通用基礎,一種用於高效紋理壓縮的編解碼器以及用於分發基於圖像和視頻的紋理的關聯通用“.basis”檔案格式。 參考實作程式碼是用C++寫的 提供 在 Apache 2.0 下獲得許可。

Basis Universal 補充了先前的內容 發表 Draco 3D資料壓縮系統並試圖解決為GPU提供紋理的問題。 到目前為止,開發人員只能在實現高效能但特定於 GPU 並佔用大量磁碟空間的低階格式和實現尺寸減小但在效能上無法與 GPU 紋理競爭的其他格式之間進行選擇。

Basis Universal 格式可讓您實現本機 GPU 紋理的效能,但提供更高等級的壓縮。
Basis 是一種中間格式,可在使用前將 GPU 紋理快速轉碼為各種低階格式,以便在桌面系統和行動裝置上使用。 目前支援的格式有 PVRTC1 (4bpp RGB)、BC7(6 RGB 模式)、BC1-5、ETC1 和 ETC2 格式。 未來預計將支援 ASTC 格式(RGB 或 RGBA)以及 BC4 的 5/7 RGBA 模式和 PVRTC4 的 1bpp RGBA。

Google 與 Binomial 開源 Basis Universal 紋理壓縮系統

基本格式的紋理佔用的視訊記憶體少 6-8 倍,所需傳輸的資料量大約是基於 JPEG 格式的典型紋理的一半,比 RDO 模式的紋理少 10-25%。 例如,JPEG 影像大小為 891 KB,ETC1 紋理為 1 MB,Basis 格式的資料大小在最高品質模式下為 469 KB。 將紋理放入顯存時,測試中使用的 JPEG 和 PNG 紋理消耗了 16 MB 內存,而
Basis 需要 2 MB 記憶體來轉換為 BC1、PVRTC1 和 ETC1,需要 4 MB 記憶體轉換為 BC7。

Google 與 Binomial 開源 Basis Universal 紋理壓縮系統

將現有應用程式移轉到 Basis Universal 的過程非常簡單。 使用專案提供的「basisu」實用程式將現有紋理或影像重新編碼為新格式就足夠了,選擇所需的品質等級。 接下來,在應用程式中,在渲染程式碼之前,需要初始化basisu轉碼器,它負責將中間格式翻譯成目前GPU支援的格式。 同時,整個處理鏈中的映像檔保持壓縮狀態,包括以壓縮形式載入到 GPU 中。 GPU 不會預先對整個影像進行轉碼,而是選擇性地僅對影像的必要部分進行解碼。

它支援在一個檔案中保存異質紋理數組(立方體貼圖)、體積紋理、紋理數組、mipmap 層級、視訊序列或任意紋理片段。 例如,可以將一系列圖像打包在一個文件中以創建小視頻,或者使用所有圖像的通用調色板並刪除典型圖像模板的重複數據來組合多個紋理。 Basis Universal 編碼器實作支援使用 OpenMP 的多執行緒編碼。 轉碼器目前僅在單線程模式下工作。

另外 有空 Basis 瀏覽器通用解碼器,以 WebAssembly 格式提供,可用於基於 WebGL 的 Web 應用程式。 最終,Google 打算在所有主要瀏覽器中支援 Basis Universal,並將其推廣為 WebGL 的可移植紋理格式和未來規範 網絡GPU,它在概念上類似於 Vulkan、Metal 和 Direct3D 12 API。

值得注意的是,嵌入視訊並僅在 GPU 端進行後續處理的能力使 Basis Universal 成為在 WebAssembly 和 WebGL 上創建動態用戶介面的有趣解決方案,它可以以最小的 CPU 負載同時顯示數百個小視訊。 在SIMD指令可以與傳統編解碼器一起在WebAssembly中使用之前,這種效能等級還無法實現,因此基於紋理的影片可以用於傳統影片不適用的領域。 目前正在準備發布對影片進行額外優化的程式碼,包括使用 I 幀和 P 幀 具有自適應填充 (CR) 支援。

來源: opennet.ru

添加評論