テクスチャ圧縮は、 3D コンピュータ グラフィックスレンダリング システムでテクスチャ マップを保存するために設計された特殊な形式の画像圧縮です。従来の画像圧縮アルゴリズムとは異なり、テクスチャ圧縮アルゴリズムはランダム アクセス用に最適化されています。
テクスチャ圧縮を適用すると、実行時のメモリ使用量を削減できます。多くの場合、テクスチャ データはモバイル アプリケーションにおけるメモリ使用量の最大のソースとなります。
トレードオフ
テクスチャ圧縮に関する独創的な論文[1]で、 Beers、Agrawala、Chaddhaは、テクスチャ圧縮を他の画像圧縮技術と区別する4つの特徴を挙げています。これらの特徴は次のとおりです。
- デコード速度
- 圧縮されたテクスチャ データから直接レンダリングできることが非常に望ましいため、レンダリング パフォーマンスに影響を与えないように、解凍は高速でなければなりません。
- ランダムアクセス
- レンダラーがテクセルにアクセスする順序を予測するのは難しいため、テクスチャ圧縮方式では、解凍されたテクスチャ データへの高速ランダム アクセスが可能である必要があります。このため、 JPEGやランレングス エンコーディングなどのよく知られた画像圧縮方式は使用できなくなります。
- 圧縮率と画質
- レンダリングシステムでは、非可逆圧縮は他のユースケースよりも許容される可能性があります。crunch [2]などの一部のテクスチャ圧縮ライブラリでは、レート歪み最適化(RDO)などの方法を使用して、開発者が圧縮率と視覚品質を柔軟にトレードオフできます。
- エンコード速度
- テクスチャ圧縮では、エンコード プロセスがアプリケーション作成プロセス中に 1 回だけ実行されることが多いため、非対称のエンコード/デコード レートに対する耐性が高まります。
上記のことを踏まえると、ほとんどのテクスチャ圧縮アルゴリズムには、固定サイズの小さなピクセル ブロックを固定サイズの小さなコーディング ビット ブロックに変換する、何らかの固定レートの非可逆ベクトル 量子化が含まれ、場合によっては追加の前処理および後処理の手順が伴います。ブロック トランケーション コーディングは、このアルゴリズム ファミリの非常に単純な例です。
データ アクセス パターンが明確に定義されているため、テクスチャの解凍は、全体的なグラフィックス パイプラインの一部としてレンダリング中にオンザフライで実行され、グラフィックス システム全体の帯域幅とストレージのニーズが軽減されます。テクスチャ マップだけでなく、テクスチャ圧縮は、バンプ マップやサーフェス法線マップなどの他の種類のレンダリング マップをエンコードするためにも使用できます。テクスチャ圧縮は、 MIP マップや異方性フィルタリングなどの他の形式のマップ処理と組み合わせて使用することもできます。
可用性
実用的なテクスチャ圧縮システムの例としては、S3 テクスチャ圧縮(S3TC)、PVRTC、Ericsson テクスチャ圧縮(ETC)、Adaptive Scalable Texture Compression (ASTC) などがあります。これらは、最新のグラフィックス処理ユニットの特殊機能ユニットによってサポートされている場合があります。
多くのビデオ アクセラレータ カードやモバイル GPU に実装されている OpenGL と OpenGL ES は、通常はベンダー拡張機能を使用することで、複数の一般的な種類のテクスチャ圧縮をサポートできます。
超圧縮
圧縮テクスチャは、「スーパー圧縮」と呼ばれる方法でさらに圧縮できます。固定レートのテクスチャ圧縮形式はランダムアクセス用に最適化されており、PNGなどの画像形式に比べて効率がはるかに低くなります。プログラマーは、さらに圧縮を追加することで、効率のギャップを減らすことができます。追加のレイヤーは CPU によって解凍され、GPU は通常の圧縮テクスチャを受け取ります。[3]また、新しい方法では、GPU 自体によって解凍されます。スーパー圧縮では、通常のテクスチャ圧縮と同じ量の VRAM が節約されますが、ディスク領域とダウンロード サイズはより多く節約されます。[4]
ニューラルテクスチャ圧縮
マテリアルテクスチャのランダムアクセスニューラル圧縮(ニューラルテクスチャ圧縮)は、従来のテクスチャ圧縮方法と同様のストレージ要件を維持しながら、 2つの追加レベルの詳細(16倍のテクセル、つまり4倍の解像度)を可能にするNvidiaの技術です。[5]
鍵となるアイデアは、複数のマテリアルテクスチャとそのミップマップチェーンをまとめて圧縮し、各マテリアルに最適化された小さなニューラルネットワークを使用してそれらを解凍することです。[6]
参照
- ブロック切り捨て符号化(BTC)
- ベクトル量子化
- カラーセル圧縮
参考文献
- ^ Andrew Beers、Maneesh Agrawala、Navin Chaddha (1996)、「圧縮テクスチャからのレンダリング」、Computer Graphics、Proc. SIGGRAPH : 373–378
- ^ 「crunch オープンソーステクスチャ圧縮ライブラリ」。GitHub 。 2016年9月13日閲覧。
- ^ Strom, Jacob; Wennersten, Per (2011 年 8 月 5 日)。圧縮済みテクスチャのロスレス圧縮。HPG '11: ACM SIGGRAPH 高性能グラフィックスシンポジウムの議事録。pp. 177–182。doi :10.1145/2018323.2018351。
- ^ クライチェフスキー、パベル;プラタパ、スリハリ。ディネシュ州マノチャ(2016年11月11日)。 「GST: GPU デコード可能な超圧縮テクスチャ」。グラフィックス上の ACM トランザクション。35 (6): 1-10。土井:10.1145/2980179.2982439。
- ^ 「Nvidia、革新的なテクスチャ圧縮方法にニューラルネットワークを採用」。2023年5月6日。
- ^ 「マテリアルテクスチャのランダムアクセスニューラル圧縮 | 研究」。
外部リンク
- http://gamma.cs.unc.edu/GST/ GST: GPU デコード可能な超圧縮テクスチャ
