Ericsson テクスチャ圧縮

Ericssonテクスチャ圧縮ETC)は、2005年初頭にEricsson Researchと共同で開発された非可逆テクスチャ圧縮技術です。当初はiPACKMAN [ 1 ]という名前で開発され、 PACKMANと呼ばれる以前の圧縮方式に基づいていました。[ 2 ]

ETC1

オリジナルの「ETC1」圧縮方式は、24ビットRGBデータの6倍の圧縮率を提供します。アルファ成分を含む画像の圧縮は移植されていませんが、回避策は存在します。[ 3 ]

ETC1は4×4のピクセルデータグループを受け取り、それぞれを1つの64ビットワードに圧縮します。4×4ピクセルグループはまず、水平方向または垂直方向に2つの4×2チャンクに分割されます。それぞれの半分にはベースカラーが割り当てられます。4/4/4 RGBを使用するか、片方に5/5/5 RGBを使用し、もう片方にそのベースカラーから3/3/3ビットのオフセットを設定します。各4×2領域には、3ビットの輝度範囲も設定できます。次に、各ピクセルは、4×4グループの対応する半分のベースカラーに4つの符号付き値のいずれかを加算することで、ベースカラーからオフセットされます。

このフォーマットは、携帯電話などの組み込みデバイス向けのOpenGL ESグラフィックス標準拡張[ 4 ]の一部であり、ブラウザ側のワールドワイドウェブグラフィックス用のWebGLグラフィックス標準で使用するためにクロノスグループによって承認されています。

Androidバージョン2.2(Froyo)にはETC1のサポートが含まれています。[ 5 ] [ 3 ]

ETC2

「ETC2」方式はETC1を下位互換性のある方法で拡張し、より高品質のRGB圧縮とRGBA(RGBプラスアルファ)の圧縮を提供します。 [ 6 ]

以下のETC2コーデックはOpenGL ES 3.0 [ 7 ]およびOpenGL 4.3で必須です。[ 8 ]

  • GL_COMPRESSED_RGB8_ETC2— ETC1の後継であるRGB888データを圧縮します。
  • GL_COMPRESSED_RGBA8_ETC2_EAC— 完全なアルファ サポートを備えた RGBA8888 データを圧縮します。
  • GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2— ピクセルが完全に透明または完全に不透明である RGBA データを圧縮します。

上記のコーデックの sRGBバリアントも利用可能です。

EAC

EACはETC1/ETC2と同じ原理に基づいていますが、1チャンネルまたは2チャンネルのデータに使用されます。以下の4つのEACコーデックは、OpenGL ES 3.0およびOpenGL 4.3に必須として含まれています。

  • GL_COMPRESSED_R11_EAC— 1チャネルの符号なしデータ
  • GL_COMPRESSED_SIGNED_R11_EAC— 1チャネルの署名付きデータ
  • GL_COMPRESSED_RG11_EAC— 2チャネルの符号なしデータ
  • GL_COMPRESSED_SIGNED_RG11_EAC— 2チャネルの署名付きデータ

エンコーディング

RGBAとRG11形式は4x4ブロックあたり128ビットでエンコードされ、その他の形式はブロックあたり64ビットでエンコードされます。RGBAの場合、RGBチャンネルは通常の64ビットブロックでエンコードされ、Aチャンネルは独自の64ビットブロックに割り当てられます。RG11形式も同様にエンコードされ、コンポーネントごとに1つの64ビットブロックが割り当てられます。

ソフトウェア

ETC1/ETC2テクスチャの圧縮と解凍を行うETCPACKというソフトウェアユーティリティは、GitHubのEricssonからコード形式で無料でダウンロードできます。[ 9 ]

参照

参考文献

  1. ^ iPACKMAN: 携帯電話向けの高品質、低複雑度のテクスチャ圧縮-- Jacob Ström (Ecsson Research)、Tomas Akeinine-Möller (Lund University)
  2. ^ PACKMAN: Mobies のテクスチャ圧縮-- Jacob Ström (Ericsson Research)、Tomas Akeinine-Möller (Lund University)。
  3. ^ a b「ARMのETC1でアルファチャンネルを処理するためのサンプルコード」 。 2011年10月27日時点のオリジナルよりアーカイブ2011年11月3日閲覧。
  4. ^ OES_compressed_ETC1_RGB8_texture、OpenGL ES拡張レジストリにおけるETC1圧縮アルゴリズムとテクスチャフォーマットの説明
  5. ^ Android 2.2 のリリースノート、Wayback Machineに 2010-10-11 でアーカイブ、(Froyo)
  6. ^ ETC2に関する論文:無効な組み合わせを用いたテクスチャ圧縮
  7. ^ 「OpenGL ES バージョン 3.0 仕様」(PDF) 。 2016年3月6日時点のオリジナル(PDF)からアーカイブ。 2012年8月7日閲覧
  8. ^ OpenGLバージョン4.3仕様
  9. ^ Github 上の Ericsson ETCPACK