Unity URP 全面教程
从零配置 Universal Render Pipeline,到光照、后处理、Shader Graph 与性能优化,一站式掌握 URP 的全部核心知识。
适用版本:Unity 2021–2023 LTS,示例基于 URP 14.x。若使用高版本,仅需少量界面差异调整。
目录
一、URP 简介
Unity 官方推出的 Universal Render Pipeline(URP) 旨在取代 Built‑in 管线,提供跨移动、PC、主机的统一高效渲染。特点:
- Forward+ 光照:支持数百实时光源(2022.2+)。
- Shader Graph 零代码编写材质。
- 集成 Post‑Processing 与 Renderer Features 可扩展性。
- SRP Batcher 与 Native RenderPass,SetPass 调用大减。
二、安装与升级
新项目
- Unity Hub → New Project → 选择 3D(URP) 模板。
- 自动生成
Settings/UniversalRenderPipelineAsset
。
旧项目升级
- Package Manager 搜索
Universal RP
→ Install(或升级) - 菜单
Edit → Render Pipeline → URP → Upgrade Project Materials
- 在
Graphics
&Quality
中分别指定 URP Asset。 - 升级后检查:
- 粒子 Shader(需改
Universal Render Pipeline/Particles/*
) - Unlit 材质(改
URP/Unlit
) - 自定义 GrabPass → 改 Render Features
- 粒子 Shader(需改
三、管线资产设置
选项 | 建议 | 说明 |
---|---|---|
HDR | 开启 | 除非移动端极限压帧 |
MSAA | 4×(移动)/ 0(PC) | 与 TAA/FXAA 互斥 |
Render Scale | 1 (默认) | 0.8–0.9 可提帧 |
Shadow Resolution | 1024–2048 | 需与平台匹配 |
Additional Lights | Per‑Pixel | 2D/卡通可选 Vertex |
四、光照与阴影
1. Main Light
- 日光/主光源,支持 Cascaded Shadows。
- 勾选 Cast Shadows,并在 URP Asset 设置分辨率。
2. Additional Lights
- 前向 Pass 每像素可叠加 8 盏(可调)。
- 2022+ 在 Forward+ 模式支持 256 盏。
3. Shadow Bias 调优
Light l = GetComponent<Light>();
l.shadowBias = 0.005f; // 减 Peter‑Panning
l.shadowNormalBias = 0.3f; // 减 Acne
五、材质与 Shader Graph
- 新建 Shader Graph:
Create → Shader → URP → Lit Shader Graph
. - 使用 Master Stack 接口:
Base Color
,Normal
,Smoothness
. - 关键节点:
Time
,Sine
,UV
,Sample Texture 2D
. Graph Inspector
➜ 勾选 Alpha Clip 做 Cutout。- 生成材质:右键 Graph →
Create → Material
。
示例:水波材质 —— Time
→ Sine
扰动 UV,实现动水面。
六、后处理 Stack
URP 自带 Volume System:
GameObject → Volume → Global Volume
- 添加 Bloom、Depth Of Field、Tonemapping 等效果。
- 切换 Color Space 为 Linear 以获得更佳效果。
- 移动端可用 FXAA 替代 TAA。
七、Renderer Features
Feature | 用途 |
---|---|
Render Objects | 额外渲染某图层,做描边 |
Screen Space Shadows | 大幅提升实时阴影质量 |
Decal (URP 14) | 实时贴花 |
FullScreen Pass | 自定义后处理 |
示例添加:Assets → Settings → ForwardRenderer → Add Renderer Feature
。
// 自定义 FullScreen Pass
public class RippleFeature : ScriptableRendererFeature
{
public Shader rippleShader;
class Pass : ScriptableRenderPass { /*...*/ }
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData data)
{
renderer.EnqueuePass(_pass);
}
}
八、性能调优
技巧 | 收益 |
---|---|
打开 SRP Batcher | CPU SetPass ‑60% |
Opaque Texture 未用时关闭 |
节省带宽 |
渲染比例 Render Scale 0.9 |
+10 FPS(移动) |
使用 Mesh LODGroup | GPU 三角节省 |
启用 URP Dynamic Resolution | 帧率保底 |
避免 Realtime GI 在移动端 | CPU/GPU 双杀 |
九、常见问题
症状 | 排查点 |
---|---|
场景过曝 | 检查 Tonemapping 未启用、HDR 勾选 |
Shader Graph 粉色 | Graph 未保存 / URP 版本不匹配 |
阴影闪烁 | Shadow Bias、Near Plane 过低 |
粒子发黑 | 材质 Shader 升级到 URP/Particles/Lit |
FPS 低 | SRP Batcher 未勾、Overdraw |
结语
URP 已成为 Unity 默认渲染管线。通过本教程,你应已掌握 安装升级 → 管线配置 → 材质光照 → Renderer Feature → 性能调优 的完整流程。深入实践,用 Shader Graph 与自定义 Pass 打造独特视觉效果,释放硬件潜能!
附件
Shaders/WaterRipple.shadergraph
— 水波 ShaderGraphRendererFeatures/RippleFeature.cs
— 自定义全屏 PassDocs/URP_QuickSettings.pdf
— 速查表
需要完整示例工程?留言即可获取 GitHub 地址。
Last modified on 2025-06-09