Compositing هو عملية دمج عدة طبقات بصرية (layers) في صورة نهائية واحدة. وفقاً لوثائق Apple Core Animation، 2025، في تطوير التطبيقات المحمولة يُستخدم compositing لتراكب طبقات واجهة المستخدم، ودمج العرض ثلاثي الأبعاد مع الواجهة، وإنشاء الرسوم المتحركة. Compositing يتحكم في ترتيب الرسم والشفافية ومزج الألوان بين الطبقات.
النقاط الرئيسية
Compositing هو المرحلة النهائية من خط أنابيب الرسوم where يتم فيها دمج جميع الطبقات المنفصلة (مشاهد ثلاثية الأبعاد، عناصر واجهة المستخدم، فيديو، واجهة النظام) في صورة واحدة لعرضها على الشاشة. يمكن أن يكون لكل طبقة لونها وشفافيتها (alpha) وموضعها وترتيب تكديسها الخاص.
في سياق تطوير التطبيقات المحمولة، compositing مهم لواجهة المستخدم: النوافذ، الأزرار، النص، الأيقونات — كل هذه العناصر يتم تركيبها في مشهد واحد. يدير نظام compositing ترتيب الرسم (z-order)، والتراكب الصحيح للعناصر شبه الشفافة، والرسوم المتحركة للانتقال بين حالات واجهة المستخدم.
في خط أنابيب الرسوم، يحدث compositing بعد اكتمال جميع تمريرات التظليل والتنقيط. تأخذ وحدة معالجة الرسوم الطبقات النهائية من أطر التخزين المؤقت (framebuffers)، وتطبق عمليات المزج، وتكتب النتيجة في الإطار المؤقت الرئيسي (front buffer) للإرسال إلى الشاشة.
Compositing يستخدم المزج على مستوى البكسل (blending) للألوان من طبقات مختلفة. يتم حساب كل بكسل من الصورة الناتجة بناءً على ألوان البكسلات من الطبقات المتراكبة مع مراعاة الشفافية (قناة alpha) ووضع المزج المحدد.
تحتوي كل طبقة على قناة alpha (المكون الرابع للون RGBA) التي تحدد درجة عتامتها. Alpha = 1.0 — معتم بالكامل، alpha = 0.0 — شفاف بالكامل. Alpha blending يحسب لون البكسل كمجموع مرجح لألوان الطبقة الأمامية (source) والخلفية (destination): النتيجة = source * alpha + dest * (1 - alpha).
يتم تنفيذ compositing من الطبقة الأبعد إلى الأقرب (back-to-front). أولاً يتم عرض الطبقة الخلفية، ثم يتم تراكب كل طبقة تالية فوق السابقة مع مراعاة شفافيتها. Z-order يحدد أي طبقة تكون في الأعلى وتغطي الطبقات السفلية.
Compositing يدعم أوضاع مزج مختلفة (blend modes) تحدد كيفية دمج ألوان الطبقات. كل وضع يعطي تأثيراً بصرياً مختلفاً وله تكاليفه الحسابية الخاصة.
| الوضع | الصيغة | التطبيق |
|---|---|---|
| Normal (Alpha) | src * a + dst * (1 - a) | التراكب القياسي مع الشفافية |
| Additive | src + dst | تأثيرات التوهج، الجسيمات |
| Multiply | src * dst | التظليل، الظلال |
| Screen | 1 - (1 - src) * (1 - dst) | الإضاءة، الإبرازات |
| Premultiplied Alpha | (src.rgb * a) + dst * (1 - a) | الأداء (بدون ضرب في وقت التشغيل) |
في وضع premultiplied alpha، يتم تخزين قنوات الألوان مضروبة بالفعل في قناة alpha (RGB × A). هذا يلغي الحاجة إلى الضرب في كل عملية مزج، مسرّعاً compositing. Premultiplied alpha هو التنسيق القياسي لـ compositing عبر وحدة معالجة الرسوم في iOS Core Animation و Android HWUI.
كل نظام تشغيل محمول لديه نظام compositing خاص به محسّن لمنصاته العتادية. Compositing في أنظمة التشغيل المحمولة مسؤول عن عرض واجهة المستخدم بأكملها.
في iOS، يتم إدارة compositing بواسطة Core Animation — نظام عالي المستوى يعمل فوق Metal أو OpenGL ES. ينشئ Core Animation شجرة طبقات (layer tree) يتم تركيبها بعد ذلك في الصورة النهائية. Core Animation يحدد تلقائياً أي الطبقات تغيرت ويعيد رسمها فقط (compositing تزايدي)، مما يقلل من حمل وحدة معالجة الرسوم.
في Android، يتم تنفيذ compositing بواسطة SurfaceFlinger — خدمة نظام تجمع الأسطح (surfaces) من التطبيقات المختلفة وواجهة مستخدم النظام. SurfaceFlinger يستخدم HWC (Hardware Composer) لتسليم جزء من عمل compositing إلى العتاد المخصص لوحدة التحكم في الشاشة.
أداء compositing هو عنق زجاجة شائع في تطبيقات المحمول، خاصة مع الرسوم المتحركة المعقدة وتراكب طبقات شبه شفافة متعددة. كل طبقة إضافية تتطلب قراءة ومزج وكتابة البكسلات في الذاكرة.
الأجهزة المحمولة الحديثة تقوم compositing على وحدة معالجة الرسوم عبر وحدات مزج متخصصة. GPU compositing يستخدم وحدات ROP المتوازية ومرشحات النسيج للمزج السريع للبكسلات. compositing عبر وحدة المعالجة المركزية يُستخدم فقط في حالات نادرة (الأجهزة القديمة، الاختبار).
تحسين compositing هو أحد المهام الرئيسية في تطوير واجهات المحمول. سلاسة واجهة المستخدم (60 إطاراً في الثانية) تعتمد مباشرة على كفاءة دمج الطبقات.
لتحليل أداء compositing، استخدم: Core Animation Profiler (Xcode Instruments) — يظهر عدد الطبقات وتكرار compositing؛ GPU Debugger (Android Studio) — يعرض حمل وحدة معالجة الرسوم و overdraw؛ Overdraw Visualization — أداة تصحيح تظهر مناطق إعادة الرسم المتكرر للبكسلات.
الأسئلة الشائعة
Compositing يشبه تكديس عدة أوراق شفافة عليها رسومات في صورة واحدة. كل ورقة هي طبقة (زر، خلفية، نص)، و الشفافية تحدد كيف تظهر الطبقات من خلال بعضها البعض.
العرض (Rendering) — إنشاء محتوى كل طبقة (رسم زر، تجسيد نسيج نموذج ثلاثي الأبعاد). Compositing — دمج الطبقات النهائية في الصورة النهائية مع مراعاة الشفافية وترتيب التكديس.
Core Animation يركب الطبقات على وحدة معالجة الرسوم عبر Metal. تبدأ المشاكل عند وجود عدد كبير من الطبقات شبه الشفافة (overdraw) أو مع CPU compositing (العرض خارج الشاشة). استخدم Core Animation Profiler للتشخيص.
Hardware Composer (HWC) هو وحدة عتادية لوحدة التحكم في الشاشة تقوم compositing بدون تحميل وحدة معالجة الرسوم. يمكن لـ HWC دمج ما يصل إلى 4-8 طبقات عتادياً، مما يقلل استهلاك الطاقة ويحرر وحدة معالجة الرسوم لمهام أخرى.
ادمج الطبقات الثابتة (layer flattening)، استخدم الألوان المعتمة حيثما أمكن، قلل حجم المخازن المؤقتة خارج الشاشة و تجنب الرسوم المتحركة غير الضرورية التي تسبب إعادة تركيب المشهد بأكمله.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا