Developer Update - 9 April 2026

You guys always know.

Since performance rank have become completely meaningless, every time the rating system is mentioned, people talk about the number of triangles. Everyone knows the rating system is a joke, so everyone chooses to bypass it, and the number of triangles is the sole reason why many avatars are rated “very poor.”

In fact, for me and my friends, the performance issues have almost always been with the animator: VRChat Unity Animator Lag | Voters | VRChat
For the silent majority who will never leave a comment here, the only meaning of rating system is to limit download size and save network bandwidth (which isn’t even the main part of the system).

7 Likes

Furthermore, I must point out that polygons do not scale at O(n^2); rather, they are an O(n) problem.

Ray tracing, on the other hand, is an O(log n) problem.

Due to latency and parallelization issues, within a certain range, a squared increase in polygon count only leads to a proportional increase in overhead.

Conversely, the overhead within that range can be described as scaling at a square root rate.

For example, the processing time for 1 million triangles is only about 3 times that of 100,000 triangles rather than 10 times, and it gradually trends toward linear scaling.

However, there is an underlying issue: polygons cannot be effectively parallelized, a problem I have mentioned multiple times before.

This is because rasterization requires tasks such as sorting, visibility determination, and index processing to some extent.

This makes certain parts of the overhead serialized and difficult to parallelize. This bottleneck resides at the front-end primitive distributor.

Consequently, large-scale GPUs encounter bottlenecks when facing massive triangle counts. The only solutions are to reduce the latency of front-end data fetching or to increase the GPU front-end frequency.

This is reflected in specific GPU architectural designs where clock frequencies are adjusted asynchronously, which can be verified using specialized profiling tools or understood through technical slides, such as the subsequent designs of the RDNA series.

Modern solutions attempt to use Compute Shaders for more flexible culling to replace traditional fixed-function pipelines, such as the VPC units within NVIDIA GPUs.

By utilizing multi-step and flexible batch culling instead of relying on fixed-function hardware units to inefficiently check and cull primitives one by one, efficiency is improved. The fixed hardware approach incurs high latency and may even fail to reduce total frame time.

Originally intended to increase the efficiency of subsequent stages like Rasterization (RAS) and pixel shading, these fixed units often ended up dragging down the overall performance.

At the same time, vertex data fetching efficiency can be optimized through cluster-based designs.(Resulting in an overall 3 to 5 times increase in geometry stage performance, including the simultaneous improvement in culling efficiency.)

Similar issues exist in depth sorting. For instance, the strict tile-based deep-buffered designs of mobile GPUs lead to higher depth-culling efficiency but may introduce greater latency. When facing a large number of fragmented objects like particles, this can actually lower efficiency and lead to low pipeline utilization.

In some cases, depth testing can even perform worse than transparency blending or the “discard” operation. Therefore, most designs are tailored for common scenarios. As requirements become more extreme and demand broader coverage, it becomes necessary to overhaul the rendering workflow and introduce new technologies.

This does not mean traditional methods are inferior, as new methods introduce their own overhead. In practice, more sophisticated hybrid designs are considered, which are usually heavily encapsulated and hidden.

Furthermore, the workload causing the bottleneck shifts dynamically under different data scales, making it difficult to analyze. Thus, one must rely on comprehensive testing.

This also makes precision difficult to achieve, favoring adaptive designs and avoiding manual parameter tuning. Developers avoid running different rendering paths for high-end versus low-end GPUs, as extreme complexity leads to unmaintainable code and unpredictable results that are harder to optimize.

This is the general approach in game development.

To be precise, there are many points in this discussion thread that are difficult to even begin critiquing. However, strategy remains the priority. Often, a good strategy is far better than spending a vast amount of time trying to fix every single problem.

If we are to talk about actual issues, the current graphics thread efficiency in VRChat and the lack of Unity 6’s Compute Shader-based skinned mesh batching, along with several other technical details, could effectively improve existing problems. Of course, Unity’s URP is a bit of a complicated subject. The BIRP features that users have long requested are difficult to replicate in URP, making pipeline migration extremely arduous. While most requirements are replaceable, some needs remain permanently unsolvable.

Ultimately, reality is an extremely complex and coupled system. The only viable path is to observe and combine all variables into graphs and reports for collective trade-offs. Beyond that, there is not much else that can be done.

_____________

Furthermore, I would like to point out some additional issues. Even with the latest technology, the parallelization problem is only mitigated rather than fundamentally solved.

Even if you attempt to scale up at the same clock frequency, doubling the number of GPCs actually only yields a 30% to 50% improvement in performance, or it may even be difficult to further increase the degree of parallelization at all (whether based on Mesh Shaders or Compute Shaders).

This is significantly slower than the pixel-stage rendering. Therefore, it is normal to see high-end GPUs not performing much faster even when they are GPU-bound. If Vertex Shaders are used, the situation is even worse.

A graphics card with 11 to 12 GPCs performs almost identically or with very little difference compared to one with 4 to 6 GPCs when purely testing Vertex Shader throughput.

________

Additionally, when considering AMD GPUs, the latency might be even higher due to more complex culling and front end designs.

Their utilization might also be relatively worse, requiring a massive number of triangles or vertices to reach comparable performance.

Otherwise, they are usually another 10% to 20% slower or more in typical scenarios. In summary, all aspects must be considered comprehensively, as there are simply too many factors to take into account.

1 Like

Due to binery incompability, all world and avatars would need to be build to that new version

Its not from what i understand about it being a group responsibility its about it being a group preferance and making that preferance easier to encoforce which is differnt and already an upheld prefernce

i had a mostly sleep deprived guteral reaction but after sleeping on it and reading more informative takes:

i still think friends should be showable whalst a role that bypasses this feature should be hidden by default too because otherwise whats stopping 20 of the group owners friends/supporters from having very poors defating the point of the feature (maybe im crazy but i can smell that happeneing already. i cant wait for a very poor to cry im not visible because im in a very poor but im being a little unfair with this stance because it will be a minority of cases) but after reading some more technically inclide posts ill wait and see how i feel after experiancing it before i grab my pitchfork.

I have hand-optimized every variant of my avatar to Good rank for TWO YEARS now. This is manna from heaven for me. I am PREPARED.

If you go to a music instance in your kitbash special, you do not get to be seen in that avvie. Done.

Really like the roles allowlist addition; very thoughtful. Means that there is a workaround for vetted community members too (e.g. an avatar with 75k tris but the person is a core community member so you give them the hall pass).

4 Likes

Any news for the avatar optimizer being in the work right now? Would be nice if it could release soon after this announcement.

1 Like

Notice your math here - it assumes 80 players. The only times I ever see more than 40 people in an instance is for major music events (Dieselworks, Shelter, etc.) or NYE (Extra Capacity). Game worlds seldom reach 40; you’re assuming every instance a player joins will be a full one, which is a stretch. Why not try to run a statistical analysis and try to find the average # of users per instance (excluding 1-person and private instances)?

Lets just throw out a number: 40. That now halves the results you just presented and makes it much easier to run. Assuming most PC users are on 8GB GPUs - even each avatar being 100MB of Texture Memory still leaves half the GPU for overhead on the world and other processes. Yes, I am omitting other avatar stats here, but still showing you that your math is skewed to the worst-case scenario.

Ideally, the limits you just enforced shouldn’t be for 80-person instances, because that’s not the regular VRChat experience. You are trying to force optimization globally for the worst edge-cases (80+ people), which now harms the average and smaller instances.

Also, please do keep in mind that people who want customized avatars often mix-and-match (i.e “Kitbash”) through the process of drag-and-dropping assets in Unity – Booth/Gumroad/Jinxxy/Etc alike – don’t know blender or other 3D software. In addition to this, many of these people might not have not have the free time to learn a new application because of their limited time outside of VRChat. These people are now pushed to buy mass-produced, lookalike avatars off the marketplace, which limits the creativity and personality of this platform.

While I’m here:
80-90K polycount should be very poor.
100 MB texture memory should be very poor.
Above 8 Skinned meshes should be very poor. (Assuming body, head, hair, and clothing pieces are separate here).
Material slot limits are fine right now.
Constraint Counts are absurdly high.
Particles/Lights should be more strict in general.

If you are going to push this update, you need to update avatar performance stats. It’s been a major issue and a terrible guideline for a long time.

3 Likes

It’s still confusing to me that this feature, which is both only available for group instances and is optional, is being fought against, and the main argument against it is… not being able to use a very poorly performing avatar in busy instances?

It sounds to me like some of the avatar creators need a reality check. The performance rating numbers are fine, you can have great detail with the limits given. Creators have made it work in the past, what’s the issue now?

Actually, who remembers when the max poly count was something like 35k? It got increased, let people add many things to their avatars, but now that so many got so used to endlessly pushing the new higher number now the complaints come back that it’s “not enough”, or that it’s unrealistic in smaller instances.

Would it make sense to make an avatar according to the size of instance it is made for? Nobody will do that, no one is going to make an avatar and give it a “ideal for instances of 15 people” rating, that’s absurd.

Complain about there not being a way to bypass this restriction, at least that is a valid complaint, even if I strongly disagree. All the other complaints about the rating system are so out of touch.

2 Likes

I remember Eyo from Jingo being 66k poly, a model from end of 2020 that i still think is looking great outside maybe the fingers, Mayo being almost 200k poly show there is a set disregard on optimisation from avatar base seller to a certain degree. :melting_face:

1 Like

The only ones that really do restrictions are the large scale clubs (at least that i see) you dont see any of the black cat groups for example having these limits in the group rules because people are no where near as clustered as they often are in club venues. Also because people are (generally) more “casual” inside of these public “hangout” groups.

The reason i see for targiting specifically 80 player instances as the problem child is because thats where the problem is the most noticable and this feature will have the most effect plus most groups dont even bother with avatar restrictions in the first place. Especially so if they dont hit the 80 player threshhold.

Dont we know its closed door gatherings of friends that make up the majority of instances these days making that the regular VRChat Experiance? or maybe im misunderstanding:

Most people who want a customised avatar find a premade avi on jinxxy that fits the look they want and will change nothing or textures at the MOST not even bothering or understanding or caring that you can even delete unused outfits (outside of boothies to my knowladge) they dont even reach the stage where they customise them most of the time (also 100mb of texture memory? i most often see 150-200+ at the least when public hopping).

For those people i think its okay that they are hidden from everyone else if a group requires it and im okay with that because spaces still exist for people to engage with an enviroment outside of performace restricted groups.

Silly example but i see it if a bar IRL has a dresscode and you show up in an inflatable dino suit they wont allow you in why cant we have the same inside of vrchat if you dont meet a social expectation of “dress code” when a group requires it. Unless you whana sit there and argue with a staff member that no how dare you

(i still want friends to be showable but like im whatever on it till i try it out myself)

I feel like a lot of pushback can be summarized as this feature (and performance rank system) being effectively useless for scenarios that are not a 80-player packed club instance targeting mid-range hardware. That, and people valuing personal choice, but that ship has sailed long ago with EAC. People should not see this as very poor avatar users being entitled brats, but instead recognize that there needs to be nuance outside of an 80-player instance running on a toaster.

As many people noted, the current very poor limits maybe sorta make sense for a 80-player instance. Even then, I would still complain about the polycount limit being too low for modern hardware - skinning is still per-vertex and per-blendshape, and relatively cheap at that compared to the horrors that have to happen for each fragment/pixel. And, anecdotally, most people’s GPUs sleep while their CPUs struggle with animators doing bit fiddling for face tracking, which is not even reflected in the performance stats.

This leaves all smaller events underserved. Same for events where the average PC spec is known to be beefier, but some limit on avatar complexity is still wanted. There’s no useful gradation within very poor, no way to ask users to optimize a bit, or focus on optimizing CPU-heavy things, aside from a non-specific “please use auto-optimizer tools” that would produce a hard-to-quantify result. On the opposite end of the scale there’s the questionably useful good/excellent distinction that very few actually used avatars would care about, and event runners can’t care about. The usefulness of the “Poor” rank is also debatable, as once one can hit the polycount target, hitting the rest of them for the medium rank requires way less effort and skill. I suspect VRC could run some kind of statistical analysis to see if there’s a dip in poor avatars overall compared to mediums and very poors.

Adding newer higher performance limits, and maybe shifting the scale down if too many ranks sounds problematic could be one way to improve the situation. Perhaps do this only to polycount (i.e. make poor 70k, and very poor 140k, with no other changes), to reflect the commonly observed GPU/CPU cost imbalance.

At the end of the day, event runners have the option of choosing how restrictive they want to be, and for many of them the current system effectively gives them only one choice: a polycount limit perceived as needlessly punishing, or no limits at all. Those that want to be even more restrictive can always crank the restriction down to “good”, or lower in a shifted-down system. There’s no way to target “very poor but not too insanely so”.

Finally, a crazy thought: let a group define a custom rank themselves, ala “group approved performance goal”, and limit avatars to that. With each performance stat having a configurable limit, not one of the preset ones. The idea has some rough edges with communicating this clearly, and the wild zoo of different standards that would arise, but this would allow the community as a whole to experiment with what performance actually is, and which goals actually make sense, instead of relying on VRChat knowing better and trying to make a one-size-fits-all system - or keeping an outdated system from a time where GTX980 was peak and serverside scanning was still a pipe dream.

4 Likes

Hopefully they at least up the minimum requirements for poor avatars. A lot of mine are labeled poor due to their low requirements and have no way of updating thrm.

Or at the very least, they dont k.pliment this update. Forced minimum requirements is kind of idiotic anyways. Not sure who approved it, but it was a dumb idea

awful idea just don’t show people avi and i shouldn’t be force chnage avi becuase random group owner need his lil fps

Great to see the Imposter system being developed further. Plenty of groups already have ‘unofficial’ rules for performance ratings at their events, so this is going to clear up headaches for a lot of event organisers and the like.

Are ‘Imposters at a distance’ a planned feature in the future? Having a sort of Earmuff-Mode-style feature, but switching distant avatars for their Imposters, would be a really cool option to have imo.

5 Likes

Lmao. This function is especially made for people like you. No respect for others but yourself, Yikes..

6 Likes

Beefed up my computer using your guide so I can enjoy seeing lobbies full of very poor avatars whenever I want. You’re letting very poor avatars still join these instances still and doing a lot of work to make impostors look good. When I see these really good looking impostors, I’m going to want to enable the avatar because my system can handle it. Maybe just go all the way with this update instead, if the group instance owner doesn’t want very poor avatars visible don’t even let them join or be able to swap into them. If I don’t see an impostor, I won’t be compelled to enable it and get pissed when I can’t. And people putting these limits on their instances don’t want impostors in the lobby anyways.

1 Like

Will Bounding Box Size contribute to being affected by this? As that performance category will make an avatar show up as “Very poor”, but doesn’t actually get culled if a user blocks very poor avatars.

1 Like

Why do you need a huge bounding box in a full lobby

Not everyone is a 1.4 meter tall anime girl :)

Yes but you not above 4-5 meter tall right?