【 3.x 性能优化 】Spine 多纹理合批

2x 原生还没看过,H5是有计划支持。

换装通常都是slot更换,是支持合批

3.8.6,微信小游戏,用了这个后,加载spine时
在ios端,游戏卡死
在android端,正常

Ios小游戏,开启高性能模式

详细使用疑问,可以加我沟通
image

gpu优化具体是指什么?

例如,
合批的顶点world计算消耗,
从cpu计算迁移到gpu中计算

牛的大佬!学到了

不知道为什么官方要在 2d ui 相关组件上不使用 USE_LOCAL
想加这个还得自己设置矩阵信息到 shader

因为,引擎自动合批不会使用local,
你可以自定义材质,然后自己勾local

1.0.7 版本更新

  • 增加 shader 模块开关,优化shader性能

在线体验

支持ios和安卓原生吗,目前还没考虑微信小游戏

原生还没尝试,目前只支持h5

求2.4.x能全平台支持!!!

gpu计算是如何无入侵优化的?是使用shader计算吗?那我如果针对个别spine会进行色彩增强的着色处理,会影响优化吗

这个合批优化本身是在默认 shader 基础上做了一些修改的,只是 patch 了引擎代码自动做了这一部分的工作

有自定义材质的话,就不会走这个合批优化逻辑了

spine合批不难,我的瓶颈在大量骨骼计算上,所以我在问gpu计算优化是怎么实现的,有帖子说是预计算顶点坐标,然后输出到纹理,shader去读顶点纹理进行顶点偏移。这样理论上可以实现gpu去处理顶点,cpu不需要计算

你说是全顶点动画烘培到纹理。

本插件方案,为了避免过度引擎修改,蒙皮计算还是原引擎,
骨络蒙皮计算是cpu的(但是,用引擎缓存模式,就接近烘培的顶点数据),
节点的计算的矩阵是通过纹理存传到shader计算,相当于省了RTS的计算量。

如果要扩展自己功能,可以在上传的纹理数据中,添加参数(插件默认,扩展了4个传参)

就是把世界矩阵的转换放在 gpu 上
这里是准备了一个小的 texture 用来放置节点的世界矩阵,然后把对应的索引放在了顶点数据中在2d没有用的z坐标传递到shader

是的,我占用了z传index的标记

我试试能不能实现一个,spine转帧效果差了一大截,而且包体大好一大截,不能接受,想尝试复刻一个unity那边的spine优化玩意

全顶点动画烘培到纹理,应该会比序列帧小,不过得搞个工具导出(隔壁家也行)

1赞