1. Rendering Pipeline
1.1 Tessellation
- 한 메시의 삼각형들을 더 잘게 쪼개서 새로운 삼각형들으 만드는 과정
- 새 삼각형들을 새로운 위치로 이동함으로써 좀 더 세밀한 메시를 만들어 낼 수 있음
1.1.1 Advantage
- 카메라의 가까운 삼각형들에게 테셀레이션을 적용하여 세부도를 높임
- 먼 삼각형들인 경우 테셀레이션을 적용하지 않는 방식의 LOD(level-of-detail) 메커니즘을 구현
- 위 메커니즘을 적용한다면 여분의 세부도가 실제로 눈에 띄는 부분에서만 삼각형들을 더 투여 가능
- 메모리에는 적은 수의 삼각형들로 이루어진 메시를 담아두고 즉석에서 삼각형들을 추가함으로써 메모리를 적용
- 애니메이션이나 물리 처리 같은 연산들은 단순한 저다각형 메시에 대해 수행
- 테셀리에션된 고다각형 메시는 렌더링에서만 사용함으로써 계산량을 줄일 수 있음
1.1.2 Tessellation
- Direct3D Tessellation은 GPU에서 기하구조를 테셀레이션하는 수단을 제공
- 테셀레이션 단계는 생략 가능한 단계므로 원할 때만 사용할 수 있음
1.2 Rasterization Stage & Rasterizer Stage
- 투영된 3차원 삼각형으로부터 픽셀 색상들을 계산
1.2.1 Viewport Transform
- 절단을 통해 하드웨어는 원근 나누기를 수행하여 동차 절단 공간 좌표를 정규화된 장치 좌표로 변환
- 2차원 이미지를 형성하는 2차원 x, y 좌표성분들을 후면 버퍼의 한 직사각형 영역으로 변환
1.2.2 후면 선별
- 하나의 삼각형에는 면이 두개가 존재 (법선과 같은 방향을 향한 면이 앞쪽 면 반대쪽 면이 뒤쪽 면)
- 앞쪽 면인 경우 시계 방향으로 감기고 뒤쪽 면인 경우 반시계 방향으로 감김
- 각 물체의 삼각형들은 항상 법선이 물체의 바깥쪽을 향하므로 카메라로 볼 경우 후면 삼각형들이 보이지 않음
- 전면 삼각형들이 후면 삼각형들을 가리므로 후면 삼각형을 그릴 필요X
- 따라서 처리해할 삼각형의 수가 절반으로 줄어듬
1.2.3 정점 특성의 보간
- 뷰포트 변환 이후 정점의 특성들을 삼각형을 덮는 각 픽셀에 대해 보간, 정점 특성들 뿐아니라 깊이 값도 보간
- 각 픽셀마다 깊이 버퍼링 알고리즘을 위한 깊이 값이 생성, 정점 특성들은 화면 공간에서 보간
- 삼각형의 면에 따라 보간되는 방식 (원근 보정 보간)
'C++ Algorithm & Study > Game Math & DirectX 11' 카테고리의 다른 글
[Direct11] 8. Direct3D API Interface & Function #1 (0) | 2023.06.14 |
---|---|
[Direct11] 7. Rendering Pipeline - Pixel Shader & Output Merger (PS & OM) (0) | 2023.06.13 |
[Direct11] 5. Rendering Pipeline - Vertex Shader (VS) (0) | 2023.06.13 |
[Direct11] 4. Rendering Pipeline - Input Assembler (IA) (0) | 2023.06.13 |
[Direct11] 3. Direct3D EX Application Framework (0) | 2023.06.12 |