Cocos引擎3D优化和BUG问题总结

     对自己这一年多对cocos底层开发做一个总结。

系统优化

    1.批次渲染,cocos3D不支持批次渲染,对应场景类似物体很多(如麻将)的时候,如果采用每个物体绘制一次drallcall会很大,帧率也很低,因此,可以更改cocos源码,提供批次渲染功能,将相似物体的纹理打包成一张图片,批次渲染多个物体。实验发现,对麻将这种多种相似物体的渲染,可大大降低DrallCall(150降到8-20) 和帧率。不过对于一直移动的物体,需要移动的时候每次计算生成批次渲染序列。

  2.shader优化,shader方面,记录一些小细节:1.对低端机渲染的时候,对复杂光照模型(cocos3d 的光照模型很简单,这里指自己写特效渲染)可以采用将关照计算从逐像素绘制改为逐顶点绘制,帧率提高不少,效果并无多少影响,主要手机屏幕太小了,不像PC屏幕。2.尽量不要使用for(),发现在一些低端机时候如果使用了for(int i=0;i<n;i++),就算只循环一次,模型机型也帧率掉的很厉害.3.使用内置计算的时候,尽量都使用浮点数,不要整数和浮点数混用,例如pow(2, 0.2)某些机型会蹦,尤其IOS系统,都写成Pow(2.0,0.2)

   3.遍历优化,游戏中经常出现模型淡入淡出的特效,而对于那些淡出的模型,而后面还要一直用到的情况下,此模型是一直存在于渲染列表的。而对于透明模型,虽然看不见,在visit(),draw()这些遍历函数中一直在计算并将其加入到Meshcommd去渲染。可以改下源码,对于透明度为0的物体,visit时直接返回,不进行后面操作。

   4.特效优化,特效种类很多,BRDF,HDR,边缘光,卡通渲染,玉石特效,砖石特效等,如果用计算各个光照模型,一般手机跑步起来。这个时候就需要IBL了,基于图像绘制来实现各种特效,节省计算,同时需要更改cocos源码,提供更多的贴图支持。后面有时间把这些特效Unity3d版本都写出来,项目特效都是先在unity3d实现,然后转入cocos3d。Unity3d更容易实现特效和讲解。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值