1. Rendering Pipeline

박재수 ㅣ 2023. 7. 1. 17:08

렌더링 파이프라인이란 ?

3차원으로 만들어진 공간을 2차원으로 투영하기 위한 과정이다.

Tessellation Stages는 DirectX 11부터 생긴 기능이고 Geometry Shader Stage는 DirectX 10부터 생긴 기능이다. 초록색으로 되어있는 과정이 조작(Programmable) 가능한 단계이다.

 

[ DirectX 9에서는 주황색과 초록색 부분을 건너 뛴다. ]

Input Assembler Stage : 어떤 정점들이 어떻게 연결되어 있는지 정점 정보를 전달해주는 단계이다.

Vertex Shader Stage : 정점 변환을 해주는 단계이다. 스키닝, 모핑, 조명 등등 고급 기법들이 들어갈 때 Vertex Shader에서 하게 된다.

[ Tessellation Stages, Geometry Shader Stage 둘다 정점을 추가하는 기능. 정점을 왜 추가할까? MMO게임에서 어떤 지형이 있다고 할 때 멀리 있는 지형은 폴리곤을 줄이고 가까이 있는 지형은 디테일하게 폴리곤을 늘릴 때.(Level Of Detail) ]

[ Tessellation Stages (DirectX 11부터 추가된 기능) ]

Hull Shader Stage : Tesselation 작업의 시작이다. DirectX9에서 VertexShader 는 World-View-Projection 변환을 수행하는 것이 가장 큰 목적이였지만, DirectX11에서 VertexShader 의 목적은 Hull Shader 로의 데이터를 전달하는 것이다. Hull Shader 에서는 '폴리곤을 어떻게 분할할 것인가?' 와 '폴리곤을 얼마나 분할할 것인가?' 를 결정한다.

Tessellator Stage : Hull Shader 의 결과를 입력으로 받아서 도메인 쉐이더( DomainShader )에 무게 중심 좌표( BarycentricCoordinates )들을 전달하게 된다.

Domain Shader Stage : HS(헐 셰이더) 단계  TS(분할기) 단계의 입력을 기반으로 출력 패치의 세분화된 지점의 꼭짓점 위치를 출력한다.

Geometry Shader Stage (DirectX 10부터 추가된 기능) : Tesselation Stages보다 조금 더 작은 단위.

Stream Output Stage : 지오메트리 쉐이더(geometry shader) 스테이지로부터의 버텍스 데이터를 메모리 상의 하나, 또는 이 이상의 버퍼에 연속적으로 출력하기 위한 것이다.

Resterizer Stage : 정점 데이터를 기반으로 픽셀로 변환하는 작업, 내부 점들을 보관하는 작업

Pixel Shader Stage : 색상변경을 강제로 해주는 단계

Output Merger Stage : 모든정보를 조합해서 최종 정보를 조합해주는 단계

 

자세한건 다음에 계속 알아보자.