文中提到的“合批”是什么意思,这几天才刚在了解shader相关,找学习资料找到来这里了,很多这方面的东西都不了解。想在2d项目里把图做成梯形这种2.5D的效果。一直没找到如何实现。有说用shader,但一直没思路中
这种?
1赞
感谢GT分享
感谢楼主
正好碰到类似的问题
最近陆续看到有人问关于粒子系统合批的问题,感觉还是有需求。
Demo工程里新增了粒子系统的合批实现。
目前引擎的实现是每个粒子系统保存自己的粒子属性,有自己的InputAssembler (IA),在渲染时直接提交自己IA里的数据。
Demo的做法是将IA里的数据拷贝到公共buffer里统一提交。
能够合批的前提
- 粒子系统之间不穿插其他的渲染组件,如果粒子系统挂在其他节点下面,需要考虑给粒子单独分层
- 粒子系统使用相同的纹理、PositionType、Blend Mode
注意事项
- 该实现增加了IA数据拷贝次数
- 粒子系统合批需要将多个粒子系统的数据集中存放,一起提交,所以会增加内存峰值
综上,对于粒子数量比较多的场合,是否合批需要权宜考虑。
3赞
战术性插眼
看了大佬的注释,上手容易多了
Mark very much!
终于看完了,怎么说呢。简单来说就是大佬nb!!!
看起来还是要通过楼主的步骤。宏只是多了个开关
mark mark
大牛,小弟想不透,为啥demo 里要把顶点的color数据去掉? 能不能在保留同时额外加其他自定义参数?
可以保留,只不过演示的shader里用不到color数据。
我保留了color 后,但整个变黑图了, 我把floatsPerVert = 9 , 前五个跟原来设置一样,但后面4个就是a_q 和a_p
可能是偏移量算错或者属性写入顺序和格式声明顺序对不上。
粒子合批在模拟器中无效吗?我版本是2.4.4或2.4.5
不好意思没实现:)
ts层没法解决模拟器/native的粒子合批问题
大佬有办法解决native下的粒子合批问题吗?