GPU与粒子

        事情起因是这样的:很久很久以前,前离职同事留下一套完备的粒子系统,boss不满意 ,要找人重新写之。
        先说说前同事的粒子系统:一套通用的粒子系统,发射器/效果器/渲染器/粒子池,兼顾2D和3D粒子,实现得相当不错,美术可以用它完成绝大部分效果,而且效果很酷!非常不错的粒子系统。
        再说说boss不满意的地方:效率低,部分粒子的初始化慢。效率低,一方面是因为美术乱用(反复大面积的填充屏幕同一个地方),一方面是CPU消耗太高(主要是留给粒子系统的CPU资源已经很少了)。由于这是一套通用的粒子系统,就决定了很难对其进行优化。复杂的数学计算是一部分,过多的函数调用也是一部分。
        痛定思痛,最后讨论得出的结论是:不做通用的粒子系统。
        确定了方向后,开始思考GPU与粒子的关系。总结之:CPU初始化粒子系统,可以有富余数据,数据可以重复,但是一定要符合GPU的数据处理方式:每个粒子之间没有数据依赖;粒子内部的每个顶点没有数据依赖;一个粒子的完整生命过程只依赖于初始数据,甚至粒子都不需要有重置初始化数据,仅仅通过对生命周期求余得到的时间就可以很好的绘制粒子;利用多流和Instance技术,大幅度减少需要动态修改的数据。
        例如:前同事的通用粒子系统里,在绘制雨水的时候,雨水的运动轨迹全部通过GPU计算,并且可能中间会涉及到随机的风的影响而导致粒子不能仅仅依赖初始数据。管理粒子池其实也相当消耗CPU。
        在新的雨水粒子里,每个雨水是一个垂直的面片(由2个

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值