Google および Binomial オープンソース Basis Universal テクスチャ圧縮システム

Googleと二項 開いた ソーステキスト 普遍的な基盤、効率的なテクスチャ圧縮のためのコーデック、および画像およびビデオベースのテクスチャを配布するための関連するユニバーサル「.basis」ファイル形式。 リファレンス実装コードは C++ で書かれており、 供給された Apache 2.0 に基づいてライセンスされています。

ベースユニバーサルは以前に補完しました 出版された 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 分の 10 で、転送に必要なデータ量は JPEG フォーマットに基づく一般的なテクスチャの約半分、RDO モードのテクスチャよりも 25 ~ 891% 少なくなります。 たとえば、JPEG 画像サイズが 1 KB、ETC1 テクスチャが 469 MB の場合、Basis 形式のデータ サイズは最高品質モードで 16 KB になります。 テクスチャをビデオ メモリに配置する場合、テストで使用された JPEG および PNG テクスチャは XNUMX MB のメモリを消費しましたが、
基本的に、BC2、PVRTC1、ETC1 への変換には 1 MB のメモリ、BC4 への変換には 7 MB のメモリが必要です。

Google および Binomial オープンソース Basis Universal テクスチャ圧縮システム

既存のアプリケーションを Basis Universal に移行するプロセスは非常に簡単です。 プロジェクトが提供する「basisu」ユーティリティを使用して、必要な品質レベルを選択し、既存のテクスチャまたは画像を新しい形式に再コード化するだけで十分です。 次に、アプリケーションでコードをレンダリングする前に、basicu トランスコーダを初期化する必要があります。basicu トランスコーダは、中間フォーマットを現在の GPU でサポートされているフォーマットに変換する役割を果たします。 同時に、画像は圧縮形式で GPU にロードされるなど、処理チェーン全体にわたって圧縮されたままになります。 画像全体を先制的にトランスコードするのではなく、GPU は画像の必要な部分のみを選択的にデコードします。

異種テクスチャ配列 (キューブマップ)、ボリューム テクスチャ、テクスチャ配列、ミップマップ レベル、ビデオ シーケンス、または任意のテクスチャ フラグメントを XNUMX つのファイルに保存することがサポートされています。 たとえば、一連の画像を XNUMX つのファイルにパックして小さなビデオを作成したり、すべての画像に共通のパレットを使用して典型的な画像テンプレートを重複排除して複数のテクスチャを組み合わせたりすることができます。 Basis Universal エンコーダの実装は、OpenMP を使用したマルチスレッド エンコードをサポートしています。 トランスコーダは現在、シングルスレッド モードでのみ動作します。

さらに 利用可能です Basis ブラウザ用のユニバーサル デコーダ。WebAssembly 形式で提供され、WebGL ベースの Web アプリケーションで使用できます。 最終的に、Google はすべての主要なブラウザで Basis Universal をサポートし、WebGL および将来の仕様のポータブル テクスチャ形式として推進する予定です。 WebGPUこれは、概念的には Vulkan、Metal、および Direct3D 12 API に似ています。

Basis Universal は、GPU 側でのみその後の処理を伴うビデオを埋め込むことができるため、WebAssembly および WebGL 上で動的なユーザー インターフェイスを作成するための興味深いソリューションとなり、最小限の CPU 負荷で数百の小さなビデオを同時に表示できることに注意してください。 WebAssembly で従来のコーデックを使用して SIMD 命令を使用できるようになるまでは、このレベルのパフォーマンスはまだ達成できないため、従来のビデオが適用できない領域でもテクスチャベースのビデオを使用できます。 ビデオ用に追加の最適化を行ったコードは、現在公開に向けて準備中です。 I フレームと P フレーム アダプティブ パディング (CR) サポート付き。

出所: オープンネット.ru

コメントを追加します