Compositing(컴포지팅): 개념, 레이어 및 작동 원리

저자: IT Sectr 게시일: 2026-06-12 읽는 시간: 10 분

Compositing(컴포지팅)은 여러 시각적 레이어(layers)를 하나의 최종 이미지로 결합하는 프로세스입니다. Apple Core Animation 문서, 2025에 따르면, 모바일 개발에서 컴포지팅은 UI 레이어 오버레이, 3D 렌더링과 인터페이스 결합, 애니메이션 생성에 사용됩니다. Compositing은 그리기 순서, 투명도 및 레이어 간 색상 혼합을 제어합니다.

핵심 사항

  • Compositing — 개별 시각적 레이어를 최종 이미지로 결합.
  • Alpha blending — 레이어 투명도를 고려한 기본 혼합 알고리즘.
  • GPU compositing — ROP 블록의 블렌딩 연산을 통해 GPU에서 실행.
  • Core Animation(iOS) 및 HWUI(Android) — 모바일 OS의 컴포지팅 시스템.
  • 최적화는 60 FPS에서 부드러운 UI와 애니메이션에 필수적입니다.

컴포지팅이란?

Compositing은 그래픽 파이프라인의 최종 단계로, 개별적으로 렌더링된 모든 레이어(3D 장면, UI 요소, 비디오, 시스템 인터페이스)를 화면 출력을 위해 하나의 이미지로 결합합니다. 각 레이어는 고유한 색상, 투명도(alpha), 위치 및 스태킹 순서를 가질 수 있습니다.

모바일 개발의 맥락에서 컴포지팅은 사용자 인터페이스에 중요합니다: 창, 버튼, 텍스트, 아이콘 — 이러한 모든 요소는 단일 장면으로 컴포지팅됩니다. 컴포지팅 시스템은 그리기 순서(z-order), 반투명 요소의 올바른 중첩 및 UI 상태 간 전환 애니메이션을 관리합니다.

그래픽 파이프라인의 컴포지팅

그래픽 파이프라인에서 컴포지팅은 모든 셰이더 패스와 래스터화가 완료된 후에 발생합니다. GPU는 프레임버퍼에서 완성된 레이어를 가져와 블렌딩 연산을 적용하고 결과를 디스플레이로 보내기 위해 메인 프레임버퍼(프론트 버퍼)에 기록합니다.

컴포지팅의 작동 방식

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)로 미리 곱해져 저장됩니다. 이는 각 블렌딩 연산에서 곱셈이 필요하지 않게 하여 컴포지팅을 가속화합니다. Premultiplied alpha는 iOS Core Animation 및 Android HWUI의 GPU 컴포지팅 표준 형식입니다.

모바일 OS의 컴포지팅

각 모바일 운영 체제는 자체 하드웨어 플랫폼에 최적화된 고유한 컴포지팅 시스템을 가지고 있습니다. 모바일 OS의 Compositing은 전체 사용자 인터페이스 렌더링을 담당합니다.

iOS: Core Animation + Metal

iOS에서 컴포지팅은 Core Animation에 의해 관리됩니다 — Metal 또는 OpenGL ES 위에서 작동하는 고수준 시스템입니다. Core Animation은 레이어 트리(layer tree)를 생성한 다음 최종 이미지로 컴포지팅됩니다. Core Animation은 자동으로 변경된 레이어를 감지하고 변경된 레이어만 다시 그립니다(증분 컴포지팅). 이를 통해 GPU 부하가 최소화됩니다.

Android: SurfaceFlinger + HWUI

Android에서 컴포지팅은 SurfaceFlinger에 의해 수행됩니다 — 다양한 애플리케이션과 시스템 UI의 표면을 결합하는 시스템 서비스입니다. SurfaceFlinger는 HWC(Hardware Composer)를 사용하여 컴포지팅 작업의 일부를 디스플레이 컨트롤러의 전용 하드웨어에 오프로드합니다.

컴포지팅 성능

컴포지팅 성능은 특히 복잡한 애니메이션과 여러 반투명 레이어 중첩에서 모바일 애플리케이션의 일반적인 병목 현상입니다. 추가 레이어마다 메모리에서 픽셀을 읽고, 혼합하고, 쓰는 작업이 필요합니다.

성능에 영향을 미치는 요소

  • 레이어 수 — 각 레이어에는 별도의 블렌딩 패스가 필요합니다. 레이어 수를 줄이면 컴포지팅이 선형적으로 빨라집니다.
  • 레이어 해상도 — 고해상도 레이어는 처리되는 픽셀 수를 증가시킵니다. 가능한 최소 오프스크린 버퍼 크기를 사용하세요.
  • 투명도 및 오버드로우 — 반투명 레이어는 아래 픽셀을 읽어야 하므로 대역폭이 증가합니다.
  • CPU 컴포지팅 — CPU에서 컴포지팅이 수행되는 경우(소프트웨어 렌더링) 성능이 급격히 저하됩니다. GPU 컴포지팅이 항상 우선됩니다.

GPU 컴포지팅 vs CPU 컴포지팅

최신 모바일 기기는 특수 블렌딩 유닛을 통해 GPU에서 컴포지팅을 수행합니다. GPU 컴포지팅은 병렬 ROP 유닛과 텍스처 필터를 사용하여 빠른 픽셀 블렌딩을 구현합니다. CPU 컴포지팅은 드문 경우(오래된 기기, 테스트)에만 사용됩니다.

컴포지팅 최적화

컴포지팅 최적화는 모바일 인터페이스 개발의 주요 과제 중 하나입니다. UI의 부드러움(60 FPS)은 레이어 결합 효율성에 직접적으로 의존합니다.

주요 최적화 방법

  • 레이어 최소화 — 사전 렌더링을 통해 정적 레이어를 하나로 결합(layer flattening).
  • 불투명 레이어 — 불투명 레이어는 alpha blending이 필요하지 않아 컴포지팅을 크게 가속화합니다.
  • 증분 컴포지팅 — 전체 장면이 아닌 변경된 레이어만 다시 그리기(Core Animation에서 사용).
  • Hardware Composer — GPU 참여 없이 하드웨어 컴포지팅을 위한 HWC 사용.

프로파일링 도구

컴포지팅 성능 분석에는 Core Animation Profiler(Xcode Instruments) — 레이어 수와 컴포지팅 빈도 표시, GPU Debugger(Android Studio) — GPU 부하 및 오버드로우 표시, Overdraw Visualization — 픽셀 반복 다시 그리기 영역을 보여주는 디버깅 도구를 사용합니다.

자주 묻는 질문

간단히 말해 컴포지팅이란 무엇인가요?

컴포지팅은 여러 투명 시트에 그려진 그림을 하나의 이미지로 겹치는 것과 같습니다. 각 시트는 레이어(버튼, 배경, 텍스트)이며 투명도는 레이어가 서로 어떻게 비쳐 보이는지 결정합니다.

렌더링과 컴포지팅의 차이점은 무엇인가요?

렌더링 — 각 레이어의 콘텐츠 생성(버튼 그리기, 3D 모델 텍스처링). 컴포지팅 — 투명도와 스태킹 순서를 고려하여 완성된 레이어를 최종 이미지로 결합.

컴포지팅이 iOS 성능에 어떤 영향을 미치나요?

Core Animation은 Metal을 통해 GPU에서 레이어를 컴포지팅합니다. 다수의 반투명 레이어(오버드로우) 또는 CPU 컴포지팅(오프스크린 렌더링)에서 문제가 발생합니다. 진단에는 Core Animation Profiler를 사용하세요.

Android의 Hardware Composer란 무엇인가요?

Hardware Composer(HWC)는 GPU에 부하를 주지 않고 컴포지팅을 수행하는 디스플레이 컨트롤러의 하드웨어 모듈입니다. HWC는 하드웨어에서 최대 4-8개 레이어를 결합할 수 있어 전력 소비를 줄이고 GPU를 다른 작업에 사용할 수 있게 합니다.

컴포지팅 부하를 줄이는 방법은?

정적 레이어를 결합하고(layer flattening), 가능한 경우 불투명 색상을 사용하고, 오프스크린 버퍼 크기를 줄이며, 전체 장면의 재컴포지션을 유발하는 불필요한 애니메이션을 피하세요.

요약

  • Compositing — 모든 시각적 레이어를 최종 화면 이미지로 결합하는 마지막 단계.
  • Alpha blending — 투명도(RGBA)를 고려한 기본 색상 혼합 알고리즘.
  • Premultiplied alpha — 불필요한 곱셈을 제거하는 표준 GPU 컴포지팅 형식.
  • Core Animation(iOS) 및 SurfaceFlinger(Android) — 모바일 OS의 컴포지팅 시스템.
  • 반투명 레이어 수 — 컴포지팅 성능에 영향을 미치는 주요 요인.
  • Hardware Composer — GPU 없이 컴포지팅하는 Android 하드웨어 블록.
  • 최적화에는 layer flattening, 불투명 레이어 사용 및 증분 컴포지팅이 포함됩니다.

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기