Compositing: ce este, straturi și principiul de funcționare

Autor: IT Sectr Publicat: 2026-06-12 Timp de citire: 10 min

Compositing — este procesul de combinare a mai multor straturi vizuale într-o singură imagine finală. Conform Apple Core Animation Documentation, 2025, în dezvoltarea mobilă compozitarea este utilizată pentru suprapunerea straturilor UI, combinarea randării 3D cu interfața și crearea animațiilor. Compositing gestionează ordinea de desenare, transparența și amestecarea culorilor între straturi.

Principalele puncte

  • Compositing — combinarea straturilor vizuale individuale într-o imagine finală.
  • Alpha blending — algoritmul principal de amestecare care ține cont de transparența straturilor.
  • GPU compositing — executat pe GPU prin operații de blending în blocurile ROP.
  • Core Animation (iOS) și HWUI (Android) — sisteme de compozitare în sistemele de operare mobile.
  • Optimizarea compozitării este critică pentru fluiditatea UI și animațiilor la 60 FPS.

Ce este compositing?

Compositing — este etapa finală a pipeline-ului grafic, în care toate straturile randate separat (scene 3D, elemente UI, video, interfața sistemului) sunt combinate într-o singură imagine pentru afișare pe ecran. Fiecare strat poate avea propria culoare, transparență (alpha), poziție și ordine de suprapunere.

În contextul dezvoltării mobile, compozitarea este importantă pentru interfața utilizatorului: ferestre, butoane, text, pictograme — toate aceste elemente sunt compozitate într-o singură scenă. Sistemul de compozitare gestionează ordinea de desenare (z-order), suprapunerea corectă a elementelor semi-transparente și animația de tranziție între stările UI.

Compositing în pipeline-ul grafic

În pipeline-ul grafic, compozitarea are loc după finalizarea tuturor pasajelor de shader și rasterizare. GPU preia straturile gata din framebuffer-e, aplică operații de blending și scrie rezultatul în buffer-ul principal de cadru (front buffer) pentru trimiterea la display.

Cum funcționează compositing?

Compositing utilizează amestecarea pixel-cu-pixel (blending) a culorilor din diferite straturi. Fiecare pixel al imaginii de ieșire este calculat pe baza culorilor pixelilor din straturile suprapuse, ținând cont de transparență (canalul alpha) și modul de amestecare selectat.

Canalul alpha și transparența

Fiecare strat conține un canal alpha (a patra componentă a culorii RGBA) care determină opacitatea sa. Alpha = 1.0 — complet opac, alpha = 0.0 — complet transparent. Alpha blending calculează culoarea pixelului ca o sumă ponderată a culorilor stratului frontal (source) și posterior (destination): result = source * alpha + dest * (1 - alpha).

Ordinea de desenare (Algoritmul Pictorului)

Compozitarea se execută în ordinea de la stratul cel mai îndepărtat la cel mai apropiat (back-to-front). Mai întâi se randază stratul de fundal, apoi fiecare strat următor se suprapune peste cel anterior ținând cont de transparența sa. Z-order determină care strat este deasupra și va acoperi straturile subiacente.

Algoritmi de compositing

Compositing suportă diferite moduri de amestecare (blend modes) care determină cum se combină culorile straturilor. Fiecare mod oferă un efect vizual diferit și are propriile costuri de calcul.

ModFormulăAplicație
Normal (Alpha)src * a + dst * (1 - a)Suprapunere standard cu transparență
Additivesrc + dstEfecte de strălucire, particule
Multiplysrc * dstÎntunecare, umbre
Screen1 - (1 - src) * (1 - dst)Iluminare, reflexii
Premultiplied Alpha(src.rgb * a) + dst * (1 - a)Eficient (fără înmulțire din mers)

Premultiplied Alpha

În modul premultiplied alpha, canalele de culoare sunt stocate deja înmulțite cu canalul alpha (RGB × A). Aceasta elimină necesitatea înmulțirii la fiecare operație de blending, accelerând compozitarea. Premultiplied alpha — format standard pentru GPU-compositing în iOS Core Animation și Android HWUI.

Compositing în sistemele de operare mobile

Fiecare sistem de operare mobil are propriul sistem de compozitare, optimizat pentru platforma sa hardware. Compositing în sistemele de operare mobile este responsabil pentru randarea întregii interfețe de utilizator.

iOS: Core Animation + Metal

În iOS, compozitarea este gestionată de Core Animation — un sistem de nivel înalt care funcționează pe Metal sau OpenGL ES. Core Animation creează un layer tree (arbore de straturi) care apoi este compozitat într-o imagine finală. Core Animation detectează automat care straturi s-au modificat și le rerandază doar pe acestea (compozitare incrementală), minimizând încărcarea GPU-ului.

Android: SurfaceFlinger + HWUI

În Android, compozitarea este executată de SurfaceFlinger — un serviciu de sistem care combină suprafețele (surfaces) de la diferite aplicații și interfața sistemului. SurfaceFlinger utilizează HWC (Hardware Composer) pentru a transfera o parte din munca de compozitare pe hardware-ul dedicat al controlerului de display.

Performanța compositing-ului

Performanța compositing-ului — un blocaj frecvent în aplicațiile mobile, în special la animații complexe și suprapunerea mai multor straturi semi-transparente. Fiecare strat suplimentar necesită citirea, amestecarea și scrierea pixelilor în memorie.

Factori care influențează performanța

  • Numărul de straturi — fiecare strat necesită o trecere separată de blending. Reducerea numărului de straturi accelerează compozitarea liniar.
  • Rezoluția straturilor — straturile cu rezoluție înaltă cresc numărul de pixeli procesați. Folosiți dimensiunea minimă posibilă a buffer-elor offscreen.
  • Transparența și overdraw — straturile semi-transparente necesită citirea pixelilor subiacenți, ceea ce crește lățimea de bandă.
  • CPU compositing — dacă compozitarea este executată pe CPU (software rendering), performanța scade drastic. GPU-compositing este întotdeauna preferat.

GPU Compositing vs CPU Compositing

Dispozitivele mobile moderne execută compozitarea pe GPU prin blocuri specializate de blending. GPU-compositing utilizează blocuri ROP paralele și filtre de textură pentru amestecarea rapidă a pixelilor. CPU-compositing este utilizat doar în cazuri rare (dispozitive vechi, testare).

Optimizarea compositing-ului

Optimizarea compositing-ului — una dintre sarcinile cheie în dezvoltarea interfețelor mobile. Fluiditatea UI (60 FPS) depinde direct de eficiența combinării straturilor.

Metode principale de optimizare

  • Minimizarea straturilor — combinarea straturilor statice într-unul singur (layer flattening) prin randare prealabilă.
  • Opaque layers — straturile opace nu necesită alpha blending, ceea ce accelerează semnificativ compozitarea.
  • Incremental compositing — rerandarea doar a straturilor modificate, nu a întregii scene (utilizat de Core Animation).
  • Hardware Composer — utilizarea HWC pentru compozitare hardware fără implicarea GPU-ului.

Instrumente de profilare

Pentru analiza performanței compozitării utilizați: Core Animation Profiler (Xcode Instruments) — arată numărul de straturi și frecvența compozitării; GPU Debugger (Android Studio) — afișează încărcarea GPU-ului și overdraw; Overdraw Visualisation — instrument de debug care arată zonele de rerandare multiplă a pixelilor.

Întrebări frecvente

Ce este compositing în cuvinte simple?

Compositing este ca lipirea mai multor folii transparente cu desene într-o singură imagine. Fiecare folie este un strat (buton, fundal, text), iar transparența determină cum straturile se văd unul prin celălalt.

Care este diferența dintre randare și compozitare?

Randarea — crearea conținutului fiecărui strat (desenarea butonului, texturarea modelului 3D). Compozitarea — combinarea straturilor gata într-o imagine finală ținând cont de transparență și ordinea de suprapunere.

Cum afectează compozitarea performanța iOS?

Core Animation compozitează straturile pe GPU prin Metal. Problemele încep la un număr mare de straturi semi-transparente (overdraw) sau la CPU-compositing (off-screen rendering). Utilizați Core Animation Profiler pentru diagnosticare.

Ce este Hardware Composer în Android?

Hardware Composer (HWC) — modul hardware al controlerului de display care execută compozitarea fără a încărca GPU-ul. HWC poate combina până la 4-8 straturi hardware, reducând consumul de energie și eliberând GPU-ul pentru alte sarcini.

Cum să reducem încărcarea compozitării?

Combinați straturile statice (layer flattening), utilizați culori opace acolo unde este posibil, reduceți dimensiunea buffer-elor offscreen și evitați animațiile inutile care cauzează recompozitarea întregii scene.

Rezumat

  • Compositing — etapa finală de combinare a tuturor straturilor vizuale în imaginea finală a ecranului.
  • Alpha blending — algoritmul principal de amestecare a culorilor ținând cont de transparență (RGBA).
  • Premultiplied alpha — format standard pentru GPU-compositing care elimină înmulțirile inutile.
  • Core Animation (iOS) și SurfaceFlinger (Android) — sisteme de compozitare ale sistemelor de operare mobile.
  • Numărul de straturi semi-transparente — factorul principal care influențează performanța compozitării.
  • Hardware Composer — bloc hardware Android pentru compozitare fără GPU.
  • Optimizarea include layer flattening, utilizarea straturilor opace și compozitarea incrementală.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și