Unity/기능

[Unity] CPU 와 GPU

turbulence93 2025. 8. 5. 21:28

1. CPU와 GPU의 기본 개념 차이

항목 CPU (Central Processing Unit) GPU (Graphics Processing Unit)
별명 컴퓨터의 두뇌 병렬 연산 특화 처리기
주 역할 로직 처리, 시스템 명령 제어 그래픽 렌더링, 병렬 연산
처리 방식 직렬(순차) 처리 병렬 처리
코어 구성 소수의 고성능 코어 수천 개의 단순한 연산 유닛
특징 다양한 작업에 유연 동일 작업 반복에 최적화

2. Unity에서의 사용
Unity 내부 구성 요소 주요 처리  장치설명
게임 오브젝트 로직 (MonoBehaviour, FSM 등) CPU Update(), AI 계산, 충돌 판정 등
물리 연산 (Rigidbody, Collider 등) CPU Phys 기반 물리 처리
스크립트 연산, 조건 분기 CPU 조건문, 수치 계산 등
메쉬 렌더링, 쉐이더 실행 GPU 정점, 픽셀 셰이더 처리
포스트 프로세싱 효과 GPU 블룸, 블러, 톤 매핑 등
텍스처, 그림자, 조명 처리 GPU 라이트맵, 그림자 맵, 라이트 계산 등
GPU Instancing, Compute Shader GPU 대량 오브젝트 처리 또는 병렬 연산

3. 문제 발생시 체크해야 될 장치
상황 원인 관련 장치
FPS는 높은데 조작 반응이 느림 CPU 병목 CPU
카메라 회전 시 프레임 드랍 쉐이더, 그림자 비용 GPU
오브젝트가 많을 때 프레임 드랍 연산 과다 or 드로우콜 증가 CPU & GPU 모두
대량의 연산이 느릴 때 for문 or 리스트 탐색 과다 CPU
GPU 사용률은 낮은데 끊김 발생 CPU 스레드에서 대기 CPU

4.Unity에서 성능 최적화 시 고려 사항
  • CPU 병목:
    • Update() 최적화, FixedUpdate() 최소화
    • 불필요한 Find(), GetComponent() 제거
    • Object Pooling 활용
  • GPU 병목:
    • 텍스처 크기, 라이트 수 줄이기
    • 쉐이더 최적화 (Unlit 사용, 복잡한 셰이더 최소화)
    • 드로우콜 줄이기 (Batching, Instancing 등)

5. 개인적인 소감

Unity는 CPU와 GPU가 모두 중요한 역할을 하며, 각자의 역할을 이해하면 최적화 포인트를 쉽게 파악할 수 있다.

단순히 "프레임이 낮다"가 아니라 "어느 쪽이 병목인지"를 구분하는 관점을 갖는 것이 중요하다고 느꼈다.
앞으로 개발 시, 로직과 렌더링을 분리해서 생각하는 습관을 들여야겠다.

'Unity > 기능' 카테고리의 다른 글

[Unity] 매개변수 params  (1) 2025.08.08
[Unity] Find 함수  (2) 2025.08.07
[Unity] New Input System 사용하기3  (0) 2025.07.18
[Unity] 람다의 캡처와 클로저 개념  (2) 2025.07.17
[Unity] New Input System 사용하기2  (0) 2025.07.16