VRChat 2019.3.1p2, build number 845
(Pretty sure i first noticed this issue early this year)
Specs
Windows 10 Enterprise
i7 4790k 4.4ghz
Asrock z97 pro4
GTX 980 ti 1286mhz
ddr3 2600mhz
Tested with Oculus Rift&Desktop
(Tested with lipsync&blink)
1.More polys on the skinned mesh containing the active blendshape comes at a very significant cost
2.Normals and Tangents contribute to the performance loss which is derived from polys hence more polys=bad (they both contribute a significant cost)
3.even if you have zero normals and tangents it will still affect performance just at less of a cost
4.the difference between 10k and 20k polys is quite significant (perhaps the issue is linked to that)
5.Separating meshes for blendshapes to reduce polycount for active blendshapes helps significantly
6.Mirrors and cameras recalculate it
7.the quantity of shapekeys and vertex groups seem to make a negligible difference "if any"
8.Performance loss isn't local
tldr. ActiveBlendShape+ManyPolys=bad
Steps for reproduction:
1.have a 60k poly skinned mesh with an active blendshape (doesn't have to be 60k but higher the more obvious the loss)
2.disable any active blendshapes and you should see a gain
(Blink will always be active if your mesh is named "Body" and has shapekeys)
// more Mirrors will give you an easy to see result
theoretically or from what i've read about blendshapes it shouldn't be creating much of an impact if any
Ultimately this loss could be "working as intended" but i doubt it