■ Built-in Render Pipeline (Legacy)
고사양 PC부터 저사양 모바일까지 원하는 만큼 다양한 플랫폼에 효율적으로 배포하기 위한 솔루션으로 개발되었음.
그래픽스 기능 조합을 지원하고 포워드 및 디퍼드 파이프라인과 함께 사용하기도 편리함.
하지만 지원 가능 플랫폼의 숫자가 늘어나면서 빌트인 렌더 파이프라인의 약점이 아래와 같이 점차 파악되어짐.
기존 렌더 파이프라인의 단점 |
1. 다량의 코드가 C++로 작성되어 있기 때문에 개발자의 수정 및 파악이 어려움 |
2. Render Flow와 Render Pass가 미리 구성되어 있음 |
3. 렌더링 알고리즘이 하드 코딩 되어있음 |
4. 커스터마이징에 제약이 없어 모든 플랫폼에서 우수한 성능을 구현하기 어려움 |
5. 렌더링 코드에 콜백이 노출되어 파이프라인에서 동기화 포인트가 트리거 된다. 이런 콜백으로 인하여 멀티스레딩 렌더링의 최적화 수준이 저해되고, 프레임의 어떤 지점에서든 C#을 호출하여 동적으로 상태를 주입 혹은 변경할 수 가 있게 된다. |
6. 데이터 캐싱으로 사용자 인젝션에 대한 지속성 상태를 관리하기가 어려워짐 |
■ 해결책: Scriptable Render-Pipeline (SRP)
SRP는 다음과 같은 장점으로 효율적인 멀티플랫폼 워크플로를 지원할 수 있도록 개발 되었음.
SRP의 장점 |
1. 고사양부터 저사양 기기에 이르기까지 최대한 많은 하드웨어 플랫폼에 맞게 지은적이며 안정적인 지원을 제공 |
2. C++이 아닌 C#을 사용하여 렌더링 프로세스를 커스터마이즈할 수 있도록 함. C#을 사용하면 모든 변경에 대해 새로운 실행 파일을 컴파일할 필요가 없음. · 렌더 패스 및 렌더링 컨트롤 뿐만이 아니라 Shader Graph처럼 아티스트에게 익숙한 툴로 생성할 수 있는 HLSL 셰이더를 모두 제어하고 커스터마이즈할 수가 있음. · 셰이더를 통해 하위 수준 API와 엔진 레이어 추상화에도 액세스할 수 있음. ![]() |
3. 아키텍처의 변화를 지원할 수 있는 유연성을 제공함. |
4. 많은 플랫폼에서 적절한 성능을 내는 선명한 그래픽스를 만드는 데 필요한 유연성을 제공함 |
5. 고급 사용자는 SRP를 새로 생성하거나 HDRP 또는 URP를 수정할 수 있음. 그래픽스 스택은 오픈 소스이며 아래 링크에서 사용 가능 (https://github.com/Unity-Technologies/Graphics) |
■ URP를 선택해야 하는 이유
특징 | 설명 |
다양한 사용자의 액세스 지원 | 아티스트와 TA 모두 설정할 수 있으며, 뛰어난 유연성 덕분에 프로토타이핑 뿐만이 아니라 게임 정식 제작용으로 렌더링 기법을 개선하는 데에도 사용 할 수 있음. |
확장 및 커스터마이징 | · 사용자가 기존 기능을 수정하고 파이프라인을 새 파이프라인으로 확장할 수 있도록 함. 따라서 상급 사용자에게는 믿을 수 있는 옵션이 됨. · 하위 수준 렌더링 API는 성능을 고려해 C++로 작성되지만, URP 개발자는 렌더 파이프라인 중 간단한 C# 스크립트만 작성하면 성능 저하 없이 높은 수준의 커스터마이즈를 할 수 있음. |
다양한 렌더링 옵션 | · 포워드, 포워드+, 디퍼드 렌더링 경로를 지원하는 Universal Renderer와 2D Renderer를 제공함. · 이러한 렌더러는 추가 기능 및 Scriptable Render Pass를 사용하여 확장할 수 있음. · 오브젝트 렌더링 기능은 렌더링 파이프라인의 다양한 이벤트에서 특정 레이어 마스크로부터 오브젝트를 렌더링하는 데 사용됨. 이러한 오브젝트를 렌더링할 때 머테리얼 및 기타 렌더 상태를 오버라이드할 수도 있어, 코드를 작성하지 않고도 렌더링을 커스터마이즈할 수 있다. 또한 특정 요구 사항에 맞춰 커스텀 렌더러를 통해 URP를 확장할 수 있다. · 렌더 그래프 시스템을 사용하면 프레임 렌더링에 사용되는 다양한 버퍼에 액세스하고 이를 조작할 수 있으며, 렌더러 기능 워크플로를 사용하면 렌더 파이프라인의 어느 단게에서든 렌더 그래프를 추가할 수 있다. |
탁월한 성능 |
URP는 다양한 기기에서 강력한 성능을 제공하고 정확도와 프레임 속도 간의 균형을 조정할 수 있는, 아래와 같이, 다양한 툴을 제공한다. |
[특징] 1. 실시간 조명을 매우 효율적으로 계산한다. · Forward Rendering 같은 경우 싱글 패스에서 모든 조명을 계산하고, · Forward+ Rendering은 오브젝트 단위 대신 공간을 분류해 광원을 컬링하여 표준 포워드 렌더링보다 더 나은 품질을 보여준다. 이 방식을 사용하면 프레임을 렌더링할 때 전반적으로 더 많은 광원을 활용할 수 있다. · Deferred Rendering에서는 Native RenderPass API를 지원하여 G-Buffer와 조명 패스가 싱글 렌더 패스로 결합될 수 있도록 한다. 2. 메시를 드로우할 때 CPU 및 GPU 성능이 개선된다. · SRP Batcher를 사용하면 드로우 콜을 줄이고 뎁스 처리 방식을 개선할 수 있으며, GPU 상주 드로어와 오클루전 컬링을 사용하면 일부 씬에서 드로우 콜을 크게 줄일 수 있다. 3. 모바일 기기에서 타일 메모리를 더 효율적으로 사용할 수 있다. 따라서 전력 소비량이 줄고 배터리 수명도 길어지므로 플레이 세션이 연장될 수 있다. 4. 통합 포스트 프로세싱 스택을 포함하여 빌트인 렌더 파이프라인에 비해 높은 성능을 제공한다. Volume Framework를 사용하면 코드를 작성하지 않고도 카메라 위치 기반의 포스트 프로세싱 효과를 만들 수 있다. 5. 다른 주요 툴과 호환 · Shader Graph, VFX Graph, Rendering Debugger 같이 아티스트와 TA에게 익숙한 툴을 지원한다. 6. 2D Rendering · 고급 2D 조명, 그림자, 포스트 프로세싱 효과를 지원하여 성능을 그대로 유지하면서 2D 게임의 화질을 향상할 수 있다 |
■ 참고
Unity 고급 사용자를 위한 유니버설 렌더 파이프라인 소개(Unity 6 에디션) | Unity
이 가이드는 숙련된 Unity 개발자와 테크니컬 아티스트가 Unity 6의 URP(유니버설 렌더 파이프라인)를 활용해 최대한 효율적으로 개발하는 방법을 안내합니다.
unity.com
'개발 (Game) > Unity (General)' 카테고리의 다른 글
[Unity] Lightmapping (1) | 2025.04.14 |
---|---|
[Unity] URP Asset: Lighting, Shadows (0) | 2025.04.14 |
[Unity] 사운드 출력기기 전환에 따른 이슈. (0) | 2025.02.01 |
[Unity] TMP폰트 관련 메모리 최적화 (0) | 2025.02.01 |
[Unity] 메모리 최적화를 위한 에셋 관리 (2) | 2024.09.29 |