GameDevelop/Notes

렌더링 파이프라인

Une_ 2026. 1. 20. 15:32

렌더링 파이프라인(Rendering Pipeline)

1. 한 줄 정의

렌더링 파이프라인은
3D 공간의 정점 데이터를
최종적으로 화면의 픽셀로 변환하는 전체 과정이다.

 

2. 전체 흐름 한눈에 보기

로컬 스페이스
   ↓
월드 스페이스
   ↓
뷰 스페이스
   ↓
백페이스 컬링
   ↓
조명
   ↓
클리핑
   ↓
투영
   ↓
뷰포트 변환
   ↓
레스터라이즈
 

로컬 스페이스 (Local / Model Space)

  • 물체를 기준으로 한 좌표
  • 메시가 자기 자신을 원점으로 가짐

월드 스페이스 (World Space)

  • 월드를 기준으로 한 좌표
  • 모든 오브젝트가 공통 기준 공간에 위치

뷰 스페이스 (View / Camera Space)

  • 카메라 기준 좌표계
  • 카메라가 원점

가상카메라를 기준으로 물체들을 보여주는데, 이 가상카메라에 회전값이 있거나 하면 투영할 때 등 번거로워진다.

그래서 카메라를 원점으로 이동, z축 바라보게 돌리고, 물체들도 똑같이 이동, 회전해준다. 이 상태를 뷰스페이스라 함.

백페이스 컬링 / 후면 추려내기(Back-Face Culling)

  • 카메라를 등지고 있는 면 제거
  • 성능 최적화 단계
  • 보이지 않는 면은 그리지 않는다

시계방향 또는 반시계방향으로 연결된 폴리곤을 출력할 때,

보이지 않는 뒷면은 출력하지 않아도 되니 거꾸로 연결된 폴리곤은 출력에서 제외하여 성능을 향상시킨다.

뷰스페이스로 시점을 정의했다는 것에 주의.

조명 (Lighting)

  • 표면의 밝기와 색상 계산

클리핑 (Clipping)

  • 뷰 프러스텀 밖의 기하 제거

카메라의 시야각을 벗어난 물체는 안그리거나 일부만 보이게 해야한다.

투영 (Projection)

  • 3D → 2D 변환
  • 깊이 값 생성

3D공간을 2D모니터로 투영해야 한다.

n차원 공간을 n-1차원 공간으로 변환하는 것을 투영이라 함.

 

원근투영에서 원근감을 나타내기 위해 z축 나누기를 한다.

z축나누기를 하는 시점은 뷰행렬에서 투영행렬로 변환한 뒤 해준다.

뷰포트 변환 (Viewport Transform)

  • 정규화된 좌표 → 화면 좌표
  • 실제 픽셀 위치 결정

윈도우 좌표계로 변환.

창모드일 경우 창에 위치에 따라 변경될 수 있으니 처리해줘야 함.

레스터라이즈 (Rasterization)

  • 삼각형 → 픽셀 변환
  • GPU 파이프라인의 핵심 단계

각 삼각형(폴리곤)을 그릴 때 필요한 픽셀 컬러를 계산하는 과정.

작업량이 엄청나므로 그래픽카드가 해준다.