我的代码管理着数千个粒子。这些粒子可以具有不同的纹理,并且这些纹理会随着时间而改变。所以到目前为止我还没有使用过粒子系统。我只是在场景中一一添加网格。
现在到了优化的时候,应用程序在旧计算机上运行缓慢。性能工具显示,占用 CPU 最多的任务是 Three.js 渲染方法。我想知道是否应该更改代码结构以切换到粒子系统。
差异会很大吗? 与独立网格管理相比,粒子系统有哪些优化?
谢谢
我的代码管理着数千个粒子。这些粒子可以具有不同的纹理,并且这些纹理会随着时间而改变。所以到目前为止我还没有使用过粒子系统。我只是在场景中一一添加网格。
现在到了优化的时候,应用程序在旧计算机上运行缓慢。性能工具显示,占用 CPU 最多的任务是 Three.js 渲染方法。我想知道是否应该更改代码结构以切换到粒子系统。
差异会很大吗? 与独立网格管理相比,粒子系统有哪些优化?
谢谢
没有额外的材料很难说,但是如果您查看Three.js 代码,您会看到那里的粒子是如何管理的。
如果您要为每个粒子切换纹理,那可能是一个真正的性能杀手。尝试按纹理对粒子进行排序,以便每组粒子只切换一次,而不是每个粒子一次。
如果您对粒子进行深度分类,这可能不切实际,但是......我不知道您要做什么。如果是这种情况,并且您只使用少量不同的纹理,请考虑将它们全部放在“图集”中,然后将 UV 贴图偏移传递给每个粒子,而不是交换采样器。这也会更便宜。