Unity Term Book
Graphics & Rendering

SRP / URP / HDRP

Scriptable Render Pipeline là kiến trúc rendering linh hoạt của Unity, với hai bản built-in: URP (Universal, cho hầu hết game) và HDRP (High Definition).

Hãy tưởng tượng...

Built-in Renderer như bếp nhà bình thường — sử dụng được mọi thứ nhưng hao điện, không tối ưu. URP như bếp từ hiện đại — nhanh, tiết kiệm, phù hợp mobile và indie. HDRP như nhà hàng Michelin — mọi chi tiết hoàn hảo, nhưng cần phần cứng mạnh (PC/console cao cấp).

Khái niệm chi tiết

SRP (Scriptable Render Pipeline): Kể từ Unity 2018, Unity cho phép tự customize render pipeline thông qua C# API. Bạn có thể tự viết (custom SRP) hoặc dùng 2 preset có sẵn: URPHDRP.

URP (Universal RP): Trước là LWRP. Tối ưu cho mobile, web, Switch. Single-pass forward rendering, hỗ trợ 2D Renderer. Dùng Shader GraphVFX Graph. Tốt hơn built-in nhưng không hỗ trợ một số advanced features (ray tracing, complex post-process).

HDRP (High Definition RP): Dành cho PC/Console cao cấp. Ray Tracing, DLSS/FSR, Volumetric Lighting, Screen Space AO, Contact Shadows, Tessellation… GPU-heavy nhưng cho visual tốt nhất.

Chuyển đổi: Không thể chuyển qua lại tự do sau khi chọn. Material/Shader cần update. Dùng Edit → Rendering → Materials → Convert… để migrate tự động.

Bảng tính năng

Tính năngBuilt-inURPHDRP
Shader Graph
VFX Graph
Ray Tracing
Volumetric LightingPartial
2D Renderer
Mobile Support
DLSS / FSRPartial

Chọn pipeline từ đầu — migrate material/shader sau này tốn công và dễ lỗi pink shader.

Hướng dẫn thực hành

1

Chọn pipeline khi tạo project

Unity Hub → New Project → chọn template (3D Core = Built-in, URP, HDRP). Tốt hơn là quyết định từ đầu.

2

Cài vào project đã có (URP)

Package Manager → Install "Universal RP" → Assets/Create/Rendering/URP Asset → Assign trong Project Settings → Graphics.

3

Convert materials

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

4

Sử dụng Renderer Feature

URP Renderer → Add Renderer Feature (Outline, SSAO, Custom...) — tương đương Image Effect trong Built-in.

Trình mô phỏng tương tác

So sánh Built-in / URP / HDRP — target platform, performance và tính năng.

🎯

Target

Mọi platform (legacy)

Performance

Trung bình — không tối ưu

🎨

Visual

Cơ bản, hạn chế post-FX

// Shader cũ (Built-in)
Shader "Custom/OldShader" {
  SubShader { /* CG/HLSL cũ */ }
}
✓ Tương thích cũ✓ Dễ bắt đầu✗ Không Shader Graph✗ Deprecated

Đang xem: Built-in Render Pipeline

Ví dụ Code — URP Feature

Cơ bản

Custom Renderer Feature — thêm vào URP Renderer asset để inject render pass.

using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;

// Custom Renderer Feature — thêm vào 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;
}

📌 Ghi nhớ nhanh

  • URP = tốt cho indie, mobile, 2D game
  • HDRP = AAA graphics, PC/Console cao cấp
  • Chọn pipeline từ đầu — migrate khó!
  • SRP Batcher tăng hiệu suất draw call URP

⚠️ Lỗi thường gặp

  • ❌ Shader Built-in không hoạt động trong URP

    Material hiển thị màu hồng (missing shader)

    ✅ Convert materials hoặc viết lại Shader Graph

  • ❌ Dùng Graphics.Blit old API trong URP

    Deprecated — gây glitch/không hoạt động

    ✅ Dùng Blitter.BlitCameraTexture (URP 13+)