Compositing: co to jest, warstwy i zasada działania

Autor: IT Sectr Opublikowano: 2026-06-12 Czas czytania: 10 min

Compositing — to proces łączenia wielu wizualnych warstw w jeden końcowy obraz. Według Apple Core Animation Documentation, 2025, w tworzeniu aplikacji mobilnych compositing jest używany do nakładania warstw UI, łączenia renderowania 3D z interfejsem i tworzenia animacji. Compositing zarządza kolejnością rysowania, przezroczystością i mieszaniem kolorów między warstwami.

Najważniejsze

  • Compositing — łączenie poszczególnych wizualnych warstw w końcowy obraz.
  • Alpha blending — podstawowy algorytm mieszania uwzględniający przezroczystość warstw.
  • GPU compositing — wykonywany na GPU poprzez operacje blendingu w blokach ROP.
  • Core Animation (iOS) i HWUI (Android) — systemy kompozytowania w mobilnych systemach operacyjnych.
  • Optymalizacja compositingu jest krytyczna dla płynności UI i animacji przy 60 FPS.

Co to jest compositing?

Compositing — to końcowy etap potoku graficznego, na którym wszystkie oddzielnie wyrenderowane warstwy (sceny 3D, elementy UI, wideo, interfejs systemowy) są łączone w jeden obraz do wyświetlenia na ekranie. Każda warstwa może mieć swój kolor, przezroczystość (alpha), pozycję i kolejność nakładania.

W kontekście tworzenia aplikacji mobilnych compositing jest ważny dla interfejsu użytkownika: okna, przyciski, tekst, ikony — wszystkie te elementy są kompozytowane w jedną scenę. System compositingu zarządza kolejnością rysowania (z-order), prawidłowym nakładaniem półprzezroczystych elementów i animacją przejść między stanami UI.

Compositing w potoku graficznym

W potoku graficznym compositing odbywa się po zakończeniu wszystkich przejść shaderów i rasteryzacji. GPU pobiera gotowe warstwy z framebufferów, stosuje operacje blendingu i zapisuje wynik do głównego bufora ramki (front buffer) w celu wysłania na wyświetlacz.

Jak działa compositing?

Compositing wykorzystuje mieszanie piksel po pikselu (blending) kolorów z różnych warstw. Każdy piksel obrazu wyjściowego jest obliczany na podstawie kolorów pikseli z nakładanych warstw z uwzględnieniem przezroczystości (kanał alpha) i wybranego trybu mieszania.

Kanał alpha i przezroczystość

Każda warstwa zawiera kanał alpha (czwarty składnik koloru RGBA), określający jej nieprzezroczystość. Alpha = 1,0 — całkowicie nieprzezroczysty, alpha = 0,0 — całkowicie przezroczysty. Alpha blending oblicza kolor piksela jako ważoną sumę kolorów warstwy przedniej (source) i tylnej (destination): result = source * alpha + dest * (1 - alpha).

Kolejność rysowania (algorytm malarza)

Compositing jest wykonywany w kolejności od warstwy najdalszej do najbliższej (back-to-front). Najpierw renderowana jest warstwa tła, a następnie każda kolejna warstwa nakładana jest na poprzednią z uwzględnieniem jej przezroczystości. Z-order określa, która warstwa znajduje się wyżej i będzie zakrywać warstwy poniżej.

Algorytmy compositingu

Compositing obsługuje różne tryby mieszania (blend modes), które określają, jak kolory warstw są łączone. Każdy tryb daje inny efekt wizualny i ma swoje koszty obliczeniowe.

TrybFormułaZastosowanie
Normal (Alpha)src * a + dst * (1 - a)Standardowe nakładanie z przezroczystością
Additivesrc + dstEfekty poświaty, cząsteczki
Multiplysrc * dstPrzyciemnianie, cienie
Screen1 - (1 - src) * (1 - dst)Rozjaśnianie, refleksy
Premultiplied Alpha(src.rgb * a) + dst * (1 - a)Wydajny (bez mnożenia w locie)

Premultiplied Alpha

W trybie premultiplied alpha kanały kolorów są przechowywane już pomnożone przez kanał alpha (RGB × A). Eliminuje to konieczność mnożenia przy każdej operacji blendingu, przyspieszając compositing. Premultiplied alpha — standardowy format dla GPU-compositingu w iOS Core Animation i Android HWUI.

Compositing w mobilnych systemach operacyjnych

Każdy mobilny system operacyjny ma własny system compositingu, zoptymalizowany dla swojej platformy sprzętowej. Compositing w mobilnych systemach operacyjnych odpowiada za renderowanie całego interfejsu użytkownika.

iOS: Core Animation + Metal

W iOS compositingiem zarządza Core Animation — wysokopoziomowy system działający na Metal lub OpenGL ES. Core Animation tworzy layer tree (drzewo warstw), które następnie jest kompozytowane w końcowy obraz. Core Animation automatycznie określa, które warstwy uległy zmianie, i przerysowuje tylko je (incremental compositing), co minimalizuje obciążenie GPU.

Android: SurfaceFlinger + HWUI

W Android compositing jest wykonywany przez SurfaceFlinger — usługę systemową, która łączy powierzchnie (surfaces) z różnych aplikacji i interfejsu systemowego. SurfaceFlinger wykorzystuje HWC (Hardware Composer) do przeniesienia części pracy związanej z compositingiem na dedykowany sprzęt kontrolera wyświetlacza.

Wydajność compositingu

Wydajność compositingu — częste wąskie gardło w aplikacjach mobilnych, szczególnie przy złożonych animacjach i nakładaniu wielu półprzezroczystych warstw. Każda dodatkowa warstwa wymaga odczytu, mieszania i zapisu pikseli w pamięci.

Czynniki wpływające na wydajność

  • Liczba warstw — każda warstwa wymaga osobnego przejścia blendingu. Zmniejszenie liczby warstw przyspiesza compositing liniowo.
  • Rozdzielczość warstw — warstwy o wysokiej rozdzielczości zwiększają liczbę przetwarzanych pikseli. Używaj minimalnego możliwego rozmiaru buforów offscreen.
  • Przezroczystość i overdraw — półprzezroczyste warstwy wymagają odczytu pikseli leżących poniżej, co zwiększa przepustowość.
  • CPU compositing — jeśli compositing jest wykonywany na CPU (software rendering), wydajność gwałtownie spada. GPU-compositing jest zawsze preferowany.

GPU Compositing vs CPU Compositing

Nowoczesne urządzenia mobilne wykonują compositing na GPU poprzez wyspecjalizowane bloki blendingu. GPU-compositing wykorzystuje równoległe bloki ROP i filtry tekstur do szybkiego mieszania pikseli. CPU-compositing jest używany tylko w rzadkich przypadkach (stare urządzenia, testowanie).

Optymalizacja compositingu

Optymalizacja compositingu — jedno z kluczowych zadań przy tworzeniu interfejsów mobilnych. Płynność UI (60 FPS) bezpośrednio zależy od efektywności łączenia warstw.

Podstawowe metody optymalizacji

  • Minimalizacja warstw — łączenie statycznych warstw w jedną (layer flattening) poprzez wstępne renderowanie.
  • Opaque layers — nieprzezroczyste warstwy nie wymagają alpha blendingu, co znacznie przyspiesza compositing.
  • Incremental compositing — przerysowywanie tylko zmienionych warstw, a nie całej sceny (stosowane przez Core Animation).
  • Hardware Composer — wykorzystanie HWC do sprzętowego compositingu bez udziału GPU.

Narzędzia profilowania

Do analizy wydajności compositingu używaj: Core Animation Profiler (Xcode Instruments) — pokazuje liczbę warstw i częstotliwość compositingu; GPU Debugger (Android Studio) — wyświetla obciążenie GPU i overdraw; Overdraw Visualisation — narzędzie debugowania pokazujące obszary wielokrotnego przerysowywania pikseli.

Często zadawane pytania

Co to jest compositing prostymi słowami?

Compositing to jak sklejanie kilku przezroczystych folii z rysunkami w jeden obrazek. Każda folia to warstwa (przycisk, tło, tekst), a przezroczystość określa, jak warstwy prześwitują przez siebie nawzajem.

Jaka jest różnica między renderowaniem a compositingiem?

Renderowanie — tworzenie zawartości każdej warstwy (rysowanie przycisku, teksturowanie modelu 3D). Compositing — łączenie gotowych warstw w końcowy obraz z uwzględnieniem przezroczystości i kolejności nakładania.

Jak compositing wpływa na wydajność iOS?

Core Animation kompozytuje warstwy na GPU przez Metal. Problemy zaczynają się przy dużej liczbie półprzezroczystych warstw (overdraw) lub przy CPU-compositingu (off-screen rendering). Używaj Core Animation Profiler do diagnostyki.

Czym jest Hardware Composer w Android?

Hardware Composer (HWC) — sprzętowy moduł kontrolera wyświetlacza wykonujący compositing bez obciążania GPU. HWC może łączyć do 4-8 warstw sprzętowo, co zmniejsza zużycie energii i uwalnia GPU do innych zadań.

Jak zmniejszyć obciążenie compositingu?

Łącz statyczne warstwy (layer flattening), używaj nieprzezroczystych kolorów gdzie to możliwe, zmniejszaj rozmiar buforów offscreen i unikaj zbędnych animacji powodujących ponowny compositing całej sceny.

Podsumowanie

  • Compositing — końcowy etap łączenia wszystkich wizualnych warstw w końcowy obraz ekranu.
  • Alpha blending — podstawowy algorytm mieszania kolorów z uwzględnieniem przezroczystości (RGBA).
  • Premultiplied alpha — standardowy format GPU-compositingu eliminujący zbędne mnożenia.
  • Core Animation (iOS) i SurfaceFlinger (Android) — systemy compositingu mobilnych systemów operacyjnych.
  • Liczba półprzezroczystych warstw — główny czynnik wpływający na wydajność compositingu.
  • Hardware Composer — sprzętowy blok Android do compositingu bez GPU.
  • Optymalizacja obejmuje layer flattening, używanie nieprzezroczystych warstw i inkrementalny compositing.

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również