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