Compositing (কম্পোজিটিং) হল একাধিক ভিজুয়াল লেয়ারকে (layers) একটি চূড়ান্ত চিত্রে একত্রিত করার প্রক্রিয়া। Apple Core Animation ডকুমেন্টেশন, 2025 অনুসারে, মোবাইল ডেভেলপমেন্টে compositing UI লেয়ার ওভারলে করা, 3D রেন্ডারকে ইন্টারফেসের সাথে একত্রিত করা এবং অ্যানিমেশন তৈরি করার জন্য ব্যবহৃত হয়। Compositing ড্রয়িং অর্ডার, স্বচ্ছতা এবং লেয়ারের মধ্যে রং মিশ্রণ নিয়ন্ত্রণ করে।
মূল বিষয়
Compositing হল গ্রাফিক্স পাইপলাইনের চূড়ান্ত ধাপ যেখানে সমস্ত পৃথকভাবে রেন্ডার করা লেয়ার (3D দৃশ্য, UI উপাদান, ভিডিও, সিস্টেম ইন্টারফেস) স্ক্রিনে প্রদর্শনের জন্য একটি চিত্রে একত্রিত হয়। প্রতিটি লেয়ারের নিজস্ব রং, স্বচ্ছতা (alpha), অবস্থান এবং স্ট্যাকিং অর্ডার থাকতে পারে।
মোবাইল ডেভেলপমেন্টের প্রেক্ষাপটে, compositing ব্যবহারকারী ইন্টারফেসের জন্য গুরুত্বপূর্ণ: উইন্ডো, বাটন, টেক্সট, আইকন — এই সমস্ত উপাদান একটি একক দৃশ্যে কম্পোজিট হয়। Compositing সিস্টেম ড্রয়িং অর্ডার (z-order), আধা-স্বচ্ছ উপাদানের সঠিক ওভারল্যাপিং এবং UI অবস্থার মধ্যে ট্রানজিশন অ্যানিমেশন পরিচালনা করে।
গ্রাফিক্স পাইপলাইনে, সমস্ত শেডার পাস এবং র্যাস্টারাইজেশন সম্পন্ন হওয়ার পর compositing ঘটে। GPU ফ্রেমবাফার থেকে তৈরি লেয়ার নেয়, blending অপারেশন প্রয়োগ করে এবং ডিসপ্লেতে পাঠানোর জন্য প্রধান ফ্রেমবাফারে (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) দ্বারা পূর্বেই গুণ করে সংরক্ষণ করা হয়। এটি প্রতিটি blending অপারেশনে গুণনের প্রয়োজনীয়তা দূর করে, compositing দ্রুততর করে। Premultiplied alpha iOS Core Animation এবং Android HWUI-তে GPU compositing-এর জন্য মানক বিন্যাস।
প্রতিটি মোবাইল অপারেটিং সিস্টেমের নিজস্ব compositing সিস্টেম আছে যা তার হার্ডওয়্যার প্ল্যাটফর্মের জন্য অপ্টিমাইজড। মোবাইল অপারেটিং সিস্টেমে Compositing সম্পূর্ণ ব্যবহারকারী ইন্টারফেস রেন্ডার করার জন্য দায়িত্বশীল।
iOS-এ, compositing Core Animation দ্বারা পরিচালিত হয় — একটি উচ্চ-স্তরের সিস্টেম যা Metal বা OpenGL ES-এর উপরে কাজ করে। Core Animation একটি layer tree (লেয়ার গাছ) তৈরি করে যা পরে চূড়ান্ত চিত্রে কম্পোজিট হয়। Core Animation স্বয়ংক্রিয়ভাবে নির্ধারণ করে কোন লেয়ার পরিবর্তিত হয়েছে এবং শুধু সেগুলি পুনরায় রেন্ডার করে (incremental compositing), যা GPU-র লোড কমায়।
Android-এ, compositing SurfaceFlinger দ্বারা সম্পাদিত হয় — একটি সিস্টেম সার্ভিস যা বিভিন্ন অ্যাপ্লিকেশন এবং সিস্টেম UI থেকে সারফেস (surfaces) একত্রিত করে। SurfaceFlinger HWC (Hardware Composer) ব্যবহার করে compositing-এর কিছু কাজ ডিসপ্লে কন্ট্রোলারের ডেডিকেটেড হার্ডওয়্যারে স্থানান্তর করতে।
Compositing কর্মক্ষমতা মোবাইল অ্যাপ্লিকেশনে একটি সাধারণ প্রতিবন্ধক, বিশেষ করে জটিল অ্যানিমেশন এবং একাধিক আধা-স্বচ্ছ লেয়ার ওভারলেতে। প্রতিটি অতিরিক্ত লেয়ারের জন্য মেমোরিতে পিক্সেল পড়া, মিশ্রণ এবং লেখার প্রয়োজন হয়।
আধুনিক মোবাইল ডিভাইস বিশেষায়িত blending ইউনিটের মাধ্যমে GPU-তে compositing করে। GPU compositing দ্রুত পিক্সেল মিশ্রণের জন্য সমান্তরাল ROP ইউনিট এবং টেক্সচার ফিল্টার ব্যবহার করে। CPU compositing শুধুমাত্র বিরল ক্ষেত্রে (পুরনো ডিভাইস, পরীক্ষা) ব্যবহৃত হয়।
Compositing অপ্টিমাইজেশন মোবাইল ইন্টারফেস উন্নয়নের মূল কাজগুলির মধ্যে একটি। UI-র মসৃণতা (60 FPS) সরাসরি লেয়ার একত্রীকরণের দক্ষতার উপর নির্ভর করে।
Compositing কর্মক্ষমতা বিশ্লেষণের জন্য ব্যবহার করুন: Core Animation Profiler (Xcode Instruments) — লেয়ারের সংখ্যা এবং compositing ফ্রিকোয়েন্সি দেখায়; GPU Debugger (Android Studio) — GPU লোড এবং overdraw প্রদর্শন করে; Overdraw Visualization — একটি ডিবাগিং টুল যা পুনরাবৃত্ত পিক্সেল পুনঃরেন্ডারিংয়ের এলাকা দেখায়।
সচরাচর জিজ্ঞাসিত প্রশ্ন
Compositing হল 여러টি স্বচ্ছ পাতকে এক ছবিতে আটকানোর মতো। প্রতিটি পাত একটি লেয়ার (বাটন, পটভূমি, টেক্সট), এবং স্বচ্ছতা নির্ধারণ করে কিভাবে লেয়ারগুলি একে অপরের মাধ্যমে দৃশ্যমান হয়।
রেন্ডারিং — প্রতিটি লেয়ারের বিষয়বস্তু তৈরি করা (বাটন আঁকা, 3D মডেল টেক্সচার করা)। Compositing — স্বচ্ছতা এবং স্ট্যাকিং অর্ডার বিবেচনা করে তৈরি লেয়ারকে চূড়ান্ত চিত্রে একত্রিত করা।
Core Animation Metal-এর মাধ্যমে GPU-তে লেয়ার কম্পোজিট করে। বড় সংখ্যক আধা-স্বচ্ছ লেয়ার (overdraw) অথবা CPU compositing (অফ-স্ক্রিন রেন্ডারিং) এর সাথে সমস্যা শুরু হয়। রোগ নির্ণয়ের জন্য Core Animation Profiler ব্যবহার করুন।
Hardware Composer (HWC) হল ডিসপ্লে কন্ট্রোলারের একটি হার্ডওয়্যার মডিউল যা GPU লোড না করেই compositing করে। HWC হার্ডওয়্যারে 4-8টি লেয়ার পর্যন্ত একত্রিত করতে পারে, যা শক্তি খরচ কমায় এবং GPU-কে অন্যান্য কাজের জন্য মুক্ত করে।
স্থির লেয়ার একত্রিত করুন (layer flattening), যেখানে সম্ভব অস্বচ্ছ রং ব্যবহার করুন, অফস্ক্রিন বাফারের আকার কমিয়ে দিন এবং অপ্রয়োজনীয় অ্যানিমেশন এড়িয়ে চলুন যা পুরো দৃশ্যের পুনঃকম্পোজিশন ঘটায়।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন