Skip to main content
Advanced Search
Search Terms
Content Type

Exact Matches
Tag Searches
Date Options
Updated after
Updated before
Created after
Created before

Search Results

16 total results found

Introduction

Unity/VRChat Performance Benchmarks

The general methodology used to generate this data is to not look at the performance of a single instance of a Component, but to add more and more components and extract the formula for the performance from this data. For example: If we want to know how much f...

Introduction

Unity/VRChat Performance Benchmarks Animator Controllers

To put the numbers in this section into perspective, I’d like to mention two points: Every test here is done without any state behaviours. Having one or more state behaviours on any layer of any controller increases the runtime of all controllers on that av...

Baseline: Two state toggle

Unity/VRChat Performance Benchmarks Animator Controllers

For our baseline, we are going to look at the simple 2 state toggle. The default toggle we will be comparing against. Two animations, each with two frames, both with the same value. Write defaults on. In every layer count test, the graph for layers vs frame ...

AnyState & Direct Blend Trees

Unity/VRChat Performance Benchmarks Animator Controllers

AnyState AnyState seems to be similar in performance to non-AnyState toggles, no matter the amount of AnyState toggles. This indicates the amount of transitions checks is not a significant contributing factor to frame time, which is confirmed by other tests. ...

Miscellaneous

Unity/VRChat Performance Benchmarks Animator Controllers

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 i...

Multiple Controllers

Unity/VRChat Performance Benchmarks Animator Controllers

Having multiple controllers does NOT scale linearly (that is, having 2 controllers with 100 layers causes way less lag than 1 controller with 200 layers). The actual relationship is hard to describe, but here is a visual to maybe help with this. Where every l...

Constraints

Unity/VRChat Performance Benchmarks

After animator controllers, I’m very happy to talk about something simple. Constraints behave weirdly, but in a very predictable way. Take the total amount of enabled constraints (type doesn’t matter) and use this graph to get the frame time. You can see that...

Audio Sources

Unity/VRChat Performance Benchmarks

Try as I might, I can’t seem to make these have any performance impact at all, even in unity where the max is 64 compared to VRChat’s 3 per avatar.

Contact Senders/Receivers

Unity/VRChat Performance Benchmarks

The first thing I want to say is that contacts have a max limit of 4096 per instance. If you have more than 4096 contacts in one instance, some will stop working Contact senders and receivers are pretty straightforward as well, costing: 0.5 ms of frame tim...

Cloth

Unity/VRChat Performance Benchmarks

Cloth components are very heavy and should be used very sparingly. For any reasonable amount of vertices (up to ~200k vertices), a cloth component will add around 0.2 ms per 1000 vertices. Above this, the frame time shoots up hard before tapering off, but thi...

What's Next?

Unity/VRChat Performance Benchmarks

I am planning to continue benchmarking components after this. Some components I have already started on, but I’m not sure enough yet about my data to post it.  The components I want to benchmark in the future are: PhysBones/PhysBone colliders Skinned mesh...

PhysBones

Unity/VRChat Performance Benchmarks

Physbones are quite well optimized, and within reason can be considered pretty cheap. It seems that the frame time of PhysBones is mostly reliant on how many transforms they animate, at a rate of 2 ms per 1000 affected PhysBone transforms.  The component hier...

Write Defaults

Miscellaneous Avatar Knowledge

Original page: https://notes.sleightly.dev/write-defaults/ Write Defauts Write Defaults is an option on Animator States, and a headache for many Avatar Creators, as they behave in weird and unexpected ways. The expected behaviour is as follows: The Write De...

Avatar Masks

Miscellaneous Avatar Knowledge

Original page: https://notes.sleightly.dev/animator-masks/ Unity Behaviour A mask blocks out humanoid muscle values, material swaps and transform values based on what is enabled and what is disabled in the mask. If a layer has a mask with a certain value ena...

Expression Parameter Mismatch

Miscellaneous Avatar Knowledge

Original page: https://notes.sleightly.dev/parameter-mismatching/ In typical VRChat Avatars 3.0 creation, VRChat expression parameters are expected to be set as the same parameter type (Bool, Int, Float) as their respective local animator parameter counterpar...

Combining Layers Using Direct Blend Trees

Miscellaneous Avatar Knowledge

Original page: https://notes.sleightly.dev/dbt-combining/ Due to the high performance impact of Animator Layers in an Animator Controller, it is often a lot better to combine things such as toggles and radial menus into a single Animator Layer by using a Dire...