I have to make a feature where a full skinned Mesh can be mirrored in X axis.
But I'm witnessing a severe perf loss when I use this localScale(-1, 1, 1), jumping from 17 ms average frametime to 24 ms ...
The skinned mesh has 2 box colliders / rigid bodies attached to it.
I just set that X axis inversion once, do nothing else, and then bam the Fps goes down as long as it is -1. When I switch scale back to 1, everything returns to nice Fps.
Profiler says that the CPU is the cause of slowing down the overall.
Is there a way not to have perf loss ?
Thanks, so this means that perf loss is how things work, and that there is no way not to avoid them ?Originally Posted by aNTeNNa trEECreate the mirrorred character in your 3d app and freeze the transformations.
Jeez ... my FBX size will be huge
Hello again, one thing I can't understand : why is this negative scaling much more CPU consuming than other transforms ?
If you are comparing a negative scale to no scale at all (I guess I mean the identity scale) then it is possible that you are asking the CPU to do some work to perform the scale. If an object is not being scaled I imagine it is sent down some fast path submission.
Your scale is non-uniform (only affects the x-component of each vertex) and non-uniform scales really mess with matrix operations. Translation and rotation both preserve the shape of an object. Uniform scales do too, but non-uniform scales stretch geometry. Imagine a scale of (2, 1, 1). This ability to mess with the shape of an object is what causes non-uniform scales to require some slower submission path. You might say that a scale of (-1,1,1) is not messing with the shape of your object, but in fact it is turning your object inside out.
Glad you are finding the profiler helpful!