Googleと二項
ベースユニバーサルは以前に補完しました
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 がサポートされる予定です。
基本フォーマットのテクスチャは、使用するビデオ メモリが 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 のメモリが必要です。
既存のアプリケーションを Basis Universal に移行するプロセスは非常に簡単です。 プロジェクトが提供する「basisu」ユーティリティを使用して、必要な品質レベルを選択し、既存のテクスチャまたは画像を新しい形式に再コード化するだけで十分です。 次に、アプリケーションでコードをレンダリングする前に、basicu トランスコーダを初期化する必要があります。basicu トランスコーダは、中間フォーマットを現在の GPU でサポートされているフォーマットに変換する役割を果たします。 同時に、画像は圧縮形式で GPU にロードされるなど、処理チェーン全体にわたって圧縮されたままになります。 画像全体を先制的にトランスコードするのではなく、GPU は画像の必要な部分のみを選択的にデコードします。
異種テクスチャ配列 (キューブマップ)、ボリューム テクスチャ、テクスチャ配列、ミップマップ レベル、ビデオ シーケンス、または任意のテクスチャ フラグメントを XNUMX つのファイルに保存することがサポートされています。 たとえば、一連の画像を XNUMX つのファイルにパックして小さなビデオを作成したり、すべての画像に共通のパレットを使用して典型的な画像テンプレートを重複排除して複数のテクスチャを組み合わせたりすることができます。 Basis Universal エンコーダの実装は、OpenMP を使用したマルチスレッド エンコードをサポートしています。 トランスコーダは現在、シングルスレッド モードでのみ動作します。
さらに
Basis Universal は、GPU 側でのみその後の処理を伴うビデオを埋め込むことができるため、WebAssembly および WebGL 上で動的なユーザー インターフェイスを作成するための興味深いソリューションとなり、最小限の CPU 負荷で数百の小さなビデオを同時に表示できることに注意してください。 WebAssembly で従来のコーデックを使用して SIMD 命令を使用できるようになるまでは、このレベルのパフォーマンスはまだ達成できないため、従来のビデオが適用できない領域でもテクスチャベースのビデオを使用できます。 ビデオ用に追加の最適化を行ったコードは、現在公開に向けて準備中です。
出所: オープンネット.ru