URP 渲染实战
Unity Shader、PBR 与效果案例全解
从第一个 URP Shader 写起,到光照、阴影、PBR、卡通渲染、水、溶解、贴花、Renderer Feature 与后处理。 全书 30 章、234 个案例,书里的每一张效果图都能在浏览器里实时预览:转视角、调参数,还能直接改 Shader 代码。

目录
- 第一部分 · 地基GPU 管线、URP 架构与第一个 Shader
- 第 1 章从像素说起:GPU 渲染管线与坐标空间一帧画面的旅程、坐标空间链与 URP 中的对应函数7 个实时预览
- 第 2 章URP 架构与一帧的流程SRP、资产关系、Pass 顺序、渲染路径、SRP Batcher 与相机栈9 个实时预览
- 第 3 章第一个 URP ShaderShaderLab 结构、HLSL 基础与一步步搭出完整的 Unlit Shader12 个实时预览
- 第 4 章Shader 里的数学工具箱与程序化图案向量、插值、重复、极坐标、噪声与 2D SDF10 个实时预览
- 第二部分 · 光与影从 Lambert 到全局光照
- 第 5 章经典光照模型Lambert、Half-Lambert、Phong 与 Blinn-Phong12 个实时预览
- 第 6 章多光源与阴影附加光循环、衰减、阴影映射与 ClassicLit15 个实时预览
- 第 7 章法线贴图与视差切线空间、TBN、细节法线与视差遮挡映射11 个实时预览
- 第 8 章环境光、光照贴图与反射探针球谐、光照贴图、Meta Pass、反射探针与 AO12 个实时预览
- 第三部分 · PBR基于物理的渲染:理论、源码与手写实现
- 第 9 章PBR 理论辐射度量学、渲染方程、微表面模型与 D/G/F13 个实时预览
- 第 10 章逐行读懂 URP Lit从 Lit.shader 到 BRDF.hlsl 与 GlobalIllumination.hlsl7 个实时预览
- 第 11 章从零手写 PBRGGX、Smith、Schlick、IBL 与能量补偿,造一个能用的 MyPBR12 个实时预览
- 第 12 章PBR 进阶材质清漆、各向异性、头发、布料、皮肤与薄膜干涉18 个实时预览
- 第 13 章PBR 材质制作与校准色彩空间、通道打包、取值原则、法线贴图与材质校验11 个实时预览
- 第四部分 · 风格与透明卡通渲染、NPR 与透明物体
- 第 14 章卡通渲染色阶、边缘光、描边、天使环与面部 SDF 阴影14 个实时预览
- 第 15 章更多风格化(NPR)Gooch、素描排线、半调网点、水彩、像素风、Matcap、低多边形与线框10 个实时预览
- 第 16 章透明、混合与模板测试渲染队列、Blend、ZWrite/ZTest/Cull、排序、Alpha to Coverage、Stencil 与 RenderObjects10 个实时预览
- 第五部分 · 效果工坊游戏里最常见的 Shader 效果
- 第 17 章顶点动画旗帜、草地风动、Gerstner 波、膨胀呼吸、碎裂重组、VAT 与阴影同步7 个实时预览
- 第 18 章溶解、全息与护盾溶解、菲涅尔、全息、能量护盾、扭曲隐身、冰冻与扫描线13 个实时预览
- 第 19 章水深度着色、折射、法线流动、反射、泡沫、焦散、Gerstner 波与平面反射12 个实时预览
- 第 20 章地形与植被Triplanar、高度/坡度混合、Height Blend 与 GPU Instancing 草地13 个实时预览
- 第 21 章UV 动画与粒子UV 滚动、序列帧、Flowmap、极坐标与粒子 Shader13 个实时预览
- 第 22 章贴花URP Decal Projector、自写屏幕空间贴花与网格贴花9 个实时预览
- 第 23 章阴影进阶参数全解读、平面阴影、Blob、阴影着色、屏幕空间与接触阴影14 个实时预览
- 第 24 章Shader GraphTargets、Blackboard、Keywords、Sub Graph 与 Custom Function4 个实时预览
- 第六部分 · 屏幕之上Renderer Feature 与后处理
- 第 25 章Renderer Feature 与 RTHandle往 URP 的一帧里插入你自己的 Pass7 个实时预览
- 第 26 章自定义后处理Volume 组件 + Renderer Feature 的十个全屏效果12 个实时预览
- 第 27 章URP 内置后处理全解析Volume 框架与 17 个内置效果的参数、源码与对比24 个实时预览
- 第 28 章屏幕空间技术深度重建、扫描线、雾、SSAO、体积光、SSR 与 TAA7 个实时预览
- 第七部分 · 工程化性能、调试与上线
- 第 29 章性能优化瓶颈定位、合批、变体、精度、Overdraw 与移动端设置3 个实时预览
- 第 30 章调试与排错Frame Debugger、RenderDoc、Xcode、Rendering Debugger 与常见问题手册6 个实时预览
- 附录 · 速查随手翻的工具页
- 附录附录:速查表函数、宏、关键字、迁移对照与术语
写在前面
Unity 换到可编程渲染管线(SRP)之后,很多人的第一感受是“Shader 不会写了”:UnityCG.cginc 不见了,surface shader 不能用了,网上搜到的教程一半是 Built-in 管线的老写法,另一半跟着 URP 版本改来改去。这本书想做的事情很简单——锁定一个版本,把 URP 下的渲染从头到尾讲透,并且每一个结论都有能跑的代码。
本书基于 Unity 2022.3 LTS(作者使用 2022.3.62f3) 和随之配套的 URP 14.0.12。书中所有 Shader 与 C# 代码都放在配套工程的 Assets/Cookbook 目录下,按章节分文件夹;书里的配图也都是用这个工程在 URP 下直接渲染出来的,不是示意图。你看到的效果,就是代码跑出来的效果。
这本书怎么组织。全书分七个部分。第一部分打地基:GPU 管线、坐标空间、URP 架构、第一个 Shader、Shader 里的数学。第二部分讲光照:从 Lambert 到 Blinn-Phong,多光源、阴影、法线贴图、环境光与全局光照。第三部分是 PBR:先讲微表面理论和渲染方程,再逐行读 URP 自带 Lit Shader 的源码,然后从零手写一个完整的 PBR Shader,最后扩展到清漆、各向异性、布料和皮肤。第四、五部分是效果工坊:卡通渲染、透明与模板、顶点动画、溶解、水、地形、粒子、贴花、Shader Graph。第六部分走出单个物体,讲 Renderer Feature、自定义后处理和屏幕空间技术。第七部分讲性能与调试。附录是速查表。
每一章的写法。章首列出“本章你会学到”,正文先讲必要的原理,然后是一个个编号的案例,每个案例都给出完整代码、关键行的解释、实际渲染结果,以及可以继续改的方向。案例右上角标了难度:入门、进阶、高阶。章末有小结和练习。
你需要的基础。会用 Unity 编辑器、能看懂 C# 就够了。线性代数和光学会在用到时现讲,不需要提前补课。如果你已经写过 Built-in 管线的 Shader,可以从第 3 章开始,并留意书中“Built-in 对照”的提示。
配套工程怎么用
- 用 Unity Hub 以 2022.3.x 打开配套工程(其他 2022.3 小版本一般也可以,URP 版本以 Package Manager 显示为准)。
- 菜单 会创建一份 URP Asset 并切到线性色彩空间。
- 每章的代码在
Assets/Cookbook/ChNN/;Shader 名都以Cookbook/ChNN/开头,在材质的 Shader 下拉框里能直接找到。 - 书中出现的贴图(噪声、砖墙、刷漆金属、水面法线、Ramp 等)都是程序生成的原创贴图,放在
Assets/Cookbook/_Core/Textures/,可以随意使用。
RTHandle + Blitter 写法为准,并在相应位置说明了在新版本里的变化。Shader(HLSL)部分在 URP 12~17 之间大体通用。软件界面与菜单名称以你实际使用的版本为准。本书为作者原创的技术学习资料。Unity、Universal Render Pipeline、Shader Graph 等为 Unity Technologies 的商标,本书与 Unity Technologies 无关联,也未获其认可。书中引用的 URP 源码片段仅用于学习讲解,版权归原作者所有,请以 Package Manager 中你实际安装的版本为准。