기본 패턴
text
vertex
-> primitive assembly
-> rasterization
-> fragment
-> depth / blend설명
- 렌더링 파이프라인은 "모델 데이터를 어떻게 화면의 픽셀로 바꾸는가"의 큰 흐름입니다. 점(point), 선(line), 면(face), 폴리곤(polygon) 같은 기하 표현이 vertex 처리와 조립 과정을 거쳐 최종 이미지로 바뀝니다.
- 초반 학습에서는 fixed-function pipeline과 programmable pipeline을 함께 구분해 두는 편이 좋습니다. 과거에는 많은 단계가 고정되어 있었지만, modern graphics에서는 vertex/fragment 같은 단계에서 shader로 제어 가능한 범위가 커졌습니다.
- 그래도 모든 단계가 shader로만 설명되지는 않습니다. primitive assembly, clipping, rasterization, depth/blend처럼 상태와 파이프라인 규칙이 강하게 작동하는 구간이 있으므로, 문제를 볼 때 "셰이더 버그인가, render state 문제인가"를 나누는 습관이 중요합니다.
- 이 흐름을 알면 그래픽 버그를 더 잘 분리할 수 있습니다. 모델이 뒤집혀 보이면 winding/culling을, 반투명이 이상하면 blend 순서를, 물체가 가려지지 않으면 depth test를, geometry가 아예 사라지면 clip space나 near/far plane을 먼저 의심할 수 있습니다.
- 또한 real-time rasterization pipeline과 ray tracing pipeline은 철학이 다릅니다. 오늘날 게임 엔진은 둘을 섞어 쓰기도 하지만, 기본 mental model은 여전히 rasterization 흐름 위에서 출발하는 경우가 많습니다.
- 이 카드는 API 사용법 카드라기보다, 엔진 디버깅에서 "지금 문제는 geometry 단계인가, fragment 단계인가, depth/blend 단계인가"를 구분하는 기준 카드에 가깝습니다.
빠른 정리
| 단계 | 역할 |
|---|---|
| geometry terms | 점, 선, 면, 폴리곤처럼 기본 표현 단위를 이해한다 |
| vertex processing | 정점 위치와 속성을 처리한다 |
| primitive assembly | 점·선·삼각형을 구성한다 |
| rasterization | 화면의 fragment 후보를 만든다 |
| fragment stage | 픽셀 후보의 색과 속성을 계산한다 |
| depth / blend | 최종적으로 보일지, 어떻게 섞일지 결정한다 |
주의할 점
파이프라인을 이해할 때는 API 이름보다 데이터 흐름을 먼저 잡는 편이 좋습니다. "이 데이터가 언제 정점이고 언제 픽셀 후보가 되는가"를 이해하면, 셰이더와 material과 render state의 역할이 훨씬 명확해집니다.
참고 링크
2 sources