https://www.bilibili.com/video/BV1fV411a7Se
第一3d到2d扁平化的优化,bake的思想。
如果按照普通的方式 用niagara生成多个粒子(3d),每个粒子接受光照,同样能达到目的,并且能更加的真实和绚丽。那为啥要舍近求远呢?答案是这种方案在realTime render情况下,性价比更高,就是说在实时渲染的情况下(游戏)消耗也许是普通做法的1/20,但是效果也许能达到普通做法的80%。所以很值得去做。
具体思想:A、先用niagara用普通的流程做大概一秒的烟雾效果,render 必须是3d模型,不能是sprite,这样才能得到深度,法线等信息,目的就是模拟3d的,而且3d模型精度越高越好,你再用2d的sprite没有任何意义。然后取16帧的数据(motion vector,normal,depth,apicty,emission),每一帧的数据利用rt保存为texture2d。这样就相当于bake完成了。
B、然后再用niagara生成粒子,这个粒子就比较特殊了,就是一个sprite,但是材质很厉害,这个材质能读取每一帧数据,计算动态,接受光照,计算ao,改变中心颜色等,模拟A阶段的效果。这样比A性能消耗少太多了,两个sprite能模拟A阶段几十个上百个3d模型的效果,非常划算。
第二keyframe 插值计算模拟动态效果,keyframe 一帧的数据就是motion vector数据 这里保存的是运动向量。这里用材质里的某个节点(关键字 motionvector)
第三取gbuffer各种值(通过设置不同的材质),比如basecolor,depth,normal,保存为贴图,用于后期的光照模型
第四通过粒子系统niagara粒子的 运动方向向量 获得motion vector数据,保存为贴图