렌더링 파이프라인은 게임 상의 3D 월드를 2D 화면으로 출력하는 방법이다.
과정
로컬 스페이스 → 월드 스페이스 → 뷰 스페이스 → 후면 추려내기 → 조명 → 클리핑 → 투영 → 뷰포트 → 래스터라이즈
로컬 스페이스 : 물체를 표현할 때 기준이 되는 좌표계이다. 자체 좌표계를 이용한다. (월드 고려 X)
월드 스페이스 : 물체의 로컬 좌표를 월드상의 좌표로 변환한다.
뷰 스페이스 : 카메라를 월드 상의 원점으로 삼고, 카메라를 기준으로 물체들이 회전하는 영역이다.
후면 추려내기 : 일반적으로 카메라는 폴리곤의 후면을 볼 수 없기 때문에 불필요한 후면 폴리곤을 잘라내서 렌더링에서 제외한다.
조명 : 광원은 월드 스페이스 내에 정의되지만 뷰 스페이스 변환 시 변환된다. 물체에 명암을 추가한다.
클리핑 : 화면에 보이지 않는 부분을 잘라내서 렌더링에서 제외한다.
투영 : 3차원에서 2차원 표현을 얻는다. 원근 투영을 이용해 원근법을 적용한다. 인터페이스같이 원근법이 적용되지 않는 경우는 직교 투영을 이용한다.
뷰포트 : 프로젝트 윈도우의 좌표를 화면으로 변환한다. 윈도우 좌표를 이용한다.
래스터라이즈 : 폴리곤을 픽셀로 변경하는 과정이다.
'C++' 카테고리의 다른 글
더블 버퍼링과 스왑 체인 (0) | 2020.02.17 |
---|---|
게임에 디자인 패턴 적용하기 (0) | 2020.02.17 |
정적 바인딩, 동적 바인딩, 가상 함수 테이블 (0) | 2020.02.16 |
BFS 구현 (큐) (0) | 2020.02.16 |
DFS 구현 (재귀, 스택) (0) | 2020.02.16 |