Compositing: co to je, vrstvy a princip fungování

Autor: IT Sectr Publikováno: 2026-06-12 Doba čtení: 10 min

Compositing — je proces spojování několika vizuálních vrstev do jednoho výsledného obrazu. Podle Apple Core Animation Documentation, 2025 se v mobilním vývoji compositing používá k vrstvení UI, kombinování 3D renderování s rozhraním a vytváření animací. Compositing řídí pořadí kreslení, průhlednost a míchání barev mezi vrstvami.

Hlavní body

  • Compositing — spojování jednotlivých vizuálních vrstev do výsledného obrazu.
  • Alpha blending — hlavní algoritmus míchání zohledňující průhlednost vrstev.
  • GPU compositing — provádí se na GPU prostřednictvím blending operací bloků ROP.
  • Core Animation (iOS) a HWUI (Android) — systémy kompozice v mobilních OS.
  • Optimalizace compositingu je kritická pro plynulost UI a animací při 60 FPS.

Co je compositing?

Compositing — je poslední fáze grafické pipeline, ve které se všechny samostatně vyrenderované vrstvy (3D scény, UI prvky, video, systémové rozhraní) spojují do jednoho obrazu pro zobrazení na obrazovce. Každá vrstva může mít svou barvu, průhlednost (alpha), pozici a pořadí vrstvení.

V kontextu mobilního vývoje je compositing důležitý pro uživatelské rozhraní: okna, tlačítka, text, ikony — všechny tyto prvky se kompozitují do jedné scény. Systém compositingu řídí pořadí kreslení (z-order), správné vrstvení poloprůhledných prvků a animaci přechodu mezi stavy UI.

Compositing v grafické pipeline

V grafické pipeline probíhá compositing po dokončení všech shader průchodů a rasterizace. GPU vezme hotové vrstvy z framebufferů, aplikuje blending operace a zapíše výsledek do hlavního snímkového bufferu (front buffer) pro odeslání na displej.

Jak funguje compositing?

Compositing používá míchání pixel po pixelu (blending) barev z různých vrstev. Každý pixel výstupního obrazu se vypočítává na základě barev pixelů z vrstvených vrstev s ohledem na průhlednost (alfa kanál) a zvolený režim míchání.

Alfa kanál a průhlednost

Každá vrstva obsahuje alfa kanál (čtvrtou složku barvy RGBA), který určuje její neprůhlednost. Alpha = 1.0 — zcela neprůhledná, alpha = 0.0 — zcela průhledná. Alpha blending vypočítá barvu pixelu jako vážený součet barev přední (source) a zadní (destination) vrstvy: result = source * alpha + dest * (1 - alpha).

Pořadí kreslení (Malířův algoritmus)

Compositing se provádí v pořadí od nejvzdálenější vrstvy k nejbližší (back-to-front). Nejprve se vykreslí vrstva pozadí, poté se každá další vrstva vrství na předchozí s ohledem na svou průhlednost. Z-order určuje, která vrstva je nahoře a bude zakrývat vrstvy pod ní.

Algoritmy compositingu

Compositing podporuje různé režimy míchání (blend modes), které určují, jak se barvy vrstev kombinují. Každý režim dává jiný vizuální efekt a má své výpočetní náklady.

RežimVzorecPoužití
Normal (Alpha)src * a + dst * (1 - a)Standardní vrstvení s průhledností
Additivesrc + dstEfekty záře, částice
Multiplysrc * dstZtmavení, stíny
Screen1 - (1 - src) * (1 - dst)Světlení, odlesky
Premultiplied Alpha(src.rgb * a) + dst * (1 - a)Efektivní (bez násobení za běhu)

Premultiplied Alpha

V režimu premultiplied alpha jsou barevné kanály uloženy již vynásobené alfa kanálem (RGB × A). To eliminuje potřebu násobení při každé blending operaci, zrychluje compositing. Premultiplied alpha — standardní formát pro GPU-compositing v iOS Core Animation a Android HWUI.

Compositing v mobilních OS

Každý mobilní operační systém má svůj vlastní systém compositingu, optimalizovaný pro svou hardwarovou platformu. Compositing v mobilních OS je zodpovědný za vykreslování celého uživatelského rozhraní.

iOS: Core Animation + Metal

V iOS compositing řídí Core Animation — vysokoúrovňový systém pracující nad Metal nebo OpenGL ES. Core Animation vytváří layer tree (strom vrstev), který je následně kompozitován do výsledného obrazu. Core Animation automaticky detekuje, které vrstvy se změnily, a překresluje pouze je (incremental compositing), čímž minimalizuje zatížení GPU.

Android: SurfaceFlinger + HWUI

V Android compositing provádí SurfaceFlinger — systémová služba, která spojuje povrchy (surfaces) z různých aplikací a systémového rozhraní. SurfaceFlinger používá HWC (Hardware Composer) k přenesení části práce compositingu na vyhrazený hardware řadiče displeje.

Výkon compositingu

Výkon compositingu — časté úzké hrdlo v mobilních aplikacích, zejména u složitých animací a vrstvení mnoha poloprůhledných vrstev. Každá další vrstva vyžaduje čtení, míchání a zápis pixelů do paměti.

Faktory ovlivňující výkon

  • Počet vrstev — každá vrstva vyžaduje samostatný blending průchod. Snížení počtu vrstev lineárně zrychluje compositing.
  • Rozlišení vrstev — vrstvy s vysokým rozlišením zvyšují počet zpracovávaných pixelů. Používejte minimální možnou velikost offscreen bufferů.
  • Průhlednost a overdraw — poloprůhledné vrstvy vyžadují čtení pixelů pod nimi, což zvyšuje šířku pásma.
  • CPU compositing — pokud compositing probíhá na CPU (software rendering), výkon dramaticky klesá. GPU-compositing je vždy preferovaný.

GPU Compositing vs CPU Compositing

Moderní mobilní zařízení provádějí compositing na GPU prostřednictvím specializovaných blending bloků. GPU-compositing používá paralelní ROP bloky a texturové filtry pro rychlé míchání pixelů. CPU-compositing se používá jen ve vzácných případech (stará zařízení, testování).

Optimalizace compositingu

Optimalizace compositingu — jeden z klíčových úkolů při vývoji mobilních rozhraní. Plynulost UI (60 FPS) přímo závisí na efektivitě spojování vrstev.

Hlavní metody optimalizace

  • Minimalizace vrstev — spojení statických vrstev do jedné (layer flattening) prostřednictvím předběžného vykreslení.
  • Opaque layers — neprůhledné vrstvy nevyžadují alpha blending, což výrazně zrychluje compositing.
  • Incremental compositing — překreslování pouze změněných vrstev, ne celé scény (používáno Core Animation).
  • Hardware Composer — použití HWC pro hardwarový compositing bez GPU.

Nástroje profilování

Pro analýzu výkonu compositingu použijte: Core Animation Profiler (Xcode Instruments) — zobrazuje počet vrstev a frekvenci compositingu; GPU Debugger (Android Studio) — zobrazuje zatížení GPU a overdraw; Overdraw Visualisation — nástroj pro ladění ukazující oblasti vícenásobného překreslování pixelů.

Často kladené otázky

Co je compositing jednoduše řečeno?

Compositing je jako lepení několika průhledných fólií s kresbami do jednoho obrázku. Každá fólie je vrstva (tlačítko, pozadí, text) a průhlednost určuje, jak vrstvy prosvítají jedna přes druhou.

Jaký je rozdíl mezi renderováním a compositingem?

Renderování — vytváření obsahu každé vrstvy (kreslení tlačítka, texturování 3D modelu). Compositing — spojování hotových vrstev do výsledného obrazu s ohledem na průhlednost a pořadí vrstvení.

Jak compositing ovlivňuje výkon iOS?

Core Animation kompozituje vrstvy na GPU přes Metal. Problémy začínají při velkém počtu poloprůhledných vrstev (overdraw) nebo při CPU-compositingu (off-screen rendering). Pro diagnostiku použijte Core Animation Profiler.

Co je Hardware Composer v Android?

Hardware Composer (HWC) — hardwarový modul řadiče displeje provádějící compositing bez zatížení GPU. HWC dokáže hardwarově spojit až 4-8 vrstev, což snižuje spotřebu energie a uvolňuje GPU pro jiné úkoly.

Jak snížit zátěž compositingu?

Spojujte statické vrstvy (layer flattening), používejte neprůhledné barvy kde je to možné, zmenšujte velikost offscreen bufferů a vyhýbejte se zbytečným animacím způsobujícím opětovný compositing celé scény.

Shrnutí

  • Compositing — konečná fáze spojování všech vizuálních vrstev do výsledného obrazu obrazovky.
  • Alpha blending — hlavní algoritmus míchání barev zohledňující průhlednost (RGBA).
  • Premultiplied alpha — standardní formát GPU-compositingu eliminující zbytečná násobení.
  • Core Animation (iOS) a SurfaceFlinger (Android) — systémy compositingu mobilních OS.
  • Počet poloprůhledných vrstev — hlavní faktor ovlivňující výkon compositingu.
  • Hardware Composer — hardwarový blok Android pro compositing bez GPU.
  • Optimalizace zahrnuje layer flattening, použití neprůhledných vrstev a inkrementální compositing.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také