Bug Reports

  • No off-topic posts
  • Don't report more than 1 issue at once
  • For isolated issues or customer support visit help.vrchat.com
Thanks for your bug report!
VRChat Unity Animator Lag
The number of animation layers heavily affects performance due to unnecessary inverse kinematic calculations. Even blank animation layers with zero weight in the FX layer can trigger this behavior. The offender is seen in the profiler as Animators.IKAndTwistBoneJob. It runs as many times as the currently loaded animation controller with the largest number of layers. Although the individual run time is small, they very quickly add up. Slower CPUs seem to be more adversely affected by this. The time taken by these extraneous calculations quickly grows larger than all normal animator activity. This behavior only happens on animators that have a unity avatar/armature. When that is removed, this behavior goes away and the number of layers ceases to be a significant cause of lag. Most FX layers do not have any interaction with the armature, so it is likely that this behavior can be fixed for almost all FX layers. However from debugging the unity editor in visual studio, it appears the this happens in a native unity function named Animator::UpdateAvatars. It is likely that in most if not all cases, these calculations are completely wasted on FX layers and provide no benefit at all while consuming significant amounts of main thread time. Somehow these calculations need to be only run for layers that require them. Additionally providing a way to get parameters in sub animators would allow logic to be moved out of the main animator completely sidestepping this problem. They would not have a unity avatar associated with them, so this problem would not occur. It would also allow completely disabling animators when not in use. Please attempt to find a way to prevent this behavior or consider convincing your Unity contacts to implement a fix. This seems to be one of the largest contributors to animator lag. I have a full write-up with more profiler images and further explanations. https://docs.google.com/document/d/1SpG7O30O0Cb5tQCEgRro8BixO0lRkrlV2o9Cbq-rzJU
1
·

tracked

Turning Selfie Expression on and off repeatedly causes major VRAM and RAM leak.
UPDATE: Please read the comments I've left below on this post to get more information and or updates! UPDATE #2: Video attached -> https://www.youtube.com/watch?v=XsZ-ticOUUo Launch VRChat. Use a tool like RTSS to monitor frametime and VRAM usage. Open the Tracking & IK settings. Toggle Selfie Expression on and off repeatedly. (Make sure to wait for Selfie Expression to fully load in first, it takes a second or two every time it's turned back on.) Observe RAM and VRAM usage gradually increase each time you toggle it, instead of returning to normal. VRAM & RAM usage gets even worse if you do the following. Reproduction steps: Set selfie expression quality to Best Quality (higher quality will make the memory increase more noticeable). Then enable Selfie Expression, wait until it loads in fully, then turn it off, then turn it on again repeatedly. As you repeat this part, VRAM usage goes up by a moderate amount each time, but does not go down. When VRAM steadies or does not increase, Turn Selfie Expression off, then walk around for a minute or two or stay at the same screen. Change Selfie Expression to any quality, and then repeat step 2. What I saw: VRAM usage will keep going up and up until maxed out, then will fallback to RAM but doing steps 2, 3 and 4 repeatedly enough will cause RAM to be maxed out alongside VRAM. Higher-resolution webcams result in much larger memory increases per toggle (each frame/buffer/texture is bigger), so VRAM fills far faster at 1080p/1440p/4K and using higher Selfie Expression quality amplifies this effect. Workaround: Re-joining the instance, joining a different instance or restarting VRChat fixes it and usage returns to normal level.
3
·

tracked

Load More