ضغط نسيج إريكسون
تقنية ضغط نسيج إريكسون ( ETC ) هي تقنية ضغط نسيج مع فقدان البيانات تم تطويرها بالتعاون مع قسم الأبحاث في إريكسون في أوائل عام 2005. وقد تم تطويرها في الأصل تحت اسم iPACKMAN [ 1 ] واستندت إلى مخطط ضغط سابق يسمى PACKMAN . [ 2 ]
ETC1
توفر خوارزمية الضغط الأصلية "ETC1" ضغطًا بمقدار 6 أضعاف لبيانات RGB ذات 24 بت . وهي لا تدعم ضغط الصور التي تحتوي على مكونات ألفا، على الرغم من وجود حلول بديلة لهذه المشكلة. [ 3 ]
تأخذ خوارزمية ETC1 مجموعات بيانات بكسل بحجم 4×4 وتضغط كل مجموعة في كلمة واحدة بحجم 64 بت. تُقسّم مجموعة البكسل 4×4 أولًا إلى جزأين بحجم 4×2، إما أفقيًا أو رأسيًا. يُعطى كل نصف لونًا أساسيًا، إما باستخدام نظام ألوان RGB 4/4/4 أو بإعطاء أحدهما نظام ألوان RGB 5/5/5 والآخر بإزاحة 3/3/3 بت عن هذا اللون الأساسي. كما تحتوي كل منطقة 4×2 على نطاق سطوع قابل للتحديد بمقدار 3 بت. بعد ذلك، يُزاح كل بكسل عن اللون الأساسي بإضافة إحدى القيم الأربع الموقعة إلى اللون الأساسي لنصفه من مجموعة 4×4.
يُعد هذا التنسيق جزءًا من ملحقات معيار الرسومات OpenGL ES [ 4 ] للأجهزة المدمجة مثل الهواتف المحمولة ، وقد تمت الموافقة عليه من قبل مجموعة Khronos للاستخدام في معيار رسومات WebGL لرسومات الويب العالمية من جانب المتصفح.
يتضمن نظام أندرويد الإصدار 2.2 (فرويو) دعمًا لـ ETC1. [ 5 ] [ 3 ]
ETC2
يقوم مخطط "ETC2" بتوسيع ETC1 بطريقة متوافقة مع الإصدارات السابقة لتوفير ضغط RGB عالي الجودة، [ 6 ] بالإضافة إلى ضغط RGBA (RGB بالإضافة إلى ألفا).
تعتبر برامج الترميز ETC2 التالية إلزامية في OpenGL ES 3.0 [ 7 ] و OpenGL 4.3: [ 8 ]
GL_COMPRESSED_RGB8_ETC2— يضغط بيانات RGB888، وهو الإصدار اللاحق لـ ETC1.GL_COMPRESSED_RGBA8_ETC2_EAC— يضغط بيانات RGBA8888 مع دعم كامل لقناة ألفا.GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2— يضغط بيانات RGBA حيث تكون وحدات البكسل إما شفافة تمامًا أو معتمة تمامًا.
تتوفر أيضًا إصدارات sRGB من برامج الترميز المذكورة أعلاه.
لجنة المساعدة الاقتصادية
تعتمد تقنية 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 باستخدام 128 بت لكل كتلة 4x4، بينما تُشفّر باقي الصيغ باستخدام 64 بت لكل كتلة. في صيغة RGBA، تُشفّر قنوات RGB في كتلة 64 بت عادية، بينما تحصل قناة A على كتلة 64 بت خاصة بها. تُشفّر صيغ RG11 بطريقة مماثلة، حيث تُشفّر كتلة 64 بت لكل مكون.
برمجة
تتوفر أداة برمجية تسمى ETCPACK لضغط وفك ضغط نصوص ETC1/ETC2 للتنزيل مجانًا في شكل كود من Ericsson على GitHub . [ 9 ]
انظر أيضاً
- ضغط نسيج S3 (S3TC)
- ضغط النسيج التكيفي القابل للتوسع (ASTC)
مراجع
- ↑ iPACKMAN: ضغط نسيج عالي الجودة ومنخفض التعقيد للهواتف المحمولة -- جاكوب ستروم (أبحاث إكسون)، توماس أكينين-مولر (جامعة لوند)
- ↑ باكمان: ضغط الملمس للموبايل – جاكوب ستروم (أبحاث إريكسون)، توماس أكينين مولر (جامعة لوند).
- 1 2 "نموذج برمجي لمعالجة قنوات ألفا في ETC1 من ARM" . مؤرشف من الأصل بتاريخ 27-10-2011 . تم الاطلاع عليه بتاريخ 03-11-2011 .
- ↑ OES_compressed_ETC1_RGB8_texture ، وصف لخوارزمية ضغط ETC1 وتنسيق النسيج في سجل امتداد OpenGL ES
- ↑ ملاحظات الإصدار لنظام Android 2.2 مؤرشفة بتاريخ 11-10-2010 في Wayback Machine ، (Froyo)
- ↑ ورقة بحثية حول ETC2: ضغط النسيج باستخدام تركيبات غير صالحة
- ↑ "مواصفات OpenGL ES الإصدار 3.0" (ملف PDF) . مؤرشف من الأصل (ملف PDF) بتاريخ 2016-03-06 . تم الاطلاع عليه بتاريخ 2012-08-07 .
- ↑ مواصفات OpenGL الإصدار 4.3
- ↑ حزمة إريكسون ETCPACK على جيت هاب
روابط خارجية
- حزمة إريكسون ETCPACK على جيت هاب
- نموذج برمجي لمعالجة قنوات ألفا في ETC1 من ARM
- rg_etc1 ، برنامج سريع وعالي الجودة لضغط/فك ضغط كتل ETC1 مرخص بموجب ZLIB ، مكتوب في ملف مصدر C++ واحد
- etcpak ، أداة ضغط نسيج إريكسون فائقة السرعة لإعداد الأصول بسرعة، من تطوير بارتوش تاودول
- etc2comp ، برنامج سريع لضغط الصور من إريكسون.
- ضغط النسيج
