렌더링 파이프라인이란, 3차원으로 만들어진 모델을 2차원, 즉 모니터에 투영되는 렌더링 과정을 뜻한다.
]: Rendering pipeline
}: Input Assebler
정점의 Primitive를 가져오는 과정이다.
}: Vertex Shader
1. 가져온 각 정점에 대해 Local 공간에서 Scale, Rotate, Translate 순으로 변환을 진행한다.
2. 월드공간으로 변환한다. ( Model )
3. 카메라 공간으로 변환한다. ( View )
4. 클립 공간으로 변환한다. ( Projection )
- 이런 공간으로 바꿔버린다고 생각하면 된다. 이 때 동차좌표는 Z값을 저장한다.
5. NDC 공간으로 변환한다. ( 클립공간에서의 정점 좌표를 동차좌표로 나눔 )
- NDC공간은 3차원으로 (-1,-1,0) ~(1,1,1) 좌표를 가지고 있다.
- Clipping : 이 공간에 들어 있지 않은 Polygon(면)을 제거한다.
}: Tesselation, Geometry Shader
추가적으로 정점을 생성할 수 있는 단계
}: Rasterization
1. 뷰포트변환 : 기존 NDC 좌표계를(0,0) ~ (1,1) 뷰포트 공간으로 변환.
2. 스캔 변환 : 뷰포트 공간에서의 도형(fragment)들이 어떤 픽셀들을 채우는 지 알아내고, 각 픽셀마다 정점 데이터를 보간하여 할당한다 (UV, 위치, 노멀 ....).
}: Pixel Shader
1. 각 픽셀에 대해 Texture, Lighting, Shadow등 여러가지 방법으로 색을 결정한다.
2. Z-Buffer Test : 픽셀의 깊이를 비교하여, 더 가까운 경우 Z-Buffer에 갱신하고 파이프라인을 이어가며, 아닐 경우, 파이프라인을 종료한다.