본문 바로가기
Engine/Unity

Unity Render Pipeline(URP와 Built-in RP 차이)

by 뇌 속의 통 2024. 10. 24.

렌더링 파이프 라인이란?

화면에 객체들을 Rendering하는 과정들이라고 보면 된다.

 

게임 속 세상은 3D이지만 이를 우리는 2D 모니터를 통해 보기 때문에 3D를 2D로 바꿔주는 과정이 필요한데

이는 단순하지 않고 많은 양의 코드를 필요로 하므로 렌더링 파이프라인이라 부르는 것이다.

 

Unity의 기본 Render Pipeline은 Built-in RP(Legacy)라고 한다.

기본 렌더링 파이프라인은 직접적으로 프로그래머가 조정할 수 있지 않으며 간접적으로 Hooking과정(Command Buffer, Callback)에서 접근 가능하다.

이 같은 특징 때문에 원하는대로 수정이 불가한 큰 단점을 가지고 있다.

 

-> 하고 싶은 대로 수정이 불가하다 즉, 각 분야별로 필요로 하는 최적화가 다를 텐데 이를 모두 만족시킬 수 없다는 의미다.

 

 그래서 이를 보완하여 나온 것이 SRP(Scriptable Render Pipeline)이다.

C# 코드를 통해 Render Pipeline을 직접 짜는 것이다.

그러나 직접 RP를 짜는 것은 그래픽스 지식이 매우 깊은 사람들만 가능하기 때문에 인력, 비용 등 사용하는데 부담이 발생한다.

 

그래서 유니티에서는 SRP의 템플릿(URP, HDRP)을 제공하여 사용자가 주어진 환경에서 일부 수정하여 사용하도록 권장하므로써 해결하고자 하는 것이다.

URP : Universal Render Pipeline(범용 렌더 파이프라인)

HDRP : High-Definition Render Pipeline(고해상도 렌더 파이프라인)

LWRP : Light Weight Render Pipeline(경량 렌더 파이프라인 == URP의 옛말)

 

설명처럼 URP는 모바일, 도트와 같은 중저사양 게임용 HDRP는 영상용으로 사용된다.

URP는 기존의 Built-in RP에 비해 지속적인 업데이트가 되고 있으며, 셰이더 그래프 기능 등 장점이 많기 때문에 사용하는 것을 추천하는 바이다.

 

1. Draw Call

CPU가 GPU에게 Render를 요청하는 명령들을 말한다.

Draw Call이 많을 수록 성능이 떨어질 수 밖에 없으니 콜 수를 줄이는 것이 최적화를 위해 필요하다.

 

Built-in RP에서는 광원 하나당 한번의 Draw Call이 발생하는데, URP에서는 다수의 광원을 한 번의 Draw Call을 하여 성능을 향상시켰다.

 

2. Batching

동일한 Material을 사용하는 Object들의 Mesh를 한번에 그리는 것

Batching을 통해 한번에 그리면 Draw Call이 감소하고 성능이 향상된다.

다만 메모리를 더 사용한다.(내부적으로 하나의 Mesh로 묶는 연산을 수행하기 때문)

 

2D에서는 Atlas라고 하여 여러개의 Texture를 하나의 Texture로 합치는 방법으로 최적화를 해준다.

 

SRP Batcher에서는 동일한 Shader Variant를 사용하는 Mesh를 한번에 그릴 수 있다.

당연히 Shader가 SRP Batcher를 지원해야한다.

(Inspector 창에서 확인 가능하다.)

 

3. Post Processing

렌더링을 끝낸 화면에 후처리 효과를 주는 것

색 보정, 특수 효과, 안티 앨리어싱 등이 있다.

 

4. Upscale Sampling

해상도를 낮추면 성능이 향상된다.

쉬운 만큼 사용자들도 눈치채기 쉽다.

 

3D Scene은 저해상도, UI는 원래 해상도로 그리면 해상도가 낮아진걸 알기 어렵다.

3D Scene -> Render Texture에 저해상도로 Render -> 사용자의 화면 해상도에 맞게 Render Texture를 출력 -> UI는 기존 해상도로 출력

 

*Render Texture

실시간으로 카메라의 렌더링 결과를 업데이트 할 수 있는 Texture

URP에서는 Universal Render Pipeline Asset에서 Quality 탭의 Render Scale을 조절하면 된다.

 

'Engine > Unity' 카테고리의 다른 글

Unity Coroutine  (0) 2025.02.20
Unity Drag & Drop  (0) 2025.02.19
Unity MathF  (0) 2025.02.17
Unity Transform  (2) 2025.02.07
Unity Transform Component  (1) 2024.10.19