✏️ 포스팅 목적

유니티 그래픽스 최적화 스타트업(오지현 저) 책을 보면서 최적화를 수행할 때 기본적인 렌더링 파이프라인의 이해가 필요하다고 생각했다. 이 책에서 나왔던 내용들을 정리해보는 시간!

렌더링 파이프라인이란? 🧐

렌더링 파이프라인을 간단히 이야기하면, ‘3D 이미지를 2D래스터 이미지로 표현하기 위한 단계적인 방법’ 을 의미합니다.

렌더링의 진행 순서는 어떻게 될까? 🧐

  1. 렌더링 파이프라인에 진입 전 CPU에서 필요한 연산을 처리.
  • 위치 정보, 애니메이션 정보 등이 바뀔 때 마다 메시의 버텍스에 모두 반영하는 연산이 필요함.
  • 컬링 연산: 렌더링이 필요하지 않은 오브젝트들을 선별하는 과정.
  1. 월드 - 뷰 - 프로젝션
  • 로컬 스페이스: 3D 공간의 특정 위치가 반영되지 않는 원점 기준의 메시 모델에 대한 위치 데이터가 존재하는 공간.
  • 월드 트랜스폼: 로컬 스페이스에 있는 모델들을 실제 3D 공간(월드 스페이스)상의 특정 위치에 위치 시키는 과정.
  • 뷰 트랜스폼: 카메라를 통해서 디스플레이가 되기 때문에 그리고 카메라 또한 고유의 위치와 방향을 가지고 있어서 오브젝트들을 카메라에 상대적인 위치로 변환해주는 과정.
  • 프로젝션: 3D 공간을 2D 상의 위치로 매칭시켜주는 과정.
  1. 레스터라이제이션: 렌더링하는 메시가 화면에 매칭되는 픽셀을 결정하고 최종 색을 입히는 과정.(폴리곤 -> 픽셀)

버텍스 쉐이더는 무슨 역할을 할까? 🧐

  • 라이팅 처리
  • 트랜스폼 처리(월드-뷰-프로젝션 트랜스폼)

버텍스 쉐이더에서 메시의 버텍스에 행렬을 곱해줌으로써 수행됩니다. 즉, 버텍스 쉐이더에서는 메시의 버텍스들이 적절한 위치에 있도록 변환하는 역할을 수행하는 것입니다.

  1. 버텍스를 적절한 위치에 있도록 변환.
  2. 특수한 효과를 위한 왜곡 수행.
  3. 노멀 및 컬러 결정.
  4. 라이팅

픽셀 쉐이더는 무슨 역할을 할까? 🧐

  • 픽셀들의 최종 렌더링 색을 계산.
  • 텍스처로부터 색상을 읽어와 적용.
  • 그림자 적용.

Z 버퍼란? 🧐

  • 픽셀의 깊이값(카메라로부터의 거리)을 저장.
  • Z 버퍼에 저장된 픽셀의 깊이를 비교하여 픽셀의 렌더링 여부를 판단.
  • 일반적 상황에서 렌더링하려는 픽셀이 Z 버퍼에 저장된 픽셀보다 앞에 있어야 렌더링을 함.
  • 가려지는 것들을 그리지 않음으로써 비용을 절감할 수 있음.

더블 버퍼링란? 🧐

  • 두 개의 버퍼를 번갈아가면서 렌더링한 후 화면에 보여주는 방식.
  • 하나의 버퍼가 보여지는 동안 다음에 보여줘야 할 것을 다른 버퍼에 미리 렌더링을 한 후 교체.