1. Renderring Pipeline
렌더링 파이프라인은 3D 세계에 대한 기하학적 표현과 이 세계를 바라보는 관점을 정의하는 가상 카메라를 이용해 2D 이미지를 만들어내는 역할을 수행한다.
2. 과정
2.1. 로컬 스페이스
- 로컬 스페이스: 물체의 삼각형 리스트를 정의하는데 이용하는 좌표 시스템
2.2. 월드 스페이스
- 로컬 스페이스의 오브젝트를 월드 좌표로 옮겨 하나의 장면을 구성함
- 월드 변환이 이루어짐(이동, 회전, 크기변형)
2.3. 뷰스페이스
- 유저의 워치가 되는 카메라를 원점으로 좌표계를 변형
- 월드에 대한 관점이 바뀌지 안호록 하기 위해 카메라에 맞춰 월드 내의 모든 기하 물체를 변환하는 과정(뷰스페이스 변환)을 거침
2.4. 컬링(backface culling)
- 카메라에 보이지 않는 폴리곤을 렌더링 요소에서 제외하는 과정
- 폴리곤의 normal vector와 카메라의 forward vector를 내적한 값이 양수라면 컬링
2.5. 조명
- 광원을 통해 물체에 명암을 추가하여 사실감을 더해줌
2.6. 클리핑(clipping)
- 시야 볼륨 외부의 기하 물체를 렌더링에서 제외하는 과정
- 완전한 내부: 렌더링에 포함
- 완전한 외부: 렌더링에 제외
- 부분적 내부: 폴리곤을 두 부분으로 분리해 수행
2.7. 투영
- 3D 장면을 2D로 표현하는 과정
- 원근 투영: 카메라와 물체의 거리에 따라 크기를 결정해 투영하는 방법
2.8. 뷰포트 변환
- 윈도우 좌표라 불리는 화면의 직사각형으로 변환하는 과정
2.9. 래스터라이즈
- 각각의 폴리곤을 그리는 픽셀 컬러들을 계산하는 과정
- GPU에서 처리됨
2.10. 픽셀 쉐이더
- 쉐이더를 통해 색상을 변화시키는 모든 것
- 투명도, 라이팅, 그림자 적용, 텍스쳐 생상에 메시를 입히는 것 등
2.11. 출력 병합
- 화면에 출력하기 전 마지막으로 스텐실 테스트, 알파 블랜딩 등을 통해 픽셀의 최종적인 연산을 수행한 뒤 색상을 결정하는 과정