Unity Term Book
그래픽 & 이펙트

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-inURPHDRP
Shader Graph❌✅✅
VFX Graph❌✅✅
Ray Tracing❌❌✅
Volumetric Lighting❌Partial✅
2D Renderer❌✅❌
Mobile Support✅✅❌
DLSS / FSR❌Partial✅

처음부터 pipeline을 고르세요 — 나중에 material/shader를 옮기면 수고롭고 pink shader가 잘 납니다.

실습 단계

1

프로젝트 생성 시 파이프라인 선택

Unity Hub → New Project → 템플릿 선택(3D Core = Built-in, URP, HDRP). 처음부터 결정하세요.

2

기존 프로젝트에 URP 추가

Package Manager → "Universal RP" 설치 → Assets/Create/Rendering/URP Asset → Project Settings → Graphics에 할당.

3

Material 변환

Edit → Rendering → Materials → Convert Selected/All Built-in Materials to URP.

4

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 */ }
}
✓ 레거시 호환✓ 시작하기 쉬움✗ Shader Graph 없음✗ Deprecated

보는 중: 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+)