Update to the number of triangles in the performance ranks
lilxyzw
Current problems
Almost all avatars have a performance rank of "Very Poor," making it virtually impossible to block avatars based on their performance rank. This means that blocking based on polygon count or texture size, which directly impact performance, is currently impossible. While other blocking methods exist, such as blocking by download size or uncompressed size, these are insufficient alternatives as they are also affected by texture compression settings and the size of other assets.
As a side note, because the performance ranking system is effectively non-functional and has no limitations, the polygon count of avatars and costumes sold on BOOTH seems to be increasing year after year without limit. Recently, commonly used avatars have approximately 150,000 tris, and costumes have approximately 200,000 tris.
Request details
I think the triangle count in the performance ranking system needs to be updated. Currently, all grades below "Good" have a uniform polygon count of 70,000. This limitation is a bit excessive for current hardware.
Remarks
I have conducted some (very simple) testing in the past. I believe that optimizing to under 300,000 tris is sufficient for instances like talking with a small number of friends, and under 70,000 tris for large instances like events. The testing was done with a single avatar, but I created a tool to ensure that each mesh is a separate asset for the testing.
I'll leave the final updated figures to the VRChat staff, but I have roughly the following figures in mind.
Poor: 300,000 tris
Medium: 150,000 tris
Good: 70,000 tris
Related posts
日本語 / Japanese
現在の問題
ほとんど全てのアバターのパフォーマンスランクがVery Poorであるため、パフォーマンスランクを使用したアバターのブロックが事実上できない状態になっています。つまり現在は負荷に直結するポリゴン数やテクスチャサイズでのブロックが不可能です。他のブロック手段としてダウンロードサイズ、非圧縮サイズによるブロックも存在しますが、テクスチャの圧縮設定やテクスチャ以外のアセットサイズによっても変動するため代替とするには不十分です。
余談ですが、パフォーマンスランキングシステムが事実上機能しておらず制限も存在しないため、BOOTHで販売されているアバターや衣装のポリゴン数が年々際限なく増え続けているようです。最近よく使われているアバターのポリゴン数はおよそ15万ポリゴン、衣装はおよそ20万ポリゴンになっています。
リクエスト内容
パフォーマンスランキングシステムのトライアングル数をアップデートする必要があると思います。現在ではGood以下は一律7万ポリゴンです。この制限は現在のハードウェアにとっては少し過剰です。
備考
私は過去に(非常に単純な)検証を行いました。少人数のフレンドと会話するようなインスタンスでは30万ポリゴン以下、イベントなどの大人数インスタンスでは7万ポリゴン以下を目安に最適化すれば十分であると考えています。検証は単一のアバターで行われていますが、メッシュはそれぞれ別アセットになるようにツールを作成して検証しています。
更新後の数値の決定はVRChatのスタッフにおまかせしますが、私は大まかに以下の数値をイメージしています。
Poor: 300,000 tris
Medium: 150,000 tris
Good: 70,000 tris
関連する投稿
Log In
隱葉月夜
Modern GPU bottlenecks are determined by vertex computation rather than triangles as geometry has limited parallelizability especially when bottlenecked by Skinned Mesh processing and outline shaders.
To maintain 40+ FPS on mainstream cards (3060/4060) with 15 active players, a 65k vertex/100k triangle limit is necessary.
Current GPUs waste 70% to 80% of cycles on vertex shaders because throughput relies on L2 cache and front-end frequencies. (RTX3060~RTX5060)
Profiling shows that unoptimized characters (100k+ vertices) combined with external factors like dynamic shadows, mirrors, and tree can drive per-frame rendering to 100 million triangles. (dozen+ players)
Generally speaking, a reasonable mesh follows a ratio of one vertex to two triangles.
After UV unwrapping, the ratio between vertices and triangles typically fluctuates such that one triangle corresponds to approximately 0.55 to 0.65 vertices.
This load far exceeds Steam Hardware Survey averages, especially with modern assets reaching 800k triangles and 100MB mesh memory, which even high-end cards (5070 Ti/5080) struggle to handle.
Have you ever seen a set of Booth clothes that reaches over 800k triangles once you put it on?
BadNicc
I want to add on to this because I see a lot of well formed but not helpful opinions. Yes, relaxing it may make people do even worse with optimization of triangles. But in reality, polygons are one of the harder things for people to optimize without a lot of know-how, unlike other AND MUCH MORE PERFORMANCE HOGGING THINGS like texture memory, material slots and skinned mesh renderers. You can remove clothing options, compress textures, etc all very easily in Unity and get a decent opti avi. But a layperson shouldn't be expected to also learn how to decimate the base and head to a degree that will work and not look bad.
The hardest thing to optimize, is also the least performance hungry, but once you're already very poor- why bother doing more? It won't "look" better, you'll still be very poor. Triangles should go up. Arguably? Everything else should be lower.
4liceD
maybe 300k is a bit excessive, but we can easily go with 150k / 180k for poor
Docteh
I think vrchat should be very conservative with changes to the performance ranks. Like how about raise the polygon count for poor from 70k to 75k, but also keep a limit of 70k for a skinned mesh renderer. The other 5000 polygons are for static meshes
Large amounts of polygons are okay in small groups, but I'm liking the ability to participate in larger groups.
For the problem of nobody wanting to wear an optimized avatar, maybe instead of force showing a users avatar choice, maybe also add an option to force show a particular avatar. Then I can opt to see someone's avatar if I feel it's reasonable, but if they then swap to something else, I don't need to worry if they're going from something close to reasonable to a hot mess. Individual avatar enables should be stored client side. But I guess that'd make avatar IDs easier to get. Hmmm. Maybe the combination of user and avatar IDs can be obfuscated.
I guess all things considered, I think vrchat should finish their avatar optimization tool, we see where that goes first
bote
We really need just more advanced blocking options. The current system just doesn't work and increasing limits will just put us in the same situation in a few years. As it is right now though, the current system is useless for most users.
elіan
IMO the current tri limits are reasonable, and increasing them to accommodate poor optimization is a bad direction. A client side option would make more sense maybe
lilxyzw
elіan I agree with that. What I'm essentially looking for is a way to block avatars that slow down the frame rate...
Zеkk
Its been mentioned several times in the past on the official VRChat streams that if this limit were updated, it would likely be revised down, not up!
Example:
lilxyzw
Zеkk So... does this mean that there will continue to be no way to block avatars based on the number of triangles...? I suspect that avatar blocking based on individual performance rank values will not be implemented due to the complexity of the settings. (That's also why I posted this feature request.)
らんちゃ
I strongly resonate with your frustration regarding how shop-bought assets ignore performance standards. However, I find a critical contradiction in your conclusion to "loosen the limits."
- A Logical Contradiction: Relaxation is a Slippery Slope
If the problem is that shops are neglecting optimization, then raising the triangle limits will only validate their "technical sloth" and encourage the distribution of even more bloated assets. This doesn't solve the problem; it accelerates the degradation of the platform. Instead of giving up on the current limits, we should be discussing stricter governance—perhaps even blocking anything below a certain rank—to protect the ecosystem.
- "With great power comes great responsibility"
As the sudo message reminds us, leaders in this community have a responsibility to set the right example. Using hardware evolution as an excuse to stop optimizing is a step backward. Just as legendary console devs obsessed over every single polygon, we should use our modern tools to master the "art of the squeeze"—achieving the impossible within strict constraints.
- The Reality of the Mobile Launch
The launch of VRChat Mobile was a clear signal: the future is "Universal Accessibility." Loosening PC-specific limits creates a digital wall that segregates mobile users from the rest of the community. In a cross-platform era, chasing "local optimization" for high-end PCs is a betrayal of the platform’s long-term vision.
I sincerely hope that as a technical leader, you will choose to champion the "Aesthetic of Optimization" rather than seeking the easy way out. Show us what true professional engineering looks like.
lilxyzw
らんちゃ Your comment seems to be an "ideal" rather than based on "reality." The performance ranking system simply reflects the performance of avatars. My post was simply a request to update it to a "meaningful value" so that avatars can be blocked based on their performance.
Unfortunately, users will continue to increase polygons indefinitely unless there is a hard limit, regardless of whether the performance ranking is changed or not.
Loki H
lilxyzw Performance ranks reflects the performance of avatars 95% of the time.
Your testing is not into the category of scientific method, we need the details of your testing, polygons, shaders used, skinned mesh, in what particular scene, cpu time, gpu time, etc.
Loosen up the ranks/creating new ones will not be beneficial for anyone.
The only thing that would work will be a review of the whole system once again, and this time could end on a hard limit for avatars, many would be against due to the "it limits my creativity" argument.
隱葉月夜
らんちゃWhat is reasonably attainable is more important than what is ideal. It is better to achieve true trade-offs rather than mere 'limitations,' but this requires extensive and rigorous discussion.
西明寺弥生
The performance ranking isn't only malfunctioning due to polygon count.
It's not good if only avatars that are VaryPoor under the old criteria are blocked simply because the polygon count was reviewed.
If a review is to be conducted, I think all criteria need to be reviewed.
lilxyzw
The following is supplementary information.
The impact of polygon count on performance varies depending on the following factors (there may be others):
Bone skinning
BlendShape skinning
Execution of ForwardBase pass
Execution of additional passes (such as outlines)
Execution of ForwardAdd pass (once for each additional real-time light processed)
Execution of ShadowCaster pass (once for screen depth, and once for each real-time light that uses shadows)
Of these, the ForwardAdd pass is not executed unless the avatar is within the range of the light, and since an alternative method called VRCLV has emerged, I believe it can be ignored when performing performance tests.
Load More
→