爱立信纹理压缩
爱立信纹理压缩(英语: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平面模式,但使用更多函数来提供平滑的纹理。
参见
- S3纹理压缩(S3TC)
- 自适应可伸缩纹理压缩(ASTC)
参考资料
- ^ iPACKMAN: High-Quality, Low-Complexity Textures Compression for Mobile Phones (页面存档备份,存于互联网档案馆) -- Jacob Ström (Ericsson Research), Tomas Akeinine-Möller (Lund University)
- ^ PACKMAN: Texture Compression for Mobile Phones (页面存档备份,存于互联网档案馆) -- Jacob Ström (Ericsson Research), Tomas Akeinine-Möller (Lund University).
- ^ 3.0 3.1 Sample code for handling alpha channels in ETC1 from ARM. [2011-11-03]. (原始内容存档于2011-10-27).
- ^ OES_compressed_ETC1_RGB8_texture (页面存档备份,存于互联网档案馆), A description of the ETC1- compression algorithm and texture format in OpenGL ES extension registry
- ^ Release notes for Android 2.2 互联网档案馆的存档,存档日期2010-10-11., (Froyo)
- ^ Paper about ETC2: Texture Compression using Invalid Combinations (PDF). [2021-09-27]. (原始内容存档 (PDF)于2021-08-31).
- ^ OpenGL ES Version 3.0 Specification (PDF). [2021-09-27]. (原始内容存档 (PDF)于2016-03-06).
- ^ OpenGL Version 4.3 Specification (PDF). [2021-09-27]. (原始内容存档 (PDF)于2016-06-24).
- ^ Ericsson ETCPACK on Github. [2021-09-27]. (原始内容存档于2021-09-27).
- ^ 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)
外部链接
- Github上的爱立信ETCPACK (页面存档备份,存于互联网档案馆)
- ARM的ETC1和ETC2纹理压缩工具 (页面存档备份,存于互联网档案馆)
- ARM处理ETC1中alpha通道的示例代码
- Khronos纹理文件格式(使用ETC1压缩) (页面存档备份,存于互联网档案馆)
- rg_etc1 (页面存档备份,存于互联网档案馆) ,单个C++源文件中的快速、高质量、ZLIB许可的ETC1块打包器/解包器]]
- etcpak (页面存档备份,存于互联网档案馆) ,一种极快的爱立信纹理压缩实用程序,用于 Bartosz Taudul的快速资产准备工作