大家好!
我之前将粒子物理引擎提交到Asset Store,它的最大粒子数量是几千个。但是,验证队列的速度实在太慢了,于是我就开始了一场大规模优化的探险。
我完全拆解了引擎,并且使用DOTS(Burst/Jobs)重写了架构。
结果:现在我可以在高帧率下推动超过19,000个粒子。
为了测试数学性能,我建造了一场景,场景中有一个连续的生成器、一个使用不可见方向向量场的传送带,以及一个“爆炸碗”按钮,用于迫使求解器在瞬间解决数千个大规模碰撞。CPU在20ms内处理物理。
对于引擎程序员来说:我必须完全绕过标准的Unity渲染,并且构建一个自定义的ComputeBuffer/Instancing管道,以防止我的GPU在19k粒子时过热。关于如何做到这一点,我在LinkedIn上写了更深入的架构剖析。如果你喜欢DOD和代码优化,我在LinkedIn上很开心与你联系:[LinkedIn link](https://www.linkedin.com/posts/yashar-shaikh_gamedev-unity3d-indiedev-ugcPost-7469726516407431168-u8bx/?utm_source=share&utm_medium=member_android&rcm=ACoAADepVfEBZYlO1beFLCppQmE6dTstN_xrqOE)
鉴于标准Unity刚体会大幅度降低帧率,如果你现在就有这个19,000粒子DOTS沙盒在项目中,你会建造什么样的机制呢?工厂自动化?一个挖掘模拟?告诉我!
评论 (0)