SRP / URP / HDRP
Scriptable Render Pipeline is Unity's flexible rendering architecture, with two built-in presets: URP (Universal, for most games) and HDRP (High Definition).
Imagine...
The Built-in Renderer is a regular home kitchen — it can cook anything, but it wastes power and is not optimized. URP is a modern induction cooktop — fast, efficient, right for mobile and indie. HDRP is a Michelin kitchen — every detail is perfect, but you need high-end hardware (PC/console).
The concept in detail
SRP (Scriptable Render Pipeline): Since Unity 2018, you can customize the render pipeline through a C# API. Write your own (custom SRP) or use the two presets: URP and HDRP.
URP (Universal RP): Formerly LWRP. Tuned for mobile, web, Switch. Single-pass forward rendering, plus a 2D Renderer. Uses Shader Graph and VFX Graph. Better than Built-in, but it skips some advanced features (ray tracing, complex post-process).
HDRP (High Definition RP): For high-end PC/console. Ray Tracing, DLSS/FSR, Volumetric Lighting, Screen Space AO, Contact Shadows, Tessellation… GPU-heavy, but the best visuals.
Switching: You cannot freely hop pipelines after you pick one. Materials/Shaders need an update. Use Edit → Rendering → Materials → Convert… for an automatic migrate.
Feature comparison
| Feature | Built-in | URP | HDRP |
|---|---|---|---|
| Shader Graph | ❌ | ✅ | ✅ |
| VFX Graph | ❌ | ✅ | ✅ |
| Ray Tracing | ❌ | ❌ | ✅ |
| Volumetric Lighting | ❌ | Partial | ✅ |
| 2D Renderer | ❌ | ✅ | ❌ |
| Mobile Support | ✅ | ✅ | ❌ |
| DLSS / FSR | ❌ | Partial | ✅ |
Pick a pipeline from the start — migrating materials/shaders later is costly and often causes pink shaders.
Hands-on steps
Pick a pipeline when you create the project
Unity Hub → New Project → choose a template (3D Core = Built-in, URP, HDRP). Decide up front.
Add URP to an existing project
Package Manager → Install "Universal RP" → Assets/Create/Rendering/URP Asset → assign it in Project Settings → Graphics.
Convert materials
Edit → Rendering → Materials → Convert Selected/All Built-in Materials to URP.
Use Renderer Features
URP Renderer → Add Renderer Feature (Outline, SSAO, Custom...) — the Built-in equivalent of Image Effects.
Interactive simulator
Compare Built-in / URP / HDRP — target platform, performance, and features.
Target
All platforms (legacy)
Performance
Average — not optimized
Visual
Basic, limited post-FX
// Legacy shader (Built-in)
Shader "Custom/OldShader" {
SubShader { /* Legacy CG/HLSL */ }
}Viewing: Built-in Render Pipeline
Code example
BasicCustom Renderer Feature — add it to a URP Renderer asset to inject a render pass.
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;
}📌 Quick recap
- ▸URP = good for indie, mobile, 2D
- ▸HDRP = AAA graphics, high-end PC/console
- ▸Pick the pipeline first — migrating is hard!
- ▸SRP Batcher boosts URP draw-call performance
⚠️ Common mistakes
❌ A Built-in shader does not work in URP
The material turns magenta (missing shader)
✅ Convert materials or rebuild them in Shader Graph
❌ Using the old Graphics.Blit API in URP
Deprecated — glitches or no effect
✅ Use Blitter.BlitCameraTexture (URP 13+)