Compositing: що це, шари та принцип роботи

Автор: IT Sectr Опубліковано: 2026-06-12 Час читання: 10 хв

Compositing (композитинг) — це процес об'єднання кількох візуальних шарів (layers) в одне підсумкове зображення. За даними документації Apple Core Animation, 2025, у мобільній розробці композитинг використовується для накладання UI-шарів, об'єднання 3D-рендера з інтерфейсом та створення анімацій. Compositing керує порядком відтворення, прозорістю та змішуванням кольорів між шарами.

Головне

  • Compositing — об'єднання окремих візуальних шарів у фінальне зображення.
  • Alpha blending — основний алгоритм змішування, що враховує прозорість шарів.
  • GPU compositing — виконується на GPU через blending-операції ROP-блоків.
  • Core Animation (iOS) та HWUI (Android) — системи композитингу в мобільних ОС.
  • Оптимізація композитингу критична для плавності UI та анімацій у 60 FPS.

Що таке композитинг?

Compositing — це фінальний етап графічного конвеєра, на якому всі окремо відрендерені шари (3D-сцени, UI-елементи, відео, системний інтерфейс) об'єднуються в одне зображення для виведення на екран. Кожен шар може мати свій колір, прозорість (alpha), позицію та порядок накладання.

У контексті мобільної розробки композитинг важливий для користувацького інтерфейсу: вікна, кнопки, текст, іконки — всі ці елементи композитуються в єдину сцену. Система композитингу керує порядком відтворення (z-order), коректним накладанням напівпрозорих елементів та анімацією переходу між станами UI.

Композитинг у графічному конвеєрі

У графічному конвеєрі композитинг відбувається після завершення всіх шейдерних проходів та растеризації. GPU бере готові шари з framebuffer-ів, застосовує blending-операції та записує результат в основний кадровий буфер (front buffer) для відправки на дисплей.

Як працює композитинг?

Compositing використовує попіксельне змішування (blending) кольорів з різних шарів. Кожен піксель вихідного зображення обчислюється на основі кольорів пікселів з шарів, що накладаються, з урахуванням прозорості (alpha-каналу) та вибраного режиму змішування.

Alpha-канал та прозорість

Кожен шар містить alpha-канал (четвертий компонент кольору RGBA), що визначає його непрозорість. Alpha = 1.0 — повністю непрозорий, alpha = 0.0 — повністю прозорий. Alpha blending обчислює колір пікселя як зважену суму кольорів переднього (source) та заднього (destination) шарів: результат = source * alpha + dest * (1 - alpha).

Порядок відтворення (алгоритм художника)

Композитинг виконується в порядку від найдальшого шару до найближчого (back-to-front). Спочатку рендериться фоновий шар, потім кожен наступний шар накладається поверх попереднього з урахуванням його прозорості. Z-order визначає, який шар знаходиться вище та буде перекривати нижчі.

Алгоритми композитингу

Compositing підтримує різні режими змішування (blend modes), які визначають, як кольори шарів комбінуються. Кожен режим дає різний візуальний ефект та має свої обчислювальні витрати.

РежимФормулаЗастосування
Normal (Alpha)src * a + dst * (1 - a)Стандартне накладання з прозорістю
Additivesrc + dstЕфекти світіння, частинки
Multiplysrc * dstЗатінення, тіні
Screen1 - (1 - src) * (1 - dst)Освітлення, відблиски
Premultiplied Alpha(src.rgb * a) + dst * (1 - a)Продуктивний (без множення на льоту)

Premultiplied Alpha

У режимі premultiplied alpha колірні канали зберігаються вже помноженими на alpha-канал (RGB × A). Це усуває необхідність множення при кожній blending-операції, прискорюючи композитинг. Premultiplied alpha — стандартний формат для GPU-композитингу в iOS Core Animation та Android HWUI.

Композитинг у мобільних ОС

Кожна мобільна операційна система має власну систему композитингу, оптимізовану для своїх апаратних платформ. Compositing у мобільних ОС відповідає за відтворення всього користувацького інтерфейсу.

iOS: Core Animation + Metal

В iOS композитингом керує Core Animation — високорівнева система, що працює поверх Metal або OpenGL ES. Core Animation створює layer tree (дерево шарів), яке потім композитується у фінальне зображення. Core Animation автоматично визначає, які шари змінилися, та перемальовує тільки їх (інкрементальний композитинг), що мінімізує навантаження на GPU.

Android: SurfaceFlinger + HWUI

В Android композитинг виконує SurfaceFlinger — системний сервіс, який об'єднує поверхні (surfaces) від різних додатків та системного UI. SurfaceFlinger використовує HWC (Hardware Composer) для передачі частини роботи з композитингу на виділене апаратне забезпечення дисплейного контролера.

Продуктивність композитингу

Продуктивність композитингу — частий вузький місцем у мобільних додатках, особливо при складних анімаціях та накладанні багатьох напівпрозорих шарів. Кожен додатковий шар вимагає читання, змішування та запису пікселів у пам'ять.

Фактори, що впливають на продуктивність

  • Кількість шарів — кожен шар вимагає окремого проходу blending. Зменшення кількості шарів прискорює композитинг лінійно.
  • Роздільна здатність шарів — шари з високою роздільною здатністю збільшують кількість оброблюваних пікселів. Використовуйте мінімально можливий розмір offscreen-буферів.
  • Прозорість та overdraw — напівпрозорі шари вимагають читання нижчих пікселів, що збільшує пропускну здатність.
  • CPU compositing — якщо композитинг виконується на CPU (software rendering), продуктивність різко падає. GPU-композитинг завжди кращий.

GPU Compositing vs CPU Compositing

Сучасні мобільні пристрої виконують композитинг на GPU через спеціалізовані блоки blending. GPU-композитинг використовує паралельні ROP-блоки та texture-фільтри для швидкого змішування пікселів. CPU-композитинг використовується лише в рідкісних випадках (старі пристрої, тестування).

Оптимізація композитингу

Оптимізація композитингу — одне з ключових завдань при розробці мобільних інтерфейсів. Плавність UI (60 FPS) безпосередньо залежить від ефективності об'єднання шарів.

Основні методи оптимізації

  • Мінімізація шарів — об'єднання статичних шарів в один (layer flattening) через попередній рендеринг.
  • Непрозорі шари — непрозорі шари не потребують alpha blending, що значно прискорює композитинг.
  • Інкрементальний композитинг — перемальовування лише змінених шарів, а не всієї сцени (використовується Core Animation).
  • Hardware Composer — використання HWC для апаратного композитингу без участі GPU.

Інструменти профілювання

Для аналізу продуктивності композитингу використовуйте: Core Animation Profiler (Xcode Instruments) — показує кількість шарів та частоту композитингу; GPU Debugger (Android Studio) — відображає GPU-навантаження та overdraw; Overdraw Visualization — інструмент налагодження, що показує області багаторазового перемальовування пікселів.

Часті запитання

Що таке композитинг простими словами?

Compositing — це як склеювання кількох прозорих плівок з малюнками в одну картинку. Кожна плівка — це шар (кнопка, фон, текст), а прозорість визначає, як шари просвічують один через одного.

Яка різниця між рендерингом та композитингом?

Рендеринг — створення вмісту кожного шару (малювання кнопки, текстурування 3D-моделі). Композитинг — об'єднання готових шарів у фінальне зображення з урахуванням прозорості та порядку накладання.

Як композитинг впливає на продуктивність iOS?

Core Animation композитить шари на GPU через Metal. Проблеми починаються при великій кількості напівпрозорих шарів (overdraw) або при CPU-композитингу (off-screen rendering). Використовуйте Core Animation Profiler для діагностики.

Що таке Hardware Composer в Android?

Hardware Composer (HWC) — апаратний модуль дисплейного контролера, що виконує композитинг без завантаження GPU. HWC може об'єднувати до 4-8 шарів апаратно, що знижує енергоспоживання та звільняє GPU для інших завдань.

Як зменшити навантаження композитингу?

Об'єднуйте статичні шари (layer flattening), використовуйте непрозорі кольори де можливо, зменшуйте розмір offscreen-буферів та уникайте зайвих анімацій, що викликають перекомпозитинг всієї сцени.

Підсумки

  • Compositing — фінальний етап об'єднання всіх візуальних шарів у підсумкове зображення екрана.
  • Alpha blending — основний алгоритм змішування кольорів з урахуванням прозорості (RGBA).
  • Premultiplied alpha — стандартний формат GPU-композитингу, що усуває зайві множення.
  • Core Animation (iOS) та SurfaceFlinger (Android) — системи композитингу мобільних ОС.
  • Кількість напівпрозорих шарів — головний фактор, що впливає на продуктивність композитингу.
  • Hardware Composer — апаратний блок Android для композитингу без GPU.
  • Оптимізація включає layer flattening, використання непрозорих шарів та інкрементальний композитинг.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також