爱立信纹理压缩

爱立信纹理压缩(英语:Ericsson Texture Compression,缩写ETC)是一种有损纹理压缩技术,2005年初由爱立信研究院参与研发。它最初是以iPACKMAN[1]为名开发,基于早期的被称为PACKMAN的压缩方案。 [2]

ETC1

最早的ETC1压缩方案提供了24位RGB数据的6倍压缩率。但不支持压缩含有Alpha通道的图像,尽管有方法变相实现。 [3]

ETC1采用4x4像素数据的组,将每组压缩为单个64位字(word)。4×4像素组首先分为两个4×2块——无论水平或垂直。每一半都定下一个基色——使用4/4/4 RGB;或者给其中一个5/5/5 RGB,另一个则是基于该基色的3/3/3位的偏移。每个4×2区域还有一个3位的亮度范围选择。每个像素基于基色追加偏移。

该格式是适用于行动电话等嵌入式装置的OpenGL ES图形标准扩展[4]的一部分,并已被科纳斯组织批准供浏览器上的WebGL图形标准使用。

Android 2.2版(Froyo)起含有ETC1的支持。 [5]

[3]ETC2和EAC

ETC2方案以向后兼容的方式扩展ETC1,以提供更高质量的RGB压缩[6]以及RGBA(RGB加alpha)压缩,单通道 (R11) 和双通道(RG11)数据。

以下ETC2编解码器是OpenGL ES 3.0[7]和OpenGL 4.3中的必备元素:[8]

  • GL_COMPRESSED_RGB8_ETC2 — 压缩RGB888数据,ETC1后继者。
  • GL_COMPRESSED_RGBA8_ETC2_EAC — 压缩RGBA8888数据,完全支持alpha通道。
  • GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 — 压缩是完全透明或完全不透明的像素的RGBA数据。

EAC与ETC1/ETC2的原理相同,但用于单通道或双通道数据。以下四个EAC编解码器是OpenGL ES 3.0和OpenGL 4.3的必备元素:

  • GL_COMPRESSED_R11_EAC — 单通道无符号数据
  • GL_COMPRESSED_SIGNED_R11_EAC — 单通道签名数据
  • GL_COMPRESSED_RG11_EAC — 双通道无符号数据
  • GL_COMPRESSED_SIGNED_RG11_EAC — 双通道签名数据

RGBA和RG11格式将每个4x4块以128位元编码,其余是以每个块64位元来编码。对RGBA来说,RGB通道在常规的64位元块中编码,而Alpha通道得到专用的64位元块。RG11格式的编码方式类似,每个组件有一个64位块。

名为etcpack的用于压缩和解压缩ETC1/ETC2纹理的实用程序可在GitHub上的Ericsson处以代码形式免费下载。[9]

平滑方案

平滑方案(Smooth Profile)仅用于纸张[10]。类似ETC2平面模式,但使用更多函数来提供平滑的纹理。

参见

参考资料

  1. ^ iPACKMAN: High-Quality, Low-Complexity Textures Compression for Mobile Phones页面存档备份,存于互联网档案馆) -- Jacob Ström (Ericsson Research), Tomas Akeinine-Möller (Lund University)
  2. ^ PACKMAN: Texture Compression for Mobile Phones页面存档备份,存于互联网档案馆) -- Jacob Ström (Ericsson Research), Tomas Akeinine-Möller (Lund University).
  3. ^ 3.0 3.1 Sample code for handling alpha channels in ETC1 from ARM. [2011-11-03]. (原始内容存档于2011-10-27). 
  4. ^ OES_compressed_ETC1_RGB8_texture页面存档备份,存于互联网档案馆), A description of the ETC1- compression algorithm and texture format in OpenGL ES extension registry
  5. ^ Release notes for Android 2.2 互联网档案馆存档,存档日期2010-10-11., (Froyo)
  6. ^ Paper about ETC2: Texture Compression using Invalid Combinations (PDF). [2021-09-27]. (原始内容存档 (PDF)于2021-08-31). 
  7. ^ OpenGL ES Version 3.0 Specification (PDF). [2021-09-27]. (原始内容存档 (PDF)于2016-03-06). 
  8. ^ OpenGL Version 4.3 Specification (PDF). [2021-09-27]. (原始内容存档 (PDF)于2016-06-24). 
  9. ^ Ericsson ETCPACK on Github. [2021-09-27]. (原始内容存档于2021-09-27). 
  10. ^ Texture Compression of Light Maps using Smooth Profile Functions页面存档备份,存于互联网档案馆) -- Jim Rasmusson, Jacob Ström, Per Wennersten (Ericsson Research), Michael Doggett, Tomas Akenine-Möller (Lund University)

 

外部链接