Rendering Pipeline
카테고리: Graphics
태그: DirectX
홍정모님의 그래픽스 새싹코스 강의를 듣고 정리한 내용입니다.
🐥 Vertex Buffer
- Vertex Buffer에 vertex 정보 담기
- Vertex마다 Position, Normal, Color, UV coord 등의 정보를 담고 있음
🐥 Input Assembler
- 렌더링 파이프라인에서 어떤 물체를 그릴 때에는 그림과 같이 삼각형 단위로 그려진다
- 이때 인접한 삼각형끼리 중복되는 vertex가 존재
- 삼각형마다 vertex 정보 넘겨주면 매우 비효율적
- 따라서 vertex마다 index를 지정 후에 index 정보를 넘겨줌
- Index 정보와 Topology(그리는 순서)를 지정해주면 훨씬 효율적인 방법으로 렌더링 가능
🐥 Vertex Shader
- Object space에 존재하는 vertex 정보들을 변환해주는 작업
- Object spacedptj World space로 변환
- Camera space(orthographic or perspective) 변환
- NDC 변환
- Viewport 변환 (ex. 창의 왼쪽 절반에다만 렌더링 하고싶다)
🐥 Tessellation
Tessellation | LOD |
---|---|
- Tessellation 단계에서는 메시의 폴리곤이 더 잘게 쪼개지거나 합쳐진다
- 하드웨어 단에서 작업
- Level Of Detail(LOD)와 같은 최적화에 사용됨
🐥 Rasterization
- 오브젝트가 그려질 픽셀들 결정
- Bounding Box 구한 뒤 필셀마다 포함되는지 안 되는지 판단
🐥 Pixel Shader (Fragment Shader)
- Color 정보는 vertex마다 가지고 있음
- 하지만 주어진 vertex가 아닌 픽셀들의 color 값도 결정해야 함
- 해당 작업을 해주는 것이 Pixel Shader
🐥 Output Merge Stage (Blending)
Depth Test | Ray Tracing |
---|---|
- Depth test를 통해 같은 픽셀을 여러 번 계산하는 overdraw 방지
- Ray Tracing을 이용한 후처리 등등..
댓글 남기기