URP 渲染实战 / 第 21 章 UV 动画与粒子 / 案例 21.9
案例 21.9综合:夜晚的篝火进阶
目标:把本章的技术组合成一个完整的小场景。
篝火由三层组成:火焰粒子(序列帧 + 渐变映射 + 叠加 + 软粒子)、烟雾粒子(Alpha 混合 + 软粒子 + 近相机淡出)、火焰上方一块热扭曲面片;一盏带阴影的橙色点光照亮周围的石头和木柴。远处一个小传送门作为点缀,它和熔岩、篝火一样只是一个 Quad 加一个 UV 动画 Shader。后处理开启 Bloom 和 ACES 色调映射,让 HDR 的火焰颜色自然溢出。

性能提示
- 粒子的主要开销是 Overdraw。一团烟由几十个大面片叠成,屏幕上同一像素可能被画十几次。减少粒子数量、缩小单个面片、裁掉贴图的透明边缘(粒子系统支持用自定义网格代替四边形,贴合贴图形状的八边形能减少不少无效像素),比优化 Shader 指令有效得多。
- 软粒子和热扭曲都要额外的全屏纹理(深度图、Opaque Texture),在移动端是实打实的带宽成本;如果整个项目只有少数特效需要它们,考虑只在特定相机或质量档位开启。
- 叠加混合的粒子与绘制顺序无关,可以关闭粒子系统的排序;Alpha 混合的粒子则需要按距离排序(Renderer 模块的 Sort Mode),否则前后关系会错。
- Shader 变体:本章的粒子 Shader 用
shader_feature_local控制帧混合、软粒子、近相机淡出,只有材质实际用到的组合才会进包。