"렌더링 파이프라인(Rendering Pipeline)"
개발을 하다보면 씬에 오브젝트를 몇 개만 놓았을 때는 잘 돌아가던 게임이,
빛이나 그림자, 이펙트같은 요소들이 늘어나면서 갑자기 버벅일 때가 있다.
이럴 때 무엇이 화면에 그려지는지는 보이는데, 어떤 순서로 그려지고 어디서 비용이 커지는지는 잘 보이지 않는다.
이때 필요한 개념이 바로 렌더링 파이프라인(Rendering Pipeline)이다.
Unity 문서에서도 렌더 파이프라인을 “씬의 내용을 화면에 표시하기 위한 일련의 처리 과정” 관점으로 설명하고,
URP/HDRP/커스텀 SRP 같은 선택지를 안내한다.
오늘은 렌더링 파이프라인이 뭔지, 한 프레임이 화면에 나오기까지의 흐름을 간단하게 정리해볼 예정이다.
1) 렌더링 파이프라인이란?
게임 속 데이터(카메라/오브젝트/머티리얼/라이트)를 최종 화면 픽셀로 바꾸는 처리 순서이다.
즉, 3D/2D 씬 데이터를 바로 화면에 찍는 게 아니라,
중간에 정렬/선별/그리기/조명/합성 같은 과정을 거쳐서 우리가 보는 한 장의 프레임이 만들어진다.
씬 데이터(오브젝트/라이트/카메라)
↓
무엇을 그릴지 결정 + 그리기 명령 준비
↓
GPU가 픽셀 계산
↓
최종 화면 출력
2) 한 프레임이 그려지는 흐름은?
[CPU]
- 카메라 기준으로 보이는 것 추리기
- 그릴 순서 정리하기
- 그림 그리기 준비
↓ (명령 전달)
[GPU]
- 정점(모서리 점) 위치 계산
- 삼각형을 화면 픽셀로 펼치기
- 픽셀 색 계산(텍스처/조명)
- 겹치는 것 정리(앞뒤/투명)
↓
[화면]
- 최종 프레임 출력
CPU와 GPU를 예를들면,
CPU: 무엇을 어떤 순서로 그릴지 준비하는 감독
GPU: 실제로 픽셀을 계산해서 그리는 작업자
성능 이슈가 생겼을 때도
CPU 쪽 준비가 느린지, GPU 쪽 픽셀 계산이 무거운지를 나눠 보는 것이 중요하다.
3) 렌더링 파이프라인의 특징 4가지
(1) 보이지 않는 것은 최대한 제외함 (Culling)
카메라 밖에 있는 오브젝트까지 전부 그리면 낭비다.
그래서 렌더링 전에 안 보이는 것을 최대한 제외하려고 한다.
카메라 시야 밖 오브젝트
→ 후보에서 제외
→ 그리기 비용 절약
(2) 같은 조건의 오브젝트는 묶어 처리함 (Batching)
오브젝트를 하나하나 따로 그리는 건 비용이 늘기 쉽다.
그래서 가능하면 묶어서 처리하려고 한다.
(배치/인스턴싱 같은 개념)
(3) 투명 오브젝트는 정렬/겹침 때문에 비용이 커지기 쉬움
불투명보다 그리는 순서가 중요하고, 겹치면 겹칠수록 비용이 커지기 쉽다.
(UI, 파티클에서 특히 체감)
(4) 후처리는 품질을 높이지만 비용이 추가됨
Bloom, Color Grading, Motion Blur 같은 후처리는 화면 품질을 올리지만,
당연히 연산 비용도 추가된다.
4) Unity의 렌더 파이프라인 종류
Built-in Render Pipeline
예전부터 많이 쓰인 기본 파이프라인
기존 프로젝트/레거시 자료에서 자주 보임
URP (Universal Render Pipeline)
범용/확장성/성능 밸런스 쪽
모바일~PC까지 폭넓게 고려할 때 많이 선택
HDRP (High Definition Render Pipeline)
고품질 그래픽/하이엔드 플랫폼 중심
더 무겁지만 표현력/기능이 강함
커스텀 SRP (Custom Scriptable Render Pipeline)
Unity가 제공하는 SRP API 위에서 프로젝트에 맞는 렌더 파이프라인을 직접 만드는 방식
(URP/HDRP를 쓰는 대신 렌더링 흐름을 C#으로 직접 설계/제어함)
[Built-in] : 익숙한 기본형(레거시 프로젝트에서 자주 봄)
[URP] : 범용 / 성능 밸런스 / 넓은 플랫폼
[HDRP] : 고품질 / 하이엔드 그래픽 중심
[Custom SRP] : 렌더링 흐름을 직접 설계/제어 (고급/특수 목적)
5) Unity에서 프레임을 눈으로 보는 방법은?
렌더링 파이프라인은 추상적이라 글만 읽으면 헷갈릴 수 있다.
이럴 때 Frame Debugger를 켜 보면,
한 프레임이 어떤 렌더링 이벤트(드로우콜 등)로 구성되는지 단계별로 볼 수 있다.
이전에 연습했던 씬을 Frame Debugger를 통해 한번 봐보자.

Frame Debugger는
Window - Analysis - Frame Debugger로 볼 수 있다.

Frame Debugger을 통해 볼 씬은 이전에 시네머신을 연습했던 씬이다.

처음 창을 키면 다음과 같이 창이 생기는데
'Enable' 버튼을 눌러주자.

그럼 다음과 같이 항목들(렌더링 이벤트)이 생긴다.
이 항목들이 위에서 아래의 순서로 화면이 출력되는 것이다.

그리고 중간에 슬라이더를 통해서 애니메이션 형식처럼 프레임이 출력되는 것을 볼 수 있다.

이걸 한 번만 봐도,
화면이 그냥 한 번에 나오는 게 아니고, 오브젝트/패스가 순서대로 쌓이는 것을 볼 수 있다.
6) 렌더링 최적화를 한다면 어디부터 보면 좋을까?
렌더링 최적화를 처음 할 때는 아래 순서로 확인 하는것이 부담이 적다.
(a)오브젝트 수가 너무 많은가?
(b)투명(UI/파티클) 겹침이 과한가?
(c)라이트/그림자 수가 많은가?
(d)후처리가 과한가?
(e) Frame Debugger로 실제 렌더 순서를 확인했는가?
처음부터 셰이더 내부까지 파고들 필요는 없고,
무엇이 많이 그려지는가부터 보는 게 훨씬 쉽고 편하다.
7) 오늘의 한 줄 요약
『 렌더링 파이프라인(Rendering Pipeline) 은 씬 데이터를 화면 픽셀로 바꾸는 전체 과정이다. 』
'1일 1 cs' 카테고리의 다른 글
| 30. 빌보드(Billboard) 기법 이란? (1) | 2026.02.25 |
|---|---|
| 28. Call by Value와 Call by Reference 란? (0) | 2026.02.21 |
| 27. IK애니메이션이란? (0) | 2026.02.16 |
| 26. 프로세스(Process)와 스레드(Thread)란? (0) | 2026.02.15 |
| 25. 짐벌락(Gimbal Lock) 이란? (0) | 2026.02.14 |