Compositing — то је процес обједињавања више визуелних слојева у једну коначну слику. Према Apple Core Animation Documentation, 2025, у мобилном развоју композитинг се користи за наношење UI слојева, обједињавање 3D рендера са интерфејсом и креирање анимација. Compositing управља редоследом цртања, провидношћу и мешањем боја између слојева.
Главно
Compositing — то је финална фаза графичког конвејера, на којој се сви одвојено рендеровани слојеви (3D сцене, UI елементи, видео, системски интерфејс) обједињују у једну слику за приказ на екрану. Сваки слој може имати своју боју, провидност (alpha), позицију и редослед наношења.
У контексту мобилног развоја, композитинг је важан за кориснички интерфејс: прозори, дугмад, текст, иконе — сви ови елементи се композитирају у јединствену сцену. Систем композитинга управља редоследом цртања (z-order), коректним наношењем полупровидних елемената и анимацијом прелаза између UI стања.
У графичком конвејеру, композитинг се дешава након завршетка свих шейдерских пролаза и растеризације. GPU узима готове слојеве из framebuffer-а, примењује blending операције и уписује резултат у главни кадровски бафер (front buffer) за слање на дисплеј.
Compositing користи мешање пиксел по пиксел (blending) боја из различитих слојева. Сваки пиксел излазне слике се израчунава на основу боја пиксела из нанесених слојева узимајући у обзир провидност (alpha канал) и изабрани режим мешања.
Сваки слој садржи alpha канал (четврту компоненту RGBA боје) који одређује његову непровидност. Alpha = 1.0 — потпуно непровидан, alpha = 0.0 — потпуно провидан. Alpha blending израчунава боју пиксела као пондерисани збир боја предњег (source) и задњег (destination) слоја: result = source * alpha + dest * (1 - alpha).
Композитинг се извршава по редоследу од најудаљенијег слоја до најближег (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 операцији, убрзавајући композитинг. Premultiplied alpha — стандардни формат за GPU композитинг у iOS Core Animation и Android HWUI.
Сваки мобилни оперативни систем има сопствени систем композитинга, оптимизован за своју хардверску платформу. Compositing у мобилним ОС је одговоран за рендеровање целог корисничког интерфејса.
У iOS-у, композитингом управља Core Animation — високо-нивоски систем који ради на Metal-у или OpenGL ES-у. Core Animation креира layer tree (стабло слојева) које се затим композитира у финалну слику. Core Animation аутоматски одређује који слојеви су се променили и прецртава само њих (incremental compositing), што минимизира оптерећење GPU-а.
У Android-у, композитинг извршава SurfaceFlinger — системски сервис који обједињује површине (surfaces) из различитих апликација и системског интерфејса. SurfaceFlinger користи HWC (Hardware Composer) за пренос дела посла композитинга на наменски хардвер контролера дисплеја.
Перформансе композитинга — често уско грло у мобилним апликацијама, посебно код сложених анимација и наношења више полупровидних слојева. Сваки додатни слој захтева читање, мешање и упис пиксела у меморију.
Савремени мобилни уређаји извршавају композитинг на GPU-у кроз специјализоване blending блокове. GPU композитинг користи паралелне ROP блокове и текстурне филтере за брзо мешање пиксела. CPU композитинг се користи само у ретким случајевима (стари уређаји, тестирање).
Оптимизација композитинга — један од кључних задатака при развоју мобилних интерфејса. Глаткоћа UI-ја (60 FPS) директно зависи од ефикасности обједињавања слојева.
За анализу перформанси композитинга користите: Core Animation Profiler (Xcode Instruments) — приказује број слојева и учесталост композитинга; GPU Debugger (Android Studio) — приказује GPU оптерећење и overdraw; Overdraw Visualisation — алат за отклањање грешака који приказује области вишеструког прецртавања пиксела.
Често постављана питања
Compositing — то је као лепљење неколико провидних фолија са цртежима у једну слику. Свака фолија је слој (дугме, позадина, текст), а провидност одређује како слојеви провирују један кроз други.
Рендеровање — креирање садржаја сваког слоја (цртање дугмета, текстурисање 3D модела). Композитинг — обједињавање готових слојева у финалну слику узимајући у обзир провидност и редослед наношења.
Core Animation композитира слојеве на GPU-у преко Metal-а. Проблеми почињу при великом броју полупровидних слојева (overdraw) или при CPU композитингу (off-screen rendering). Користите Core Animation Profiler за дијагностику.
Hardware Composer (HWC) — хардверски модул контролера дисплеја који обавља композитинг без оптерећења GPU-а. HWC може да обједини до 4-8 слојева хардверски, што смањује потрошњу енергије и ослобађа GPU за друге задатке.
Обједињујте статичке слојеве (layer flattening), користите непрозирне боје где је могуће, смањите величину offscreen бафера и избегавајте непотребне анимације које изазивају поновни композитинг целе сцене.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође