렌더링 파이프라인
래스터(raster) : 화상 정보를 표현하기 위해 이미지를 2차원 배열 형태로 구성하는 것 렌더링 파이프라인 : 3차원 이미지를 2차원 래스터 이미지로 표현하기 위한 단계적인 방법
1. 어플리케이션 스테이지
- 뷰에 들어오더라도 실제로 사용하지 않는 객체는 제거하는 "컬링" - 비슷한 속성을 가진 오브젝트끼리 "배칭" 동적 배칭(Dynamic Batching) : 런타임 중에 객체의 속성이나 재질이 변경되지 않는 경우, 동적 배칭을 통해 이들을 묶어 처리할 수 있습니다. 정적 배칭(Static Batching) : 컴파일 중에 비슷한 속성과 재질을 가진 정적인 객체들은 사전에 배칭되어 메모리에 저장됩니다. 이후, 한 번에 모든 객체를 렌더링하기 위해 단일 드로우 콜로 GPU에 전송됩니다.
2. 지오메트리 스테이지
버텍스와 폴리곤 처리 버텍스 : 3D상에서의 한 점 좌표정보, 색상등의 정보를 가지고 있음 폴리곤 : 세 개 이상의 버텍스가 모여 형성버텍스 트랜스폼
월드 트랜스폼 : 모든 버텍스와 노멀을 월드좌표계로 옮김 뷰 트랜스폼 : 카메라 스페이스로 이동 시켜줌 프로젝션 : 2D상의 위치로 매칭버텍스 쉐이더
버텍스들을 처리하는 쉐이더, 위치와 컬러 결정지오메트리 생성
버텍스 쉐이더가 트랜스폼 결정 후 버텍스를 연결 한 도형이 만들어지는데, 이때 이 도형을 지오메트리라고 부른다
3. 레스터라이저 스테이지
메시의 폴리곤을 픽셀로 매칭시키는 과정을 래스터라이제이션(Rasterization)이라고 한다
뎁스 버퍼(Z 버퍼)
프래그먼트(픽셀) 쉐이더에서 결정 된 픽셀은 RGBA 외에도 픽셀과 카메라 거리를 저장하는데, 이때 저장되는 버퍼를 뎁스 버퍼라고 한다. 뎁스버퍼를 통해 뎁스테스트를 하게 되고 이 과정에서 필요없는 정보를 걸러낸다. 필요없는 정보는 가려진 픽셀, 투명한 픽셀, 거리에 따른 픽셀 제거, 렌더 타깃 제외 대상들이 해당한다.
렌더 루프
1. 로직 처리
업데이트, 입력 처리, 물리 처리2. 컬링 연산
뷰 프로스텀에 들어오지 않는 오브젝트는 제거3. 백버퍼에 씬 렌더링
버텍스 쉐이더와 프래그먼트 쉐이더를 거치며 각 오브젝트마다 드로우콜 발생4. 포스트프로세싱
블러, 깊이 효과, 색상 보정, 톤 매핑 등 포스트프로세싱 처리5. 프론트 버퍼와 백 버퍼 스왑
스왑해서 프론트 버퍼로 사용자에게 보여짐