![]() |
Performance again - Printable Version +- Obi Official Forum (https://obi.virtualmethodstudio.com/forum) +-- Forum: Obi Users Category (https://obi.virtualmethodstudio.com/forum/forum-1.html) +--- Forum: Obi Rope (https://obi.virtualmethodstudio.com/forum/forum-4.html) +--- Thread: Performance again (/thread-3142.html) |
Performance again - lacasrac - 22-10-2021 In debug mode I get a massive 17 FPS in fullscreen when I use 5 solvers/1 rope/chain with 8 subsets So basically I have 5 solvers with 3 chains and 2 ropes Is it normal? Jobs/Leak detection is off Burst-> Enable compilation on, Synchronous compilation on, others off Jobsdebugger off Any other thing that I can do to increase the FPS? One more question: If I have 5 solvers with 1 ropes -> basically 5 ropes with 5 solvers invidiudally that is good or bad for performance? It will be better 1 solvers with 5 ropes? RE: Performance again - josemendez - 25-10-2021 (22-10-2021, 10:34 AM)lacasrac Wrote: In *debug* mode I get a massive 17 FPS If by *debug* mode you mean a debug build, that's not surprising at all: debug builds are extremely slow compared to release builds. They contain a lot of extra debug data, and skip code optimizations. This is the case not only in Unity, but in any engine/IDE. Never ever measure performance in debug mode. (22-10-2021, 10:34 AM)lacasrac Wrote: If I have 5 solvers with 1 ropes -> basically 5 ropes with 5 solvers invidiudally that is good or bad for performance? The amount of solvers and/or ropes has zero impact on performance. However, the amount of particles in each solver and your solver settings do. When you add ropes (or any actor, for that matter) to a solver, all of its particles/constraints are "thrown in a bag", together with other rope's particles/constraints. The engine does not care if they came from only 1 rope or 10 ropes. Internally, the engine does not even know what a rope is. Then, particles and constraints from all solvers are updated in parallel. It does not matter if there's 2, 3 or 10 solvers, and does not matter if there's 1 or 100 ropes in each. It does matter if a solver is set to perform many constraint iterations, or if ropes have 500 particles each instead of 50. Things you can do to improve performance: - Use as few substeps/constraint iterations as you can. Disable any constraints you're not using. You'll find substeps setting in the ObiFixedUpdater, and constraint settings in the ObiSolver. See: http://obi.virtualmethodstudio.com/manual/6.2/updaters.html http://obi.virtualmethodstudio.com/manual/6.2/obisolver.html The manual contains a pretty in-depth explanation about how the engine works and how substeps/iterations affect it, I'd also recommend reading it:http://obi.virtualmethodstudio.com/manual/6.2/convergence.html - Use as few particles as you can. This means reducing your rope's blueprint resolution. See:http://obi.virtualmethodstudio.com/manual/6.2/ropesetup.html - Use the simplest rendering mode that fits your bill. Use path decimation if possible. http://obi.virtualmethodstudio.com/manual/6.2/roperenderingmodes.html |