愛立信紋理壓縮
愛立信紋理壓縮(英語: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圖形標準使用。
[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的快速資產準備工作