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
Shaun
I think more granular control over perf blocking would be the best solution. Let people set their own thresholds for poly count, material count, lights, physbones, etc etc. If any of them goes over the user-set limit, bam avatar is perf blocked and you get an imposter.
As a bonus, this could be extended to instance moderators. Then you can set up automatically enforced limits for your events, anybody wearing an avatar that crosses those limits will just be globally changed to an imposter for everybody there
Castell
Instead of a revision, why not make a HARD cap of polygons ? Something like 500k ? So any content above that would not work. That could stop the polygons increasing in avatars over the years. It feels like that number is just getting higher with every new hardware unlocking new limits of processing.
tktk_1(てけてけ)
I organize live music events and also create avatar costumes and avatars. I would like to share my perspective based on these experiences.
First, avatars ranked as “Very Poor” are essentially not functional. They can create a situation similar to the “tragedy of the commons,” where shared system resources are heavily consumed.
During events, avatars often place a much higher load on the system than the world itself. This can cause issues such as audio desynchronization and stuttering. For this reason, it is difficult to allow “Very Poor” avatars in event environments.
The Avatar Culling feature can help reduce system load to some extent. However, record or stream events, it is still preferable to use avatars with lower performance costs. In practice, avatars rated “Poor” or better can generally run in an 80-player instance without major issues.
Another issue relates to penalty for creators. Currently, there is no penalty for high polygon counts, and there is little motivation to optimize models. As a result, creators tend to prioritize the visual quality of shop images, which leads to increasing polygon counts. This situation can disadvantage creators who follow guidelines and spend time optimizing their models.
At the same time, reducing polygon counts is not easy for most users. Therefore, it may be more practical to address this issue through system-level measures rather than relying on individual effort.
One possible approach is to define a clear maximum polygon limit and prevent uploads that exceed it. Without such a standard, polygon counts may continue to increase. A shared guideline would also help build common understanding among users and creators.
In addition, it may be helpful to introduce an automatic polygon reduction process during the build stage before upload. Instead of reducing all models to a fixed threshold, such as 70,000 polygons, the system could apply stronger reduction to models with higher original polygon counts.
AYANO_TFT
I completely agree with the idea of distinguishing the current “Very Poor” rank, but if the threshold is raised, wouldn’t creators and users interpret that as “the restrictions have been relaxed”?
To prevent that, how about approaches such as:
- Creating a new category with a different name
- Rolling it out together with a feature that has real enforcement, such as per-instance performance rank limits
現状の"Very Poor"ランクを区別したいという考えには完全に同意しますが、制限値を上げた場合にクリエイターやユーザーは「制限が緩和された」と解釈してしまうのではないでしょうか。
それを防ぐために、次のようなアプローチはどうでしょうか:
- 別の名称の新しい区分を設ける
- インスタンスごとのパフォーマンスランク制限など、より実効性のある機能と併せて導入する
Kitto Dev
If they do change the limits, that would put older hardware at a disadvantage. This change would also make these higher-poly PC avatars harder to optimize for Mobile Platforms (Quest, Android, iOS) without looking ugly or poor, and even worse with the decimation modifier in Blender in some cases.
The point is that, I think, increasing the cap would put some creators and some devices with weaker hardware at a disadvantage, but that could just be me.
owlboy
This will just make every single person who has blown past very poor believe that they deserve to go even higher than they do now with the current scale.
UGC always ends up riding the edge of these any limits they are given.
People always feel it’s fine for just themselves to push the limit. Leading to everyone doing it and no single person being the exception.
gpcr_rita
I’ve seen a few posts asking users and creators to reduce the number of polygons.
Expecting users and creators to voluntarily reduce polygon counts is, frankly, purely idealistic. As lilxyzw mentioned on X, without strong structural measures—such as hard limits that prevent uploading or mandatory manual "Show" for Very Poor avatars—the current trend will not change.
The Structural Reality:
Asymmetry of Skill and Tools:
While tools (like NDMF-based optimizers) have made merging materials and compressing textures easily accessible, meaningful mesh optimization (decimation and weight re-painting) remains a high-threshold task requiring specialized knowledge.
Lack of Incentive:
Because a slightly optimized avatar and a completely unoptimized one both fall into "Very Poor," users lose the incentive to perform the hardest optimization tasks.
Market Demand vs. Hobbyist Limits:
As long as players prioritize high-fidelity aesthetics, the polygon count of distributed assets will continue to rise. Most creators are hobbyists, not professionals; demanding pro-level optimization from them is unrealistic.
Proposed Solutions:
To address this, I believe we need a more realistic "ruler" and better self-defense tools.
Update Performance Rank Criteria or Add a New Rank:
The current criteria should be updated to reflect modern hardware reality. Furthermore, a new rank above "Very Poor" (e.g., "Extreme" or "Critical") should be introduced to clearly distinguish between "standard heavy" avatars and those that truly paralyze instance performance.
Implement a Realistic Hard Limit:
Establish a generous but firm upper limit—perhaps around 500,000 to 1,000,000 triangles. This would act as a safety net similar to current upload size limits, blocking "extreme" performance hogs without stifling creative freedom. While we must be cautious not to restrict creativity, a "loose but existing" ceiling is necessary.
Advanced Blocking Options:
As I mentioned in a previous post, I also believe we need "Advanced Blocking Options" as an expert-level setting. Allowing users to set individual numerical thresholds for Triangles, Material Slots, and Skinned Mesh Renderers would enable filtering based on actual rendering bottlenecks relevant to the user's hardware.
WubTheCaptain
I believe the current 70,000 triangles limit is generous for avatars and is grounded in reality for technical reasons, when the recommended amount is < 32,000 triangles. Above 65535 vertices in a mesh, Unity engine has to switch to a 32 bit index buffer (instead of 16 bit) for vertices (since Unity 4) and split a mesh into submeshes (since Unity 2022), from what I understand. 16 bit takes less memory and bandwidth.
Worse, those submeshes must be rendered
serially
in the order issued by the CPU (draw calls). This (and animators) is a key contributing reason why VRChat tends to be more CPU bound than GPU bound (on typical hardware configuration from the current year).Avatar triangles are also skinned and not static, thus cost more performance.
Increasing the triangle count limit in performance ranking would thus also raise the CPU rendering costs, which is already considerably less than ideal (frequently < 90 FPS in VR).
The lowest common denominator for hardware is the minimum system spec: NVIDIA GeForce® GTX 970 / AMD Radeon™ R9 290, Intel® i5-4590 / AMD FX 8350. That's my optimization target. To be specific, my goal is to achieve 90 FPS (< 11.1 ms render time), and for 80 (or even 100) users in an instance, that's not a lot of budget per avatar.
Sure I'd like to see some legacy, unsupported hardware removed from minimum spec to raise the floor to target, but that's off-topic for this conversation.
> because the performance ranking system is effectively non-functional and has no limitations
That's the definition of "Very Poor": Unbounded performance.
I think the current performance ranking system works well for events especially (excluding animators which are blackboxes and there's no way to get any performance metrics out of those).
This is a social problem of user generated content not being optimized, more than a technical limitation on triangles imho. I don't feel limited by creativity with the current performance ranking system. A highly detailed (but still otherwise optimized) Very Poor avatar may be fine in a small instance with friends.
N.B. I don't have any performance metrics at hand with Unity profiler comparing the different scenarios here on lowest end hardware, it's hard to get exact measures of what's acceptable.
隱葉月夜
WubTheCaptainMoving from 16-bit to 32-bit has almost zero impact on performance, and the memory footprint remains relatively small.
Furthermore, submeshes and 32-bit precision usually do not occur simultaneously.
To accurately profile a GPU, it is recommended to use vendor-specific profiling tools rather than Unity’s built-in options.
For instance, NVIDIA Nsight Graphics is preferred, though it requires DX12.
Alternatively, you could use an older version paired with a GA10x series graphics card to access DX11 while maintaining support for range profiling; this approach is simpler, though less precise and stable.
な る と
Regarding revisions to the performance ranking system, I believe such changes may be difficult due to the existence of the avatar store.
Therefore, I would like to propose adding a separate system that allows avatar visibility restrictions based on polygon (triangle) count, independent of the performance rank.
Currently, it is possible to restrict avatar visibility based on download size and texture memory. However, adding a similar option for polygon count would make the system more practical.
Avatars with higher polygon counts tend to also have more materials and textures, making polygon count a clear and intuitive indicator of rendering load. By introducing this type of restriction, users would be able to manage performance more flexibly while minimizing the impact on existing systems and the avatar marketplace.
For example, it would be desirable to allow users to set visibility limits at thresholds such as 70k, 100k, 200k, 300k, 400k, and 500k polygons. Values above 500k may not be strictly necessary, but could be considered if there is sufficient demand.
ToothpasteMain
な る と
> Therefore, I would like to propose adding a separate system that allows avatar visibility restrictions based on polygon (triangle) count, independent of the performance rank.
The single greatest impact on performance from VRC's performance ranks is material count. Each material adds a draw call and impacts texture memory.
Instead of triangle counts, I propose hiding avatars based on material count.
lilxyzw
To be honest, I don't know what kind of scenarios each rank is intended for, and I think the values presented in the comments on this topic will be completely different for each user.
I provided the example values based on the following scenario.
- Poor: A small group of friends (8 or fewer) gathering in front of a mirror to chat
- Medium: A small gathering of 16 or fewer people
- Good: A slightly larger event with around 32 people
- Excellent: Something even larger, with even more people
Well, 300,000 polygons may not be a problem in terms of load, but I think it's unnecessary. I presented this value without considering my own opinion because I think performance rank represents performance, but around 150,000 polygons should be sufficient unless you're creating an avatar with an extremely complex design.
Load More
→