Compositing — bir nechta vizual qatlamlarni bitta yakuniy tasvirga birlashtirish jarayoni. Apple Core Animation Documentation, 2025 ma'lumotlariga ko'ra, mobil ishlanmada kompoziting UI qatlamlarini qo'shish, 3D renderingni interfeys bilan birlashtirish va animatsiyalar yaratish uchun ishlatiladi. Compositing chizish tartibini, shaffoflikni va qatlamlar orasidagi ranglarni aralashtirishni boshqaradi.
Asosiy ma'lumotlar
Compositing — grafik konveyerining yakuniy bosqichi bo'lib, unda alohida render qilingan barcha qatlamlar (3D sahnalar, UI elementlari, video, tizim interfeysi) ekranga chiqarish uchun bitta tasvirga birlashtiriladi. Har bir qatlam o'ziga xos rang, shaffoflik (alpha), joylashuv va qoplash tartibiga ega bo'lishi mumkin.
Mobil ishlanma kontekstida kompoziting foydalanuvchi interfeysi uchun muhim: oynalar, tugmalar, matn, piktogrammalar — bu elementlarning barchasi bitta sahnada kompozit qilinadi. Kompoziting tizimi chizish tartibini (z-order), yarim shaffof elementlarning to'g'ri qoplanishini va UI holatlari orasidagi o'tish animatsiyasini boshqaradi.
Grafik konveyerida kompoziting barcha shader o'tishlari va rastrlashtirish tugagandan so'ng sodir bo'ladi. GPU tayyor qatlamlarni framebufferlardan oladi, blending operatsiyalarini qo'llaydi va natijani displeyga yuborish uchun asosiy kadr buferiga (front buffer) yozadi.
Compositing turli qatlamlardan ranglarni pikselma-piksel aralashtirishdan (blending) foydalanadi. Chiqish tasvirining har bir pikseli qoplangan qatlamlardagi piksellarning ranglari asosida shaffoflik (alfa kanali) va tanlangan aralashtirish rejimi hisobga olingan holda hisoblanadi.
Har bir qatlam uning shaffof emasligini belgilaydigan alfa kanalini (RGBA rangining to'rtinchi komponenti) o'z ichiga oladi. Alpha = 1.0 — to'liq shaffof emas, alpha = 0.0 — to'liq shaffof. Alpha blending piksel rangini oldingi (source) va orqa (destination) qatlam ranglarining vaznli yig'indisi sifatida hisoblaydi: result = source * alpha + dest * (1 - alpha).
Kompoziting eng uzoq qatlamdan eng yaqingacha (back-to-front) tartibda bajariladi. Avval fon qatlami render qilinadi, so'ngra har bir keyingi qatlam uning shaffofligini hisobga olgan holda oldingisining ustiga qo'yiladi. Z-order qaysi qatlam yuqorida ekanligini va pastdagi qatlamlarni yopishini aniqlaydi.
Compositing qatlam ranglari qanday birlashtirilishini belgilaydigan turli xil aralashtirish rejimlarini (blend modes) qo'llab-quvvatlaydi. Har bir rejim turli vizual effekt beradi va o'zining hisoblash xarajatlariga ega.
| Rejim | Formula | Qo'llanilishi |
|---|---|---|
| Normal (Alpha) | src * a + dst * (1 - a) | Shaffoflik bilan standart qoplash |
| Additive | src + dst | Yorug'lik effektlari, zarralar |
| Multiply | src * dst | Qoraytirish, soyalar |
| Screen | 1 - (1 - src) * (1 - dst) | Yoritish, porlashlar |
| Premultiplied Alpha | (src.rgb * a) + dst * (1 - a) | Samarali (jo'ya ko'paytirishsiz) |
Premultiplied alpha rejimida rang kanallari allaqachon alfa kanaliga ko'paytirilgan holda saqlanadi (RGB × A). Bu har bir blending operatsiyasida ko'paytirish zaruratini yo'q qiladi, kompozitingni tezlashtiradi. Premultiplied alpha — iOS Core Animation va Android HWUIDa GPU-kompoziting uchun standart format.
Har bir mobil operatsion tizim o'zining apparat platformasi uchun optimallashtirilgan kompoziting tizimiga ega. Compositing mobil OTlarda butun foydalanuvchi interfeysini render qilish uchun javobgardir.
iOSda kompozitingni Core Animation boshqaradi — Metal yoki OpenGL ES ustida ishlaydigan yuqori darajali tizim. Core Animation layer tree (qatlam daraxti) yaratadi, so'ngra bu yakuniy tasvirda kompozit qilinadi. Core Animation qaysi qatlamlar o'zgarganini avtomatik aniqlaydi va faqat ularni qayta chizadi (incremental compositing), bu esa GPU yukini minimallashtiradi.
Androidda kompoziting SurfaceFlinger tomonidan amalga oshiriladi — turli ilovalar va tizim interfeysidan sirtlarni (surfaces) birlashtiruvchi tizim xizmati. SurfaceFlinger kompoziting ishining bir qismini displey kontrollerining maxsus apparatiga o'tkazish uchun HWC (Hardware Composer) dan foydalanadi.
Kompoziting unumdorligi — mobil ilovalarda tez-tez uchraydigan tor joy, ayniqsa murakkab animatsiyalar va ko'plab yarim shaffof qatlamlarni qoplashda. Har bir qo'shimcha qatlam xotirada piksellarni o'qish, aralashtirish va yozishni talab qiladi.
Zamonaviy mobil qurilmalar kompozitingni ixtisoslashgan blending bloklari orqali GPUda bajaradi. GPU-kompoziting piksellarni tez aralashtirish uchun parallel ROP bloklari va tekstura filtrlardan foydalanadi. CPU-kompoziting faqat kam hollarda (eski qurilmalar, sinov) qo'llaniladi.
Kompozitingni optimallashtirish — mobil interfeyslarni ishlab chiqishdagi asosiy vazifalardan biri. UI silliqligi (60 FPS) bevosita qatlamlarni birlashtirish samaradorligiga bog'liq.
Kompoziting unumdorligini tahlil qilish uchun foydalaning: Core Animation Profiler (Xcode Instruments) — qatlamlar soni va kompoziting chastotasini ko'rsatadi; GPU Debugger (Android Studio) — GPU yuklanishi va overdraw-ni ko'rsatadi; Overdraw Visualisation — piksellarning ko'p marta qayta chizilgan joylarini ko'rsatadigan disk raskadrovka vositasi.
Tez-tez beriladigan savollar
Kompoziting — bir nechta shaffof plyonkalarni rasmlar bilan bitta rasmga yopishtirishga o'xshaydi. Har bir plyonka bir qatlam (tugma, fon, matn), shaffoflik esa qatlamlarning bir-biridan qanday ko'rinishini belgilaydi.
Rendering — har bir qatlam mazmunini yaratish (tugmani chizish, 3D modeling teksturalanishi). Kompoziting — tayyor qatlamlarni shaffoflik va qoplash tartibini hisobga olgan holda yakuniy tasvirda birlashtirish.
Core Animation qatlamlarni Metal orqali GPUda kompozit qiladi. Muammolar ko'p sonli yarim shaffof qatlamlar (overdraw) yoki CPU-kompoziting (off-screen rendering) bilan boshlanadi. Diagnostika uchun Core Animation Profilerdan foydalaning.
Hardware Composer (HWC) — GPU-ni yuklamasdan kompozitingni amalga oshiradigan displey kontrollerining apparat moduli. HWC 4-8 qatlamgacha apparat orqali birlashtira oladi, bu energiya sarfini kamaytiradi va GPU-ni boshqa vazifalar uchun bo'shatadi.
Statik qatlamlarni birlashtiring (layer flattening), imkon qadar shaffof bo'lmagan ranglardan foydalaning, offscreen buferlari hajmini kamaytiring va butun sahnani qayta kompozit qilishga sabab bo'ladigan keraksiz animatsiyalardan saqlaning.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.