16-12-2019, 03:33 PM
(This post was last modified: 16-12-2019, 04:39 PM by TheMunk.
Edit Reason: did more testing
)
So I've been reading a lot up on the forums here regarding optimizing ropes and most of the time the issue is death spiraling with the fixed update - however my issue seems to be the rope extruder taking up a lot of CPU time. Specifically 7 ms. Turning off the extruder individually on the ropes gives me the performance back.
Main issue:
Obisolver.LateUpdate() taking 7 ms cpu time.
Rope Info:
3 ropes
~200 particles in total
simulated on fixed Update.
2 substeps
Standard contraints simulations (3 iterations, 1 relaxation)
A few handles and a few colliders (less than 10) most static.
Extruder is using a 4 segment section
Time settings:
Fixed timestep: 0.01388889 (Oculus Quest)
Max: 0.0139
Solutions tried:
Using the linerenderer, but lost almost the same amount of performance gained from obisolver.lateupdate() to camera.FireOnPreCull(). (EDIT: seems to be the UpdateRenderer on the line renderer)
EDIT: using 3 line renderers on the same ropes (200 particles) all with 0 smoothing yields a 5,4 ms time on Camera.FireOnPreCull() - see latest attached screenshot
Turning smoothing down to 0 - seems to give around 1,5 ms for a single rope. Having all on 0 smoothing and 0,2 resolution yields 5,4 ms of obiSolver.Lateupdate()
System info:
CPU: AMD Ryzen 5 1600 Six-core processor
CPU: GTX 1070
Is this expected performance or am I missing something?
Edit:
Tried creating a new scene and making 3 ropes, all with 0 smoothing, default 8-section rope-section, one with .5 resolution, one with .3 and one with .2.
All 3 ropes on same solver: total particles 285
Getting around 3,8 ms on obisolver.lateupdate(). - why is there such a big difference?
EDIT 2:
Also, out of general curiosity, which is better for performance? high smoothing or high resolution? and how dependent on the renderer is either?
Main issue:
Obisolver.LateUpdate() taking 7 ms cpu time.
Rope Info:
3 ropes
~200 particles in total
simulated on fixed Update.
2 substeps
Standard contraints simulations (3 iterations, 1 relaxation)
A few handles and a few colliders (less than 10) most static.
Extruder is using a 4 segment section
Time settings:
Fixed timestep: 0.01388889 (Oculus Quest)
Max: 0.0139
Solutions tried:
Using the linerenderer, but lost almost the same amount of performance gained from obisolver.lateupdate() to camera.FireOnPreCull(). (EDIT: seems to be the UpdateRenderer on the line renderer)
EDIT: using 3 line renderers on the same ropes (200 particles) all with 0 smoothing yields a 5,4 ms time on Camera.FireOnPreCull() - see latest attached screenshot
Turning smoothing down to 0 - seems to give around 1,5 ms for a single rope. Having all on 0 smoothing and 0,2 resolution yields 5,4 ms of obiSolver.Lateupdate()
System info:
CPU: AMD Ryzen 5 1600 Six-core processor
CPU: GTX 1070
Is this expected performance or am I missing something?
Edit:
Tried creating a new scene and making 3 ropes, all with 0 smoothing, default 8-section rope-section, one with .5 resolution, one with .3 and one with .2.
All 3 ropes on same solver: total particles 285
Getting around 3,8 ms on obisolver.lateupdate(). - why is there such a big difference?
EDIT 2:
Also, out of general curiosity, which is better for performance? high smoothing or high resolution? and how dependent on the renderer is either?