GoogleとBinomialがBasisのソースコードをリリースしました

基礎

GoogleとBinomialは最近、次のソースコードを公開したと発表した。 ベーシスユニバーサル、 これ テクスチャと関連する .basis ファイル形式を効率的に圧縮するためのコーデックです。 画像やビデオに基づいてテクスチャを配布します。 リファレンス実装コードは C++ で書かれており、Apache 2.0 ライセンスに基づいて提供されます。

普遍的な基盤 Draco 3D データ圧縮システムを補完します GPU へのテクスチャ配信の問題を解決しようとしています。

これまで、開発者は、高性能ではあるが GPU 固有で多くのディスク領域を占有する低レベルのフォーマットと、サイズは縮小されているがパフォーマンスでは GPU テクスチャと競合できないフォーマットのどちらかを選択するという制約を受けてきました。

ベースについて

ユニバーサルベーシスフォーマット ネイティブ GPU テクスチャのパフォーマンス レベルを達成できますが、より高いレベルの圧縮が提供されます。

ベースは中間フォーマットであり、使用前に、 GPU テクスチャのさまざまな低レベル形式への高速トランスコーディングを提供します これらはデスクトップ システムとモバイル デバイスの両方で使用されます。

現在のところ、 ストリーミングは次の形式でサポートされています PVRTC1 (4bpp RGB)、BC7 (6 RGB モード)、BC1-5、ETC1 および ETC2。 将来的には、A モードがサポートされる予定ですBC4 の場合は STC (RGB または RGBA) および 5/7 RGBA、PVRTC4 の場合は 1bpp RGBA。

この形式のテクスチャはビデオ メモリを 6 ~ 8 分の XNUMX に削減し、 必要なデータは、JPEG 形式に基づく一般的なテクスチャよりも約 10 倍少なく、RDO モードのテクスチャよりも 25 ~ XNUMX% 少なくなります。

たとえば、JPEG 画像サイズが 891 KB、ETC1 テクスチャが 1 MB の場合、基本フォーマットのデータ サイズは最高品質モードで 469 KB になります。

テクスチャをビデオ メモリに配置する場合、JPEG および PNG 形式のテストで使用されたテクスチャは 16 MB のメモリを消費しましたが、BC2、PVRTC1、ETC1、および 1 での送信の場合、基本形式のテクスチャは 4 MB のメモリを必要としました。 AC7で送信する場合はMB。

二項ユニバーサル テクスチャ

既存のアプリケーションを Basis Universal に変換するプロセスは非常に簡単です。

プロジェクトが提供する「basisu」ユーティリティを使用して、必要な品質レベルを選択し、既存のテクスチャまたは画像を新しい形式に再コード化するだけで十分です。

また、アプリケーションでは、コードの前にエンコーダーを初期化する必要があります。エンコーダーは、中間フォーマットを現在の GPU でサポートされているフォーマットに変換する役割を果たします。

同時に、 処理チェーン全体の画像は圧縮されたままになります。 GPU 上での圧縮形式でのダウンロードも含まれます。 画像全体をプロアクティブに再コード化するのではなく、GPU は画像の必要な部分のみを選択的にデコードします。

テクスチャの単一ファイル配列への保存をサポート (キューブマップ)、バルク テクスチャ、テクスチャ配列、ミップマップ レベル、ビデオ シーケンス、または任意のテクスチャ フラグメント。

たとえば、単一の画像シリーズ ファイルにパッケージ化して小さなビデオを作成したり、すべての画像に共通のパレットと一般的な画像テンプレートの重複排除を使用して複数のテクスチャを組み合わせたりすることができます。

Googleは基礎を標準にしたいと考えている

Basis Universal エンコーダの実装は、OpenMP を使用したマルチスレッド エンコードをサポートしています。 レコーダはシングルスレッド モードでのみ動作します。

さらに、ブラウザのデコーダ Basis Universal は Web 形式で利用可能です、WebGL ベースの Web アプリケーションで使用できます。

結局、 Google は、すべての主要ブラウザで Basis Universal をサポートし、それを推進する予定です WebGL および将来の WebGPU 仕様用のポータブル テクスチャ形式として、概念的には Vulkan、Metal、Direct3D API 12 に似ています。

Basis Universal は、ビデオと後処理を GPU 側のみで統合できるため、WebAssembly および WebGL で動的ユーザー インターフェイスを作成するための興味深いソリューションとなり、CPU への負荷を最小限に抑えながら数百の小さなビデオを同時にレンダリングできることに注意してください。

従来のコーデックを使用して WebAssembly で SIMD 命令を使用できるようになるまでは、そのようなレベルのパフォーマンスはまだ達成できないため、通常のビデオが適用できない領域でもテクスチャベースのビデオを使用できます。

出典 https://opensource.googleblog.com/


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。