![]() |
爱立信纹理压缩(英語:Ericsson Texture Compression,缩写ETC)是一种有损纹理压缩技术,2005年初由愛立信研究院参与研发。它最初是以iPACKMAN[1]为名开发,基于早期的被称为PACKMAN的压缩方案。 [2]
最早的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]
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平面模式,但使用更多函数来提供平滑的纹理。