렌더링 파이프라인이란 무엇인가?
렌더링 파이프라인이란?
그래픽스 파이프라인이라고도 불리며 3D 컴퓨터 그래픽스에서 3차원 도형 혹은 이미지를 2차원 래스터 이미지로 표현하기 위한 단계적인 방법이다.
래스터 이미지란 컴퓨터에서 어떠한 도형 혹은 이미지를 픽셀로 구성하고 조합하여 일정한 간격으로 나열하여 하나의 화면을 표현하는 것을 의미한다.
렌더링 파이프라인 과정
DirectX9 기준 렌더링 파이프라인
입력 조립(Input Assembly)
↓
정점 쉐이더(Vertex Shader)
↓
래스터 라이저(Rasterize)
↓
픽셀 쉐이더(Pixel Shader)
↓
출력 병합(Output Merger)
DirectX11 기준 렌더링 파이프라인
입력 조립(Input Assembler) : 정점 정보를 정점 버퍼에 담아 전달 받음
↓
정점 쉐이더(Vertex Shader) : 정점 버퍼를 받아 공간 변환을 수행 /
Local Space → World Space → View Space → Clip Space
Model View Projection
World Transform View Transform Projection Transform
↓
테셀레이션 (Tesselation) = Hull Shader + Tesselator + Domain Shader : 정점을 쪼개 디테일하게 표현 (생략 가능)
준비단계 삼각형을 쪼갬 쪼갠것을 세분화
↓
기하도형 쉐이더 (Geometry Shader) : 정점 데이터에 정보를 추가하거나 삭제. 다른 도형으로 확장 또는 출력 여부
↓
래스터 라이저(Rasterize) : 투영된 3차원 삼각형으로 부터 픽셀의 색상을 계산하는 단계,
앞면 출력하고 뒷면을 추려낸 후 뷰포트 변환한다.
↓
픽셀 쉐이더(Pixel Shader) : 픽셀 데이터를 생성하는 단계. 조명, 반사 그림자 및 텍스쳐를 입혀 색칠할 수 있다.
↓
출력 병합(Output Merger) : 렌더타겟에 출력하는 단계. 후면 버퍼에 기록된다.
렌더링 파이프라인은 3D 작업물(모델 혹은 이미지)을 2D인 모니터까지 출력하기 위해서 거치는 과정들이라고 쉽게 생각하면 될거 같다. 작업물의 정점 정보를 받아서 공간 변환을 수행하고 그것을 컬링하여 어떻게 출력할지 정한 후 픽셀 단위로 추가적인 디테일을 더해 화면에 출력한다!
'Game Programming > 자문자답' 카테고리의 다른 글
참조 카운트란 무엇인가? (0) | 2022.09.15 |
---|---|
크리티컬 섹션이란 무엇인가? (0) | 2022.09.14 |
가비지 컬렉터와 스마트 포인터란 무엇인가? (2) | 2022.09.13 |
캐릭터 구현 시 상속을 통해서만 구현해야하는가? (0) | 2022.09.12 |
Call By Value / Address / Reference는 무엇인가? (0) | 2022.09.12 |