指令数优化

注意在Niagara中只有实际参与运算的节点才会纳入Instruction的统计,有冗余节点也完全OK。

高指令Module

Curl Noise Force

小心curl noise,在删除了curl noise force之后,指令数降低了218,因此从指令数的角度上说,使用普通的Noise贴图来制作Noise,比Curl Noise Force要高效。

Grid Location

Grid Location考虑了太多情况,因此指令数到了100左右,有必要自己写简化版的Grid Location。

Find Nearest Distance Field Surface GPU

这个节点巨耗,实际上这些材质函数的节点都蛮耗的。

运算

对于标量,不论是加减乘除还是倒数三角函数都是1条指令。 但是对于矢量,试了一下Normalize耗费了7条指令。

分支

if

显然,if语句在编译时需要把两条路径上的指令全都进行编译,会造成指令数过多。有些内置模块会考虑到很多情况因此会有不少if,这也是优化的点。也可以尝试使用Static Switch。 例如将Kill In Volume改成了自定义的Module,来将球体范围内的粒子剔除,减少了10条指令。