愛立信紋理壓縮

愛立信紋理壓縮(英語: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]

[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)

 

外部連結

編輯