# [[GPU 가속(GPU Acceleration)]]

## 📌 Brief Summary
GPU 가속(GPU Acceleration)은 웹 브라우저의 렌더링 및 애니메이션 작업을 메인 스레드에서 분리하여 디바이스의 그래픽 처리 장치(GPU)로 넘겨 처리하는 성능 최적화 기법이다 [1]. 브라우저가 값비싼 레이아웃(Reflow) 및 페인트(Repaint) 단계를 건너뛰고 컴포지팅(Compositing) 과정만 수행하도록 유도하여 시스템 부하를 대폭 줄인다 [2]. 특히 모바일 환경이나 부하가 큰 인터랙션에서 부드럽고 빠른 사용자 경험(예: 60FPS)을 제공하는 데 필수적인 역할을 한다 [3, 4].

## 📖 Core Content
- **GPU 가속의 원리 및 이점:** 
  브라우저의 렌더링 파이프라인에서 애니메이션 작업을 처리할 때, `transform`이나 `opacity`와 같은 특정 CSS 속성을 사용하면 브라우저는 복잡한 레이아웃 재계산과 페인팅 과정을 완전히 우회할 수 있다 [2, 5]. 대신 이 작업들은 GPU로 오프로드(offload)되어 처리되며, 이 방식을 컴포지팅(Compositing)이라고 부른다 [1, 2]. GPU 가속을 트리거하면 레이아웃 재계산이 최소화되어 성능이 향상되고, 애니메이션의 끊김 현상(Jank)을 방지할 수 있다 [5].
  
- **GPU 가속을 트리거하는 속성 및 요소:** 
  브라우저가 자동으로 GPU에 처리를 넘기는 주요 애니메이션 및 요소는 다음과 같다.
  - `transform: translateZ()` 및 `rotate3d()` 같은 3D 변형(transform) 애니메이션 [3].
  - `transform`, `scale`, `opacity`의 변경 [2, 5].
  - `position: fixed` 등 특정 속성이 적용되어 독립적인 레이어로 렌더링되는 요소 [3].
  - 브라우저에 렌더링 힌트를 제공하는 `will-change` 속성이 적용된 요소 [3].
  - `<video>`, `<canvas>`, `<iframe>`과 같이 애초에 자체 레이어에서 렌더링되는 특수 요소들 [3].

- **적용 시 주의사항:** 
  GPU 가속은 특히 모바일 장치에서 성능 향상에 크게 기여하지만, 무조건적으로 사용하는 것이 항상 좋은 결과로 이어지지는 않는다 [3]. 무분별한 레이어 생성이나 `will-change` 속성을 불필요하게 많이 적용할 경우, 디바이스의 메모리 및 리소스를 과도하게 소모하여 오히려 성능 문제를 유발할 수 있다 [6]. 따라서 필요한 UI 요소에만 제한적으로 사용하고 성능 테스트를 병행해야 한다.

## 🔗 Knowledge Connections
- **Related Topics:** [[CSS 애니메이션 최적화(CSS Animations Optimization)]], [[리플로우 및 리페인트(Reflows and Repaints)]], [[컴포지팅(Compositing)]], [[will-change 속성]]
- **Projects/Contexts:** [[웹 성능 최적화(Web Performance Optimization)]], [[실무 CSS 관리 및 아키텍처]]
- **Contradictions/Notes:** 소스에서는 GPU 애니메이션이 성능 향상을 가져다준다고 설명하는 동시에, 애니메이션을 GPU로 이동시키는 작업이 항상 간단하지만은 않으며 잘못 사용할 경우 과부하를 일으킬 수 있다는 점을 함께 경고하고 있다 [3, 6].

---
*Last updated: 2026-04-26*