Compositing: ما هو، الطبقات ومبدأ العمل

المؤلف: IT Sectr نُشر: 2026-06-12 وقت القراءة: 10 دق

Compositing هو عملية دمج عدة طبقات بصرية (layers) في صورة نهائية واحدة. وفقاً لوثائق Apple Core Animation، 2025، في تطوير التطبيقات المحمولة يُستخدم compositing لتراكب طبقات واجهة المستخدم، ودمج العرض ثلاثي الأبعاد مع الواجهة، وإنشاء الرسوم المتحركة. Compositing يتحكم في ترتيب الرسم والشفافية ومزج الألوان بين الطبقات.

النقاط الرئيسية

  • Compositing — دمج الطبقات البصرية المنفصلة في صورة نهائية.
  • Alpha blending — الخوارزمية الأساسية للمزج التي تراعي شفافية الطبقات.
  • GPU compositing — يتم تنفيذه على وحدة معالجة الرسوم عبر عمليات المزج في وحدات ROP.
  • Core Animation (iOS) و HWUI (Android) — أنظمة compositing في أنظمة التشغيل المحمولة.
  • تحسين compositing أمر بالغ الأهمية لسلاسة واجهة المستخدم والرسوم المتحركة بمعدل 60 إطاراً في الثانية.

ما هو compositing؟

Compositing هو المرحلة النهائية من خط أنابيب الرسوم where يتم فيها دمج جميع الطبقات المنفصلة (مشاهد ثلاثية الأبعاد، عناصر واجهة المستخدم، فيديو، واجهة النظام) في صورة واحدة لعرضها على الشاشة. يمكن أن يكون لكل طبقة لونها وشفافيتها (alpha) وموضعها وترتيب تكديسها الخاص.

في سياق تطوير التطبيقات المحمولة، compositing مهم لواجهة المستخدم: النوافذ، الأزرار، النص، الأيقونات — كل هذه العناصر يتم تركيبها في مشهد واحد. يدير نظام compositing ترتيب الرسم (z-order)، والتراكب الصحيح للعناصر شبه الشفافة، والرسوم المتحركة للانتقال بين حالات واجهة المستخدم.

Compositing في خط أنابيب الرسوم

في خط أنابيب الرسوم، يحدث compositing بعد اكتمال جميع تمريرات التظليل والتنقيط. تأخذ وحدة معالجة الرسوم الطبقات النهائية من أطر التخزين المؤقت (framebuffers)، وتطبق عمليات المزج، وتكتب النتيجة في الإطار المؤقت الرئيسي (front buffer) للإرسال إلى الشاشة.

كيف يعمل compositing؟

Compositing يستخدم المزج على مستوى البكسل (blending) للألوان من طبقات مختلفة. يتم حساب كل بكسل من الصورة الناتجة بناءً على ألوان البكسلات من الطبقات المتراكبة مع مراعاة الشفافية (قناة alpha) ووضع المزج المحدد.

قناة 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

Compositing يدعم أوضاع مزج مختلفة (blend modes) تحدد كيفية دمج ألوان الطبقات. كل وضع يعطي تأثيراً بصرياً مختلفاً وله تكاليفه الحسابية الخاصة.

الوضعالصيغةالتطبيق
Normal (Alpha)src * a + dst * (1 - a)التراكب القياسي مع الشفافية
Additivesrc + dstتأثيرات التوهج، الجسيمات
Multiplysrc * dstالتظليل، الظلال
Screen1 - (1 - src) * (1 - dst)الإضاءة، الإبرازات
Premultiplied Alpha(src.rgb * a) + dst * (1 - a)الأداء (بدون ضرب في وقت التشغيل)

Premultiplied Alpha

في وضع premultiplied alpha، يتم تخزين قنوات الألوان مضروبة بالفعل في قناة alpha (RGB × A). هذا يلغي الحاجة إلى الضرب في كل عملية مزج، مسرّعاً compositing. Premultiplied alpha هو التنسيق القياسي لـ compositing عبر وحدة معالجة الرسوم في iOS Core Animation و Android HWUI.

Compositing في أنظمة التشغيل المحمولة

كل نظام تشغيل محمول لديه نظام compositing خاص به محسّن لمنصاته العتادية. Compositing في أنظمة التشغيل المحمولة مسؤول عن عرض واجهة المستخدم بأكملها.

iOS: Core Animation + Metal

في iOS، يتم إدارة compositing بواسطة Core Animation — نظام عالي المستوى يعمل فوق Metal أو OpenGL ES. ينشئ Core Animation شجرة طبقات (layer tree) يتم تركيبها بعد ذلك في الصورة النهائية. Core Animation يحدد تلقائياً أي الطبقات تغيرت ويعيد رسمها فقط (compositing تزايدي)، مما يقلل من حمل وحدة معالجة الرسوم.

Android: SurfaceFlinger + HWUI

في Android، يتم تنفيذ compositing بواسطة SurfaceFlinger — خدمة نظام تجمع الأسطح (surfaces) من التطبيقات المختلفة وواجهة مستخدم النظام. SurfaceFlinger يستخدم HWC (Hardware Composer) لتسليم جزء من عمل compositing إلى العتاد المخصص لوحدة التحكم في الشاشة.

أداء compositing

أداء compositing هو عنق زجاجة شائع في تطبيقات المحمول، خاصة مع الرسوم المتحركة المعقدة وتراكب طبقات شبه شفافة متعددة. كل طبقة إضافية تتطلب قراءة ومزج وكتابة البكسلات في الذاكرة.

العوامل المؤثرة على الأداء

  • عدد الطبقات — كل طبقة تتطلب تمريرة مزج منفصلة. تقليل عدد الطبقات يسرّع compositing خطياً.
  • دقة الطبقات — الطبقات عالية الدقة تزيد من عدد البكسلات المعالجة. استخدم أصغر حجم ممكن للمخازن المؤقتة خارج الشاشة.
  • الشفافية وإعادة الرسم (overdraw) — الطبقات شبه الشفافة تتطلب قراءة البكسلات الأساسية، مما يزيد من عرض النطاق الترددي.
  • CPU compositing — إذا تم compositing على وحدة المعالجة المركزية (software rendering)، ينخفض الأداء بشكل كبير. compositing عبر وحدة معالجة الرسوم هو الأفضل دائماً.

GPU Compositing مقابل CPU Compositing

الأجهزة المحمولة الحديثة تقوم compositing على وحدة معالجة الرسوم عبر وحدات مزج متخصصة. GPU compositing يستخدم وحدات ROP المتوازية ومرشحات النسيج للمزج السريع للبكسلات. compositing عبر وحدة المعالجة المركزية يُستخدم فقط في حالات نادرة (الأجهزة القديمة، الاختبار).

تحسين compositing

تحسين compositing هو أحد المهام الرئيسية في تطوير واجهات المحمول. سلاسة واجهة المستخدم (60 إطاراً في الثانية) تعتمد مباشرة على كفاءة دمج الطبقات.

طرق التحسين الرئيسية

  • تقليل الطبقات — دمج الطبقات الثابتة في طبقة واحدة (layer flattening) من خلال العرض المسبق.
  • الطبقات المعتمة — الطبقات المعتمة لا تتطلب alpha blending، مما يسرّع compositing بشكل كبير.
  • Compositing تزايدي — إعادة رسم الطبقات المتغيرة فقط وليس المشهد بأكمله (يستخدمه Core Animation).
  • Hardware Composer — استخدام HWC لـ compositing عبر العتاد بدون مشاركة وحدة معالجة الرسوم.

أدوات التنميط

لتحليل أداء compositing، استخدم: Core Animation Profiler (Xcode Instruments) — يظهر عدد الطبقات وتكرار compositing؛ GPU Debugger (Android Studio) — يعرض حمل وحدة معالجة الرسوم و overdraw؛ Overdraw Visualization — أداة تصحيح تظهر مناطق إعادة الرسم المتكرر للبكسلات.

الأسئلة الشائعة

ما هو compositing بعبارات بسيطة؟

Compositing يشبه تكديس عدة أوراق شفافة عليها رسومات في صورة واحدة. كل ورقة هي طبقة (زر، خلفية، نص)، و الشفافية تحدد كيف تظهر الطبقات من خلال بعضها البعض.

ما الفرق بين العرض (rendering) و compositing؟

العرض (Rendering) — إنشاء محتوى كل طبقة (رسم زر، تجسيد نسيج نموذج ثلاثي الأبعاد). Compositing — دمج الطبقات النهائية في الصورة النهائية مع مراعاة الشفافية وترتيب التكديس.

كيف يؤثر compositing على أداء iOS؟

Core Animation يركب الطبقات على وحدة معالجة الرسوم عبر Metal. تبدأ المشاكل عند وجود عدد كبير من الطبقات شبه الشفافة (overdraw) أو مع CPU compositing (العرض خارج الشاشة). استخدم Core Animation Profiler للتشخيص.

ما هو Hardware Composer في Android؟

Hardware Composer (HWC) هو وحدة عتادية لوحدة التحكم في الشاشة تقوم compositing بدون تحميل وحدة معالجة الرسوم. يمكن لـ HWC دمج ما يصل إلى 4-8 طبقات عتادياً، مما يقلل استهلاك الطاقة ويحرر وحدة معالجة الرسوم لمهام أخرى.

كيف تقليل حمل compositing؟

ادمج الطبقات الثابتة (layer flattening)، استخدم الألوان المعتمة حيثما أمكن، قلل حجم المخازن المؤقتة خارج الشاشة و تجنب الرسوم المتحركة غير الضرورية التي تسبب إعادة تركيب المشهد بأكمله.

الخلاصة

  • Compositing — المرحلة النهائية لدمج جميع الطبقات البصرية في الصورة النهائية للشاشة.
  • Alpha blending — الخوارزمية الأساسية لمزج الألوان مع مراعاة الشفافية (RGBA).
  • Premultiplied alpha — تنسيق compositing القياسي عبر وحدة معالجة الرسوم الذي يلغي الضربات غير الضرورية.
  • Core Animation (iOS) و SurfaceFlinger (Android) — أنظمة compositing لأنظمة التشغيل المحمولة.
  • عدد الطبقات شبه الشفافة — العامل الرئيسي المؤثر على أداء compositing.
  • Hardware Composer — كتلة عتادية في Android لـ compositing بدون وحدة معالجة الرسوم.
  • التحسين يشمل layer flattening، واستخدام الطبقات المعتمة، و compositing التزايدي.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا