✏️ 포스팅 목적
유니티 그래픽스 최적화 스타트업(오지현 저) 책을 보면서 최적화를 수행할 때 기본적인 렌더링 파이프라인의 이해가 필요하다고 생각했다. 이 책에서 나왔던 내용들을 정리해보는 시간!
렌더링 파이프라인이란? 🧐
렌더링 파이프라인을 간단히 이야기하면, ‘3D 이미지를 2D래스터 이미지로 표현하기 위한 단계적인 방법’ 을 의미합니다.
렌더링의 진행 순서는 어떻게 될까? 🧐
- 렌더링 파이프라인에 진입 전 CPU에서 필요한 연산을 처리.
- 위치 정보, 애니메이션 정보 등이 바뀔 때 마다 메시의 버텍스에 모두 반영하는 연산이 필요함.
- 컬링 연산: 렌더링이 필요하지 않은 오브젝트들을 선별하는 과정.
- 월드 - 뷰 - 프로젝션
로컬 스페이스
: 3D 공간의 특정 위치가 반영되지 않는 원점 기준의 메시 모델에 대한 위치 데이터가 존재하는 공간.월드 트랜스폼
: 로컬 스페이스에 있는 모델들을 실제 3D 공간(월드 스페이스
)상의 특정 위치에 위치 시키는 과정.뷰 트랜스폼
: 카메라를 통해서 디스플레이가 되기 때문에 그리고 카메라 또한 고유의 위치와 방향을 가지고 있어서오브젝트들을 카메라에 상대적인 위치로 변환
해주는 과정.프로젝션
: 3D 공간을 2D 상의 위치로 매칭시켜주는 과정.
레스터라이제이션
: 렌더링하는 메시가 화면에 매칭되는 픽셀을 결정하고 최종 색을 입히는 과정.(폴리곤 -> 픽셀)
버텍스 쉐이더는 무슨 역할을 할까? 🧐
- 라이팅 처리
- 트랜스폼 처리(월드-뷰-프로젝션 트랜스폼)
버텍스 쉐이더에서 메시의 버텍스에 행렬을 곱해줌으로써 수행됩니다. 즉, 버텍스 쉐이더에서는 메시의 버텍스들이 적절한 위치에 있도록 변환하는 역할을 수행하는 것입니다.
- 버텍스를 적절한 위치에 있도록 변환.
- 특수한 효과를 위한 왜곡 수행.
- 노멀 및 컬러 결정.
- 라이팅
픽셀 쉐이더는 무슨 역할을 할까? 🧐
- 픽셀들의 최종 렌더링 색을 계산.
- 텍스처로부터 색상을 읽어와 적용.
- 그림자 적용.
Z 버퍼란? 🧐
- 픽셀의 깊이값(카메라로부터의 거리)을 저장.
- Z 버퍼에 저장된 픽셀의 깊이를 비교하여 픽셀의 렌더링 여부를 판단.
- 일반적 상황에서 렌더링하려는 픽셀이 Z 버퍼에 저장된 픽셀보다 앞에 있어야 렌더링을 함.
- 가려지는 것들을 그리지 않음으로써 비용을 절감할 수 있음.
더블 버퍼링란? 🧐
- 두 개의 버퍼를 번갈아가면서 렌더링한 후 화면에 보여주는 방식.
- 하나의 버퍼가 보여지는 동안 다음에 보여줘야 할 것을 다른 버퍼에 미리 렌더링을 한 후 교체.