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: URP và HDRP.
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 Graph và VFX 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ăng | Built-in | URP | HDRP |
|---|---|---|---|
| Shader Graph | ❌ | ✅ | ✅ |
| VFX Graph | ❌ | ✅ | ✅ |
| Ray Tracing | ❌ | ❌ | ✅ |
| Volumetric Lighting | ❌ | Partial | ✅ |
| 2D Renderer | ❌ | ✅ | ❌ |
| Mobile Support | ✅ | ✅ | ❌ |
| DLSS / FSR | ❌ | Partial | ✅ |
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
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.
Cài vào project đã có (URP)
Package Manager → Install "Universal RP" → Assets/Create/Rendering/URP Asset → Assign trong Project Settings → Graphics.
Convert materials
Edit → Rendering → Materials → Convert Selected/All Built-in Materials to URP.
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ũ */ }
}Đang xem: Built-in Render Pipeline
Ví dụ Code — URP Feature
Cơ bảnCustom 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+)