egret_渲染优化-spine粒子混合
之前的 spine 动画, 优化是的图集, 这里主要是 spine 中的粒子
缘起: 在项目中发现了某个 spine 粒子特效 特别费 dc, 看了下 spine相关文件, 法线只是使用一个小图, 预期中应该是 一个批次就可以绘制完成. 遂 详细看了下 spine 的 json 文件. 发现使用了一个混合
"blend": "additive"
粒子主要是很多个 渲染节点 组成的, 如果所有节点都是引用同一个图的话. 且是相邻节点, 一般是一个批次可以绘制完成, 但是有了 混合Blend ,就会中断合批. 一个粒子特效如果又15 个粒子组成的话, 那么15个批次, 那么n个这个粒子的话就有 n x 15 也是有点小恐怖的
所以如果使用 spine 粒子动画的话, 要慎用 blend, … 等 会打断合批的操作. 这是个坑
直接在 egret.web.js 中的 WebGLDrawCmdManager.prototype.pushSetBlend
断点可以看到调用栈
spine 的 xxx.json
1 | ... |