렌더링 파이프라인
IT위키
더 많은 작업
렌더링 파이프라인(Rendering Pipeline, 그래픽스 파이프라인)은 3차원 장면을 이루는 정점·도형 데이터를 단계별로 변환하고 처리해 화면의 2차원 픽셀 이미지로 만들어 내는 일련의 처리 과정이다.
| 단계 | 처리 위치 | 하는 일 |
|---|---|---|
| 1. 응용 단계 (Application) | CPU | 장면 구성, 입력 처리, 충돌·물리 계산, 보이지 않는 물체 걸러 내기(컬링). 그릴 정점·텍스처·변환 행렬을 GPU 에 넘기는 그리기 호출(draw call)을 만든다 |
| 2. 기하 처리 (Geometry Processing) | GPU | 정점 셰이더가 정점마다 모델 → 월드 → 뷰(카메라) → 투영 변환을 한다. 화면 밖 부분을 잘라 내고(클리핑), 원근 나눗셈과 뷰포트 변환으로 화면 좌표를 얻는다. 필요하면 테셀레이션·지오메트리 셰이더가 정점을 늘리거나 새 도형을 만든다 |
| 3. 래스터화 (Rasterization) | GPU 고정 기능 | 정점을 삼각형으로 조립하고(primitive assembly), 삼각형이 덮는 픽셀 후보(프래그먼트)를 찾아 깊이·텍스처 좌표·색을 보간한다. 뒷면을 버리는 후면 컬링도 여기서 한다 |
| 4. 프래그먼트 처리 (Pixel Processing) | GPU | 프래그먼트(픽셀) 셰이더가 프래그먼트마다 텍스처를 읽고(텍스처 매핑) 조명·그림자·재질을 계산해 색을 정한다 |
| 5. 출력 병합 (Output Merger) | GPU 고정 기능 | 깊이 테스트(Z-버퍼)로 앞에 가려진 프래그먼트를 버리고, 스텐실 테스트와 알파 블렌딩(반투명 합성)을 거쳐 프레임 버퍼에 쓴다. 완성된 프레임 버퍼를 화면에 내보낸다(더블 버퍼링) |
| 구분 | 고정 기능 파이프라인 | 프로그래머블 파이프라인 |
|---|---|---|
| 시기 | 2000년 무렵까지(OpenGL 1.x, Direct3D 7) | Direct3D 8·OpenGL 2.0 이후, 지금의 표준 |
| 변환·조명 | 하드웨어에 정해진 공식(T&L)만 쓴다 | 개발자가 셰이더 프로그램(HLSL, GLSL)으로 직접 짠다 |
| 표현력 | 정해진 조명 모델·효과뿐 | 물리 기반 렌더링, 후처리 효과 등 자유롭다 |
| 하드웨어 | 단계마다 전용 회로 | 정점·픽셀을 같은 연산 유닛이 처리하는 통합 셰이더 구조(2006년 이후) |
- 지금의 API(Direct3D 12, Vulkan, Metal, WebGPU)는 파이프라인 상태를 미리 묶은 객체로 만들고, 그래픽과 상관없는 계산은 컴퓨트 셰이더로 돌린다. 이 범용 계산 능력이 GPU 를 딥 러닝 가속기로 쓰게 된 출발점이다
| 구분 | 래스터화 기반 렌더링 | 레이 트레이싱 |
|---|---|---|
| 원리 | 물체(삼각형)를 화면에 투영해 덮는 픽셀을 칠한다 | 화면의 픽셀마다 광선을 쏘아 물체와의 교차·반사·굴절을 거슬러 추적한다 |
| 속도 | 빠르다. 실시간 렌더링의 기본 | 계산량이 많다. 전용 하드웨어(RT 코어)와 노이즈 제거로 실시간에 쓰기 시작했다 |
| 품질 | 그림자·반사는 근사 기법(섀도 맵, 화면 공간 반사)으로 흉내 낸다 | 그림자·반사·굴절·전역 조명이 물리적으로 정확하다 |
| 쓰임 | 게임, UI, 웹 3D | 영화 VFX, 건축 시각화, 최신 게임의 하이브리드 렌더링 |
- 포워드 렌더링은 물체마다 모든 조명을 계산하고, 지연(deferred) 렌더링은 먼저 위치·법선·재질을 G-버퍼에 기록한 뒤 조명을 화면 단위로 한 번에 계산해 조명이 많은 장면에 유리하다
- 그리기 호출 수 : CPU 가 GPU 에 명령을 넘기는 횟수가 많으면 응용 단계가 병목이 된다. 인스턴싱·배칭으로 줄인다
- 정점 처리량 : 폴리곤 수. 멀리 있는 물체는 단순한 모델로 바꾸는 LOD(Level of Detail)를 쓴다
- 필 레이트 : 픽셀 셰이더가 처리하는 프래그먼트 수. 해상도와 겹쳐 그리기(overdraw)에 비례한다
- 메모리 대역폭 : 텍스처·프레임 버퍼 읽기·쓰기. 텍스처 압축과 밉맵으로 줄인다
- 계단 현상은 안티앨리어싱으로 줄인다