ue4 基于motion vector粒子优化的一些感悟

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数据,保存为贴图

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值