Compositing — is het proces van het combineren van meerdere visuele lagen tot één uiteindelijk beeld. Volgens Apple Core Animation Documentation, 2025, wordt compositing in mobiele ontwikkeling gebruikt voor het over elkaar heen leggen van UI-lagen, het combineren van 3D-rendering met de interface en het creëren van animaties. Compositing beheert de tekenvolgorde, transparantie en het mengen van kleuren tussen lagen.
Belangrijkste punten
Compositing — is de laatste fase van de grafische pijplijn, waarin alle afzonderlijk gerenderde lagen (3D-scènes, UI-elementen, video, systeeminterface) worden samengevoegd tot één beeld voor weergave op het scherm. Elke laag kan zijn eigen kleur, transparantie (alpha), positie en overvloeivolgorde hebben.
In de context van mobiele ontwikkeling is compositing belangrijk voor de gebruikersinterface: vensters, knoppen, tekst, pictogrammen — al deze elementen worden gecomposite tot één scène. Het compositiesysteem beheert de tekenvolgorde (z-order), correcte overvloeiing van semi-transparante elementen en de overgangsanimaties tussen UI-toestanden.
In de grafische pijplijn vindt compositing plaats na voltooiing van alle shader-passages en rasterisatie. De GPU haalt de gereed zijnde lagen uit framebuffers, past blending-bewerkingen toe en schrijft het resultaat naar de hoofdframebuffer (front buffer) voor verzending naar het beeldscherm.
Compositing maakt gebruik van pixel-voor-pixel-menging (blending) van kleuren uit verschillende lagen. Elke pixel van de uitvoerafbeelding wordt berekend op basis van de kleuren van pixels uit de over elkaar gelegde lagen, rekening houdend met transparantie (alfa-kanaal) en de geselecteerde mengmodus.
Elke laag bevat een alfa-kanaal (de vierde component van de RGBA-kleur) dat de dekking bepaalt. Alpha = 1.0 — volledig dekkend, alpha = 0.0 — volledig transparant. Alpha blending berekent de pixelkleur als een gewogen som van de kleuren van de voorste (source) en achterste (destination) laag: result = source * alpha + dest * (1 - alpha).
Compositing wordt uitgevoerd van de verste laag naar de dichtstbijzijnde (back-to-front). Eerst wordt de achtergrondlaag gerenderd, daarna wordt elke volgende laag over de vorige heen gelegd, rekening houdend met zijn transparantie. Z-order bepaalt welke laag boven ligt en de onderliggende lagen zal bedekken.
Compositing ondersteunt verschillende mengmodi (blend modes) die bepalen hoe kleuren van lagen worden gecombineerd. Elke modus geeft een ander visueel effect en heeft zijn eigen rekenkosten.
| Modus | Formule | Toepassing |
|---|---|---|
| Normal (Alpha) | src * a + dst * (1 - a) | Standaard overvloeiing met transparantie |
| Additive | src + dst | Glow-effecten, deeltjes |
| Multiply | src * dst | Donkerder maken, schaduwen |
| Screen | 1 - (1 - src) * (1 - dst) | Oplichten, reflecties |
| Premultiplied Alpha | (src.rgb * a) + dst * (1 - a) | Efficiënt (zonder ter plekke vermenigvuldigen) |
In de premultiplied alpha-modus worden kleurkanalen al vermenigvuldigd met het alfa-kanaal opgeslagen (RGB × A). Dit elimineert de noodzaak van vermenigvuldiging bij elke blending-bewerking, wat compositing versnelt. Premultiplied alpha — de standaardindeling voor GPU-compositing in iOS Core Animation en Android HWUI.
Elk mobiel besturingssysteem heeft zijn eigen compositiesysteem, geoptimaliseerd voor zijn hardwareplatform. Compositing in mobiele besturingssystemen is verantwoordelijk voor het renderen van de gehele gebruikersinterface.
In iOS wordt compositing beheerd door Core Animation — een hoogwaardig systeem dat werkt op Metal of OpenGL ES. Core Animation creëert een layer tree (lagenboom) die vervolgens wordt gecomposite tot het uiteindelijke beeld. Core Animation detecteert automatisch welke lagen zijn gewijzigd en hertekent alleen deze (incremental compositing), wat de belasting van de GPU minimaliseert.
In Android wordt compositing uitgevoerd door SurfaceFlinger — een systeemdienst die oppervlakken (surfaces) van verschillende applicaties en de systeeminterface combineert. SurfaceFlinger gebruikt HWC (Hardware Composer) om een deel van het compositiewerk over te dragen aan de speciale hardware van de beeldschermcontroller.
Prestaties van compositing — een veelvoorkomende bottleneck in mobiele applicaties, vooral bij complexe animaties en het over elkaar heen leggen van meerdere semi-transparante lagen. Elke extra laag vereist het lezen, mengen en schrijven van pixels in het geheugen.
Moderne mobiele apparaten voeren compositing uit op de GPU via gespecialiseerde blending-blokken. GPU-compositing gebruikt parallelle ROP-blokken en textuurfilters voor snelle pixelmenging. CPU-compositing wordt alleen in zeldzame gevallen gebruikt (oude apparaten, testen).
Optimalisatie van compositing — een van de belangrijkste taken bij het ontwikkelen van mobiele interfaces. De vloeiendheid van de UI (60 FPS) hangt direct af van de efficiëntie van het combineren van lagen.
Voor het analyseren van compositing-prestaties gebruik je: Core Animation Profiler (Xcode Instruments) — toont het aantal lagen en de compositing-frequentie; GPU Debugger (Android Studio) — geeft GPU-belasting en overdraw weer; Overdraw Visualisation — een debugtool die gebieden met meerdere pixelhertekeningen toont.
Veelgestelde vragen
Compositing is als het samenplakken van meerdere transparante folies met tekeningen tot één plaatje. Elke folie is een laag (knop, achtergrond, tekst) en transparantie bepaalt hoe lagen door elkaar heen zichtbaar zijn.
Renderen — het creëren van de inhoud van elke laag (tekenen van een knop, textureren van een 3D-model). Compositing — het samenvoegen van gereed zijnde lagen tot het uiteindelijke beeld, rekening houdend met transparantie en overvloeivolgorde.
Core Animation compositeert lagen op de GPU via Metal. Problemen beginnen bij een groot aantal semi-transparante lagen (overdraw) of bij CPU-compositing (off-screen rendering). Gebruik Core Animation Profiler voor diagnose.
Hardware Composer (HWC) — een hardwaremodule van de beeldschermcontroller die compositing uitvoert zonder de GPU te belasten. HWC kan tot 4-8 lagen hardwarematig combineren, wat het energieverbruik vermindert en de GPU vrijmaakt voor andere taken.
Voeg statische lagen samen (layer flattening), gebruik waar mogelijk niet-transparante kleuren, verklein offscreen-buffers en vermijd onnodige animaties die hercompositie van de hele scène veroorzaken.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook