SRP / URP / HDRP
SRP는 Unity의 스크립터블 렌더 파이프라인입니다. URP는 모바일·인디에, HDRP는 고사양 PC·콘솔에 맞습니다. 프로젝트 초기에 선택하고 Material 변환·Renderer Feature를 익히면 Built-in에서 현대 렌더링으로 안정적으로 이전할 수 있습니다.
상상해 보세요...
Built-in Renderer는 일반 가정용 주방 — 뭐든 요리할 수 있지만 전력을 낭비하고 최적화되지 않습니다. URP는 현대식 인덕션 — 빠르고 효율적이며 모바일·인디에 맞습니다. HDRP는 미슐랭 주방 — 디테일이 완벽하지만 고사양 하드웨어(PC/콘솔)가 필요합니다.
개념 자세히
SRP (Scriptable Render Pipeline): Unity 2018부터 C# API로 렌더 파이프라인을 커스터마이즈할 수 있습니다. 직접 쓰거나(custom SRP) 두 프리셋을 씁니다: URP와 HDRP.
URP (Universal RP): 예전 LWRP. 모바일, 웹, Switch에 맞춰졌습니다. Single-pass forward rendering과 2D Renderer. Shader Graph와 VFX Graph를 사용합니다. Built-in보다 낫지만 일부 고급 기능(레이트레이싱, 복잡한 포스트)은 빠집니다.
HDRP (High Definition RP): 고사양 PC/콘솔용. Ray Tracing, DLSS/FSR, Volumetric Lighting, Screen Space AO, Contact Shadows, Tessellation… GPU 부담이 크지만 비주얼은 최고입니다.
전환: 한 번 고르면 자유롭게 왔다 갔다 할 수 없습니다. Materials/Shaders를 갱신해야 합니다. 자동 마이그레이션은 Edit → Rendering → Materials → Convert…를 사용하세요.
기능 비교
| 기능 | Built-in | URP | HDRP |
|---|---|---|---|
| Shader Graph | ❌ | ✅ | ✅ |
| VFX Graph | ❌ | ✅ | ✅ |
| Ray Tracing | ❌ | ❌ | ✅ |
| Volumetric Lighting | ❌ | Partial | ✅ |
| 2D Renderer | ❌ | ✅ | ❌ |
| Mobile Support | ✅ | ✅ | ❌ |
| DLSS / FSR | ❌ | Partial | ✅ |
처음부터 pipeline을 고르세요 — 나중에 material/shader를 옮기면 수고롭고 pink shader가 잘 납니다.
실습 단계
프로젝트 생성 시 파이프라인 선택
Unity Hub → New Project → 템플릿 선택(3D Core = Built-in, URP, HDRP). 처음부터 결정하세요.
기존 프로젝트에 URP 추가
Package Manager → "Universal RP" 설치 → Assets/Create/Rendering/URP Asset → Project Settings → Graphics에 할당.
Material 변환
Edit → Rendering → Materials → Convert Selected/All Built-in Materials to URP.
Renderer Features 사용
URP Renderer → Add Renderer Feature(Outline, SSAO, Custom…) — Built-in의 Image Effects에 해당.
인터랙티브 시뮬레이터
Built-in / URP / HDRP 비교 — 타깃 플랫폼, 성능, 기능.
Target
모든 플랫폼 (레거시)
Performance
보통 — 최적화되지 않음
Visual
기본, 제한된 post-FX
// 구형 Shader (Built-in)
Shader "Custom/OldShader" {
SubShader { /* 구형 CG/HLSL */ }
}보는 중: Built-in Render Pipeline
코드 예제
기본Custom Renderer Feature — URP Renderer 에셋에 추가해 렌더 패스를 주입합니다.
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
// Custom Renderer Feature — add to a URP Renderer asset
public class OutlineRendererFeature : ScriptableRendererFeature
{
public OutlineSettings settings = new OutlineSettings();
private OutlineRenderPass _pass;
public override void Create()
{
_pass = new OutlineRenderPass(settings);
_pass.renderPassEvent = RenderPassEvent.AfterRenderingOpaques;
}
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
renderer.EnqueuePass(_pass);
}
}
[System.Serializable]
public class OutlineSettings
{
public Color outlineColor = Color.white;
[Range(0f, 10f)] public float outlineThickness = 2f;
}📌 빠른 정리
- ▸URP = 인디·모바일·2D에 적합
- ▸HDRP = AAA 그래픽, 고사양 PC/콘솔
- ▸파이프라인을 먼저 고르세요 — 이전이 어렵습니다!
- ▸SRP Batcher가 URP draw-call 성능을 올림
⚠️ 흔한 실수
❌ Built-in 셰이더가 URP에서 동작하지 않음
머티리얼이 마젠타(셰이더 누락)
✅ Materials를 변환하거나 Shader Graph로 다시 만들기
❌ URP에서 예전 Graphics.Blit API 사용
Deprecated — 글리치 또는 효과 없음
✅ Blitter.BlitCameraTexture 사용(URP 13+)