Unity-Technologies / Animation-Instancing

This technique is designed to instance Characters(SkinnedMeshRender).
Other
1.63k stars 296 forks source link

AnimationInstancing.AnimInstanceItem:Prepare会有大量的Mono内存分配 #91

Open floydchenv opened 4 years ago

floydchenv commented 4 years ago

image image

floydchenv commented 4 years ago

image

floydchenv commented 4 years ago

处理完一波new的地方,仔细加Profiler发现剩下主要在读取bindposes和bones时产生的, image MergeBone在新的AnimationInstanceItem创建时是必须的,这么频繁的内存分配可能没办法实装到生产环境中呀。

lybmccree commented 3 years ago

binepos数量其实也是知道的。。150个估计是demo随手写的吧,我这边也没改。。感觉还好 MergeBone里面 int index = listTransform.FindIndex(q => q == bones[j]);我也是没看懂,不同bone的名字也不一样吧。。还会重复,这种也只有多个mesh重复吧。。 关键是animation texture也是只增不减,我自己改引用计数了,不过最好手动调用减1,而不是AnimationInstancing.OnDestroy减1。项目也用上了,最大的问题就是很多GPU不支持。

floydchenv commented 3 years ago

估计不太需要考虑GPU不支持问题, wetest 2020中国移动游戏质量白皮书"面上OpenGL ES 3.0以下版本占有率已经接近0,建议不必对更早版本做专项优化,或减少优化投入"