回答:
このペーパーで紹介したPVRTC 2BPPエンコーディングは、画像を8x4テクセルブロックに分割し、32ブロックごとに2つのRGBカラーのみが格納されるように各ブロックを圧縮します。
32個のテクセルのいずれも独自の色を格納しません。各テクセルは、8x4テクセルブロックの2つのRGB色をブレンドする方法に関する情報のみを格納します。
ソース画像に虹が32色の8x4テクセルブロックが含まれている場合、PVRTC 2BPPでは各8x4テクセルブロックに2つのRGBカラーしかブレンドできないため、PVRTC 2BPP圧縮は品質を維持するのに非常に不十分です。
テクスチャ圧縮はピクセルを圧縮しません。ピクセルのブロックを圧縮します。個々のピクセルが参照されると、GPUはそのピクセルを表すブロックを計算します。次に、ブロック全体を処理して、そのピクセルの色を取得します。
例
RGBテクスチャでブロックサイズが4x4ピクセルであると仮定します。非圧縮の場合、各ブロック4x4x3 = 48
はテクスチャメモリのバイトを消費します。
これで、圧縮アルゴリズムは各チャネル(RGB)の平均を計算し、それをブロック(3バイト)とともに保存します。次に、各ピクセルに2ビットを指定して、ピクセルが元の色に近づくように平均を調整します。それは別の4x4x2x3/8 = 12
バイトです。
この新しく開発されたコンプレッサーによって使用される合計バイトは、ブロックあたり15バイト、圧縮率は31.25%です。
私の神秘的なコンプレッサーは7.5 bppを使用します。これは2 bpp pvrtcが達成できるほど良くはありませんが、2 bbpがどのように達成されるかについておおまかに考えています。
アップデート:
私はちょうど見PVRTCのためのWikipediaのページ。pvrtcは従来のブロックベースの圧縮を使用していないようです。 ここでは、ブロックベースの圧縮の仕組みとpvrtcの違いについて説明した論文を紹介します。特に注意してください:ブロックベースのフィルターは4bpp(アルファなし)を使用してまともな画像を生成できますが、nvrtcは2bppを使用できます。
@Toji、論文が掲載されているサイトは少し気まぐれですが、今朝はうまくいきました。失敗した場合、ACM / SIGGRAPHへのアクセス権があれば、ここでホストされます。不思議なことに、それは IMG / PowerVR開発者のWebサイト(無料登録)にもありましたが、適切なセクションが見つからないようです。:-(
[更新]これはまだIMGサイトにあります [/更新]
@bmcnet:PVRTCは、テクスチャをETCやS3TCなどのブロックに分割しません。FWIW、私はブロックベースのテクスチャを試してみましたが、十分なデータを自己完結型ブロックにパックし、それでも希望どおりの結果を得る方法を見つけることができませんでした。代わりに、これは「グローバルな」テクスチャ圧縮システムに少し似ています。2つの低解像度画像があり、ターゲット解像度に双線形的に拡大され、これらをテクセルごとに一緒に混合します。