유니티 렌더 파이프라인 Render Pipeline
Intro
오늘은 렌더 파이프라인(Render Pipeline)에 대해서 알아보겠습니다.
유니티에서 새로운 프로젝트를 만들 때, 아래사진과 같이 유니티가 제공하는 여러 템플릿들을 볼 수 있습니다.
렌더 파이프 라인이라는것은 게임 오브젝트의 렌더링(Rendering) 과정. 다시말해 우리가 보는 화면(씬)에 오브젝트를 그리는 과정을 제어하는 시스템입니다.
렌더 파이프 라인은 3D 모델의 표현, 그림자, 쉐이딩 등의 시각적 효과를 구현하는데 사용됩니다.
렌더 파이프라인
먼저, 렌더 파이프라인에서 데이터를 처리하는 과정을 간단히 나눠보면 다음과 같습니다.
실제로는 이보다 많은 과정을 거치며 플랫폼마다 다르지만, 이 세단계가 제일 핵심이 되는 과정입니다.
- 애플리케이션 스테이지
- 애플리케이션 스테이지는 애플리케이션 상에서 처리되는 단계입니다.
- 본격적인 렌더링 파이프라인 진입 전 CPU에서 필요한 연산들을 처리합니다.(캐릭터의 프레임마다의 움직임 등)
- 현재 프레임에서 렌더링 가능한 오브젝트들이 Culing 연산에 의해 구별됩니다.
- Culing 단계에서, 효율적으로 오브젝트들이 선별되어 렌더링 되는 오브젝트 수를 줄여, GPU에서 처리하는 연산량을 줄여주는 역할을 합니다.
- 지오메트리 스테이지
- 지오메트리 스테이지는 지오메트리를 구성하는 요소인 Vertex, Poligon 처리를 담당하는 단계입니다.
- 월드-뷰-프로젝션 트랜스폼
- 클리핑
- 버텍스 쉐이더와 같은 과정들을 거치게됩니다.
- 래스터라이저 스테이지
- 래스터라이저 스테이지는 오브젝트를 그리는 픽셀들을 추리고, 그 픽셀의 Color를 결정합니다.
- 버텍스 쉐이더를 거쳐, 지오메트리들이 구축되면 화면(또는 버퍼)의 어느 픽셀에 그려져야하는지 결정됩니다.
- 메시의 폴리곤에 속한 영역을 픽셀로 매칭시키는 과정을 래스터라이제이션이라고 부르는데,
- 이 래스터라이제이션이 끝나면 최종적으로 화면에 그려져야 할 픽셀의 최종 색이 결정됩니다.
유니티에서는 2019 이후의 버전부터 4가지의 파이프 라인을 제공하고 있습니다.
Built-in Render Pipeline
빌트인 렌더 파이프라인은 유니티의 기본 렌더 파이프라인으로 범용으로 사용되던 렌더 파이프라인이므로 커스터마이즈 옵션이 제한적입니다. 현재는 URP의 등장으로 잘 사용되지 않으나 호환성 유지를위해 제공되고 있습니다.
Universal Render Pipeline(URP)
유니버설 렌더 파이프라인(URP)은 쉽고 빠르게 커스터마이즈할 수 있는 파이프라인으로, 모바일과 PC를 비롯한 다양한 플랫폼에서 사용되고 있습니다.
가벼운 구조와 쉬운 확장성으로 모바일 게임과 멀티 플랫폼 게임등 그래픽적 요구사항이 낮은 게임에 사용되는 파이프라인입니다.
High Definition Render Pipeline(HDRP)
고해상도 렌더 파이프라인(HDRP)은 스크립터블 렌더 파이프라인(SRP)으로, 하이엔드나 PC 콘솔등을 고려해서 고품질 고해상도의 비주얼 구현에 적합한 파이프라인입니다.
포워드 렌더링, 디퍼드 렌더링을 모두 지원하며 컴퓨터 쉐이더 기술과 GPU 하드웨어를 사용합니다.
기본적으로 요구되는 하드웨어 스펙이 높아 모바일 게임용으로는 적합하지 않습니다.
Scriptable Render Pipeline(SRP)
스크립터블 렌더 파이프라인(SRP)은 유니티 엔진의 렌더 파이프라인을 사용자가 직접 제어하고 정의 할 수 있도록 해주는 파이프 라인입니다.
이를 사용하면 사용자가 자신만의 렌더 파이프 라인을 커스터마이즈하여 사용할 수 있습니다.
파이프 라인에 대한 지식이 있다면 내 게임에 필요한 부분만 제어하여 최적화 할 수 있습니다.
댓글남기기