优化手段:裁剪、LOD 与轻量级发射器

定位到"就是这个发射器贵"之后,有四把手术刀可以动。

手术刀一:距离裁剪(Distance Culling)

远处的特效不播就是最快的优化。Niagara 的发射器支持按距离禁播(Emitter 属性的 Cull / Max Distance)。注意:

  • 裁剪距离要逐发射器设(不是逐 NS):一个 NS 里核心冲击波裁剪距离 80m,环绕的烟可以是 40m;
  • 裁剪边缘不要太近否则"突然消失"很明显,可以配合淡出的 LOD。

手术刀二:LOD(细节层级)

Niagara 的 Emitter 可以设置按距离切换不同的版本:近处用完整的高密度版本,远处切到简化版本(粒子数、模块数量都减少)。相比 Cascade 的写死 LOD 参数,Niagara 的 LOD 是真正切换模块组的。

距离 版本 典型内容
0~15m LOD0 完整表现:高粒子数 + 精细模块
15~40m LOD1 砍掉火花与细节模块,留烟与主形
40m+ LOD2 / 裁剪 极简或直接不播

LOD 配置后,一定要在场景里远中近各跑一遍,看切换有没有可见的跳变。

手术刀三:轻量级发射器(Lightweight Emitters)

对于"装饰型"大量小特效(雨点、尘埃、远处萤火),Niagara 提供专门的轻量级发射器模式:大幅精简模拟管线,单发射器开销远低于常规发射器。

特性 常规发射器 轻量级发射器
模块数量 任意 受限子集
开销 标准 显著更低
适合 主表现(爆炸、技能) 数量大的装饰效果(上百个实例)
限制 无 不支持复杂脚本与部分 DI

轻量级发射器的适用场景与限制见官方的 Niagara轻量级发射器。

手术刀四:模拟频率降低

不要求每帧更新的表现(远处的火堆、缓慢的烟)可以把发射器的更新频率降低(在 Emitter 属性里设模拟频率或配合时间膨胀)。视觉上几乎无差别,开销减半。

优化决策顺序

推荐按这个顺序动刀(先做投入产出比最高的):

  1. 砍量(先裁剪,什么都不做就能省一半开销);
  2. 降距离复杂度(LOD + 裁剪);
  3. 换实现(轻量级、降频);
  4. 换结构(合并发射器、CPU/GPU 切换);
  5. 换算法(HLSL 重写热点模块)。

多数项目在 1~3 之后帧率就回来了;动到 5 的都是值得记入文档的硬仗。