반응형
그래픽스 파이프라인이란?
3D 컴퓨터 그래픽스에서 그래픽스 파이프라인(Graphics Pipeline) 이란 3차원의 도형 혹은 이미지를 2차원 래스터 이미지로 표현을 하기 위한 단계적 방법(방법을 몇 단계로 나눈 것)을 의미한다. 래스터(raster)는 컴퓨터에서 어떤한 도형 혹은 이미지를 픽셀로 구성하고, 이 점들의 모습을 조합, 일정한 간격의 픽셀들을 나열하여 하나의 화면을 표현하는것을 의미한다. OpenGL과 Direct3D가 3차원 그래픽 표준이며, 비슷한 그래픽스 파이프라인을 가지고 있다. 다른 단어로, 렌더링 파이프라인 (Rendering Pipeline) 이라고도 한다.
그래픽스 파이프라인 각 단계 설명
- Input Assembler (입력 어셈블러)
- 저장된 버퍼에서 원시 Vertex 데이터를 수집하고, Index 버퍼를 이용하여 Vertex 의 복제나 중복을 막는다
- Vertex Shader (버텍스 셰이더)
- 모든 Vertex 위치를 Model Matrix에서 View Matrix → Projection Matrix로 변환하는 작업을 한다
- Matrix 변환 과정에서 임의로 변형이 가능하다
- Geometry Shaer (지오메트리 셰이더) : 생략 가능
- Vertex Shader에서 생성되지 않은 임의의 점, 선, 삼각형 생성 및 수정할 수 있는 셰이더
- 예를 들어, 실제 객체로 생성한 캐릭터의 모양을 바꿔보이게 (실제로는 바뀌지 않음) 하거나, 실제 객체로는 존재하지 않지만, 눈에 보이는 도형을 그릴 수 있다
- Rasterization (래스터화)
- Vertex Shader와 Geometry Shader를 지난 도형이 픽셀로 변경되는 것을 의미한다
- Vertex 사이에 공간이 존재할텐데 그 부분은 보간 작업을 통해 알맞은 픽셀이 표시가 된다 (보간 = 두 데이터의 평균 혹은 중간값으로 처리하는 방법 = 도울 보, 사이 간)
- 이 단계에서는 색깔이 표현되지 않음
- Fragment Shader (프래그먼트 셰이더) = Pixel Shader
- Rasterize 된 픽셀들에 색을 부여하는 단계
- Vertex Shader에 보간된 데이터를 통해 색을 표현하거나, 텍스쳐 좌표(UV), Normal Mapping 등을 이용
* Matrix 란? 공간을 의미한다. Model Matrix는 모델이 놓여진 3D 공간, View Matrix는 3D 공간 내에서 카메라가 보는 공간, Projection Matrix는 카메라 센서에 투영되는 2D 공간을 의미한다.
그래픽스 파이프라인 프로그래밍 단계
OpenGL 및 Direct3D와 같은 이전 API를 사용했다면, glBlendFunc, OMSetBlendState 메서드 호출로 임의의 파이프라인을 설정할 수 있다. 최근에 생긴 Vulkan의 경우, 그래픽스 파이프라인은 변경할 수 없으므로, 셰이더를 변경하거나, 파이프라인을 새로 만들어야 한다. 파이프라인을 새로 만드는 수고를 하고서라도 Vulkan 사용의 장점은 모든 그래픽스 파이프라인을 확인할 수 있으므로, 극한의 최적화를 할 수 있다.
728x90
'3D Graphics' 카테고리의 다른 글
3D 그래픽스 - 솔리드 모델링(Solid Modeling)이란? (+ CSG, B-Rep) (0) | 2020.07.14 |
---|---|
3D 그래픽스 - 누구든지 하는 VR, AR 공간 (0) | 2020.06.26 |
3D 그래픽스 개념 - Point Light, Spot Light (0) | 2018.12.20 |