Skip to main content


Now for some miscellaneous data which doesn’t directly relate to toggles, but might be useful to someone:

  • State count per layer and transition count don’t seem to matter much (which might be why AnyState is so cheap)
    • The only time where this isn’t true is if there are many bool transitions out from a single state (many here meaning 1000 for 1 ms). Float/Int seems to not have this added overhead
  • Using empty layers on humanoid rigs, using non-humanoid rigs and using no avatar all seem to cut frame time per layer by about 50% compared to the two state setup
  • Masking seems to have little to no effect on frame time
  • Using sub-state machines seems to have little to no effect on frame time
  • Nesting blendtrees for clarity seems to have little to no effect on frame time
  • For Direct Blend Trees, WD off seems to not change frame times by much
  • For layer toggles, WD off seems to increase frame time by around 50%
  • Parameters on the local avatar seem to cost 1.5 ms per 1000, but this cost doesn’t apply to remote avatars


Since face tracking takes up many layers, I wanted to do a comparison between a normal VRCFT controller, and a FX controller generated by Razgriz’s VRCFTGenerator (which packs the layers into Blend Trees).

I won’t bore you with the graphs, since they are just a straight line, but as for the data (this is with 37 face tracking parameters): 

  • VRCFT: 0.1733 ms per controller
  • VRCFTGenerator: 0.066 ms per controller, a 62% decrease over the non Blend Tree version.