# [[GPU Acceleration (Compositing)|GPU Acceleration (Compositing]] ## πŸ“Œ Brief Summary GPU 가속(λ˜λŠ” ν•©μ„±, Compositing)은 λΈŒλΌμš°μ €κ°€ 메인 μŠ€λ ˆλ“œμ—μ„œ μˆ˜ν–‰ν•˜λ˜ μ• λ‹ˆλ©”μ΄μ…˜ λ“± λ Œλ”λ§ μž‘μ—…μ„ κ·Έλž˜ν”½ 처리 μž₯치(GPU)둜 μ˜€ν”„λ‘œλ“œ(Offload)ν•˜μ—¬ μ²˜λ¦¬ν•˜λŠ” μ„±λŠ₯ μ΅œμ ν™” 기법이닀 [1, 2]. 이λ₯Ό 톡해 λΈŒλΌμš°μ €λŠ” κ°’λΉ„μ‹Ό λ ˆμ΄μ•„μ›ƒ μž¬κ³„μ‚°(Reflow) 및 λ‹€μ‹œ 그리기(Repaint) 단계λ₯Ό κ±΄λ„ˆλ›°κ³  였직 ν•©μ„±(Composite) λ‹¨κ³„λ§Œ νŠΈλ¦¬κ±°ν•˜κ²Œ λœλ‹€ [2]. 결과적으둜 특히 μ„±λŠ₯이 μ œν•œμ μΈ λͺ¨λ°”일 κΈ°κΈ° ν™˜κ²½μ—μ„œλ„ 60FPS의 λΆ€λ“œλŸ½κ³  λŠκΉ€ μ—†λŠ” μ• λ‹ˆλ©”μ΄μ…˜μ„ κ΅¬ν˜„ν•˜λŠ” 데 핡심적인 역할을 ν•œλ‹€ [2, 3]. ## πŸ“– Core Content * **μž‘λ™ 원리 및 이점:** λͺ¨λ˜ λΈŒλΌμš°μ €μ˜ λ Œλ”λ§ νŒŒμ΄ν”„λΌμΈμ€ 'μŠ€νƒ€μΌ 계산 -> λ ˆμ΄μ•„μ›ƒ(Reflow) -> 페인트(Repaint) -> ν•©μ„±(Composite)' 순으둜 이루어진닀 [4]. λ³΅μž‘ν•œ μ• λ‹ˆλ©”μ΄μ…˜μ—μ„œ 60FPS의 λΆ€λ“œλŸ¬μš΄ μ„±λŠ₯을 λ‹¬μ„±ν•˜λ €λ©΄ λΉ„μš©μ΄ 많이 λ“œλŠ” λ ˆμ΄μ•„μ›ƒκ³Ό 페인트 단계λ₯Ό μš°νšŒν•΄μ•Ό ν•˜λŠ”λ°, μ΄λ•Œ 연산을 GPU둜 μœ„μž„ν•˜μ—¬ ν•©μ„± λ‹¨κ³„λ§Œ μ‹€ν–‰ν•˜κ²Œ ν•˜λŠ” 것이 GPU κ°€μ†μ˜ 원리이닀 [2]. μ΄λŠ” λ Œλ”λ§ λ ˆμ΄μ–΄μ—λ§Œ 영ν–₯을 μ£ΌκΈ° λ•Œλ¬Έμ— μ„±λŠ₯이 크게 ν–₯μƒλœλ‹€ [5]. * **GPU 가속을 νŠΈλ¦¬κ±°ν•˜λŠ” μ£Όμš” CSS 속성:** λΈŒλΌμš°μ €κ°€ μžλ™μœΌλ‘œ μ• λ‹ˆλ©”μ΄μ…˜μ„ GPU둜 보내 μ²˜λ¦¬ν•˜λ„λ‘ ν•˜λ €λ©΄ μ˜¬λ°”λ₯Έ CSS 속성을 선택해야 ν•œλ‹€ [1]. * `transform: translateZ()`, `rotate3d()`, `scale`κ³Ό 같은 3D 및 2D λ³€ν˜•(Transform) μ• λ‹ˆλ©”μ΄μ…˜ [3, 5]. * 투λͺ…도λ₯Ό μ‘°μ ˆν•˜λŠ” `opacity` 속성 [2]. * 반면, `width`, `height`, `margin`, `padding`, `top/left/right/bottom`κ³Ό 같은 λ ˆμ΄μ•„μ›ƒ 속성을 μ• λ‹ˆλ©”μ΄μ…˜ν™”ν•˜λ©΄ GPU 가속을 λ°›μ§€ λͺ»ν•˜κ³  λ ˆμ΄μ•„μ›ƒ μŠ€λž˜μ‹±(Reflow)κ³Ό Repaintκ°€ λ°œμƒν•΄ 화면이 λŠκΈ°κ±°λ‚˜ μ„±λŠ₯이 μ‹¬κ°ν•˜κ²Œ μ €ν•˜λœλ‹€ [2, 6]. * **GPUμ—μ„œ μ²˜λ¦¬λ˜λŠ” 기타 μš”μ†Œ:** * `position: fixed`와 같이 νŠΉμ • 속성이 μ μš©λ˜μ–΄ μ• λ‹ˆλ©”μ΄μ…˜λ˜λŠ” μš”μ†Œ [3]. * λΈŒλΌμš°μ €μ— μš”μ†Œκ°€ 변경될 κ²ƒμž„μ„ 미리 μ•Œλ €μ£ΌλŠ” `will-change` 속성이 적용된 μš”μ†Œ [3, 7]. * `