# [[GPU 가속 및 Compositing]] ## πŸ“Œ Brief Summary GPU 가속 및 Compositing(ν•©μ„±)은 λΈŒλΌμš°μ €κ°€ λ Œλ”λ§ 및 μ• λ‹ˆλ©”μ΄μ…˜ μž‘μ—…μ˜ 일뢀λ₯Ό 메인 μŠ€λ ˆλ“œμ—μ„œ λ””λ°”μ΄μŠ€μ˜ κ·Έλž˜ν”½ 처리 μž₯치(GPU)둜 μ˜€ν”„λ‘œλ“œ(offload)ν•˜μ—¬ μ²˜λ¦¬ν•˜λŠ” μ„±λŠ₯ μ΅œμ ν™” κΈ°λ²•μž…λ‹ˆλ‹€. 이 과정을 톡해 λΈŒλΌμš°μ €λŠ” μ—°μ‚° λΉ„μš©μ΄ 높은 λ ˆμ΄μ•„μ›ƒ(Reflow)κ³Ό 페인트(Repaint) 단계λ₯Ό κ±΄λ„ˆλ›°κ³  'ν•©μ„±(Composite)' λ‹¨κ³„λ§Œ μ‹€ν–‰ν•˜κ²Œ λ©λ‹ˆλ‹€. μ΄λŠ” λͺ¨λ°”일 ν™˜κ²½μ„ ν¬ν•¨ν•œ λ‹€μ–‘ν•œ λ””λ°”μ΄μŠ€μ—μ„œ μ΄ˆλ‹Ή 60 ν”„λ ˆμž„(60 FPS)의 λΆ€λ“œλŸ¬μš΄ UI μ• λ‹ˆλ©”μ΄μ…˜μ„ κ΅¬ν˜„ν•˜κ³  μ „λ°˜μ μΈ ν”„λ‘ νŠΈμ—”λ“œ μ„±λŠ₯을 λ†’μ΄λŠ” 데 ν•„μˆ˜μ μΈ 역할을 ν•©λ‹ˆλ‹€. ## πŸ“– Core Content * **ν”½μ…€ νŒŒμ΄ν”„λΌμΈκ³Ό Compositing의 μ—­ν• **: DOM μš”μ†Œμ˜ 변경은 λΈŒλΌμš°μ €μ—μ„œ 'μŠ€νƒ€μΌ 계산(Recalculate Style) -> λ ˆμ΄μ•„μ›ƒ(Reflow) -> 페인트(Repaint) -> ν•©μ„±(Composite)'μ΄λΌλŠ” ν”½μ…€ νŒŒμ΄ν”„λΌμΈμ„ 거치게 λ©λ‹ˆλ‹€. κ³ μ„±λŠ₯ μ• λ‹ˆλ©”μ΄μ…˜μ„ λ‹¬μ„±ν•˜κΈ° μœ„ν•΄ κ°œλ°œμžλŠ” λΈŒλΌμš°μ €κ°€ κ°’λΉ„μ‹Ό λ ˆμ΄μ•„μ›ƒκ³Ό 페인트 단계λ₯Ό μš°νšŒν•˜κ³ , 였직 'ν•©μ„±' λ‹¨κ³„λ§Œ νŠΈλ¦¬κ±°ν•˜λ„λ‘ μœ λ„ν•΄μ•Ό ν•©λ‹ˆλ‹€ [1, 2]. * **GPU 가속을 νŠΈλ¦¬κ±°ν•˜λŠ” 속성 및 μš”μ†Œ**: λΈŒλΌμš°μ €λŠ” νŠΉμ • μœ ν˜•μ˜ μ• λ‹ˆλ©”μ΄μ…˜μ„ μžλ™μœΌλ‘œ GPU둜 보내 μ²˜λ¦¬ν•˜λ©°(Compositing), 이λ₯Ό 톡해 λ Œλ”λ§ λ ˆμ΄μ•„μ›ƒ μž¬κ³„μ‚°μ„ μ€„μž…λ‹ˆλ‹€. λŒ€ν‘œμ μœΌλ‘œ λ‹€μŒκ³Ό 같은 속성 및 μš”μ†Œλ“€μ΄ 자체적인 λ ˆμ΄μ–΄μ—μ„œ λ Œλ”λ§λ˜μ–΄ GPU κ°€μ†μ˜ 이점을 μ–»μŠ΅λ‹ˆλ‹€ [3, 4]: * `transform` (예: `translateZ()`, `rotate3d()`, `scale` λ“±) 및 `opacity` 속성 [3, 4]. * `position: fixed`κ°€ 적용된 μš”μ†Œ [3]. * λΈŒλΌμš°μ €μ— 변경을 미리 μ•Œλ €μ£Όμ–΄ μ΅œμ ν™”λ₯Ό λ•λŠ” `will-change` 속성이 적용된 μš”μ†Œ [3, 5]. * `