

使用TextureArray和Instancing合并粒子特效
BK
B.B King
只渲染深度的图形🐶1
阅读 692
2020年8月19日
最近在优化粒子特效,写点方案希望大家有更好的建议可以讨论,有回答的朋友有机会获得靓女联系方式(就知道你们都是单身🐶)
现在粒子特效的优化基本局限于: 1,对粒子特效渲染次序进行排序,这种基本靠运气,而且最终合并效果不可控制,受特效制作影响。 2,用sprite sheet合并成图集,会导致贴图冗余或者内存占用高。
计划方案: 1.运行时动态创建Texture2DArray,组装assetbundle中已经压缩成平台格式的(etc,pvr)2d纹理,设置成全局的TextureArray,对于相同材质不同属性的粒子,定义mpb设置array的index和其他属性完成合批,因为是动态创建的,所以同一时间不会有贴图冗余,做到即用即加载。 2,结合我上一篇文章的技术方案,可以实现不同mesh粒子特效的合批。 3,使用stencil对粒子特效overdraw进行优化,先渲染stencil,填充最后的stencil值(第五层是非透明value=5),渲染颜色时候 test equal 5 ,failed=> value++,这样就多一个只渲染stencil的批次,之后srcAlpha==1的时候的非透明区域只需要渲染最后面一层了,这样至少可以保证有一部分tile不需要反复写回了。
但是第二步,特效重叠区域由于合成了一个批次,blend off,blend one one,blend one zero都不会有问题,但是blend srcAlpha?的时候就会出现混合问题,通过clipspace的zoffset应该可以勉强解决。 有问题联系:smartethet
发布于技术交流
1条评论
BK
B.B King

问
AI
全新AI功能上线
1. 基于Unity微调:专为Unity优化,提供精准高效的支持。
2. 深度集成:内置于团结引擎,随时查阅与学习。
3. 多功能支持:全面解决技术问题与学习需求。

问
AI







