Better Ranking for Triangle inside the Avatar SDK
Shinyflvres
Currently, the triangle part of VRChat’s Avatar Performance Rank is misleading on PC because it creates a hard cliff that does not match real-world performance behavior. a genuinely heavy avatar can still rank Excellent, and a well-optimized avatar can still end up as Very Poor.
The triangle thresholds on PC also make the system feel unfair. On PC, the official limits are 32,000 triangles for Excellent and 70,000 triangles for Good, and the triangle cap is still 70,000 for Medium and Poor. Anything above 70,000 immediately becomes Very Poor because that rank is unbounded.
That means 70,001 triangles is treated the same as massively unoptimized avatars, which is discouraging and makes creators stop caring once they cross that single line.
On PC and PCVR, triangles are not automatically the primary performance problem. They can matter, especially for skinned meshes and when combined with other expensive features, but VRChat’s own optimization guidance puts strong emphasis on reducing draw calls and CPU overhead by limiting skinned meshes and material slots. Each additional material slot is effectively another draw call and consumes more processor time, and material slots also drive submesh creation which adds draw calls.
Texture memory and shader cost can also be major FPS killers, and these factors are explicitly not represented by the rank’s static triangle number.
I also tested this in a controlled scenario: a very high-poly avatar (about 2,000,000 triangles, 1 material, 1 skinned mesh) versus a low-poly avatar (about 7,500 triangles, 1 material, 1 skinned mesh) in the VRChat Home world. The FPS difference was relatively small (about 350 FPS vs 375 FPS). This supports the point that, when materials and meshes are kept simple, triangles alone are often not the bottleneck. It does not mean triangles never matter, but it shows why a single harsh cutoff is not a good signal for PC performance.
The triangle ranking needs a refactor on PC to remove the 70,000 cliff and provide more meaningful tiers. My suggested triangle tiers would be:
40,000 triangles = Excellent
70,000 triangles = Good
85,000 triangles = Medium
90,000 triangles = Poor
98,000 triangles = Very Poor
Why this approach: it keeps optimization incentives alive. With the current system, one extra triangle past 70,000 immediately labels an avatar as Very Poor, so people stop caring. A gradual scale would better reflect reality and encourage creators to keep improving instead of giving up at 70,001.
Finally, it is important to remember that rank alone cannot predict FPS. Because the rank does not consider shader complexity, texture resolution, pixel lights, or animator behavior, an avatar that ranks Excellent can still run worse than a higher-ranked avatar if it uses heavy shaders or excessive VRAM.
Below is an example profiler graph comparing 110k, 70k, and 45k triangle models. In this test, they show the same end result in terms of performance. Even when I place 80 instances into the scene, the difference between 80×110k triangles and 80×45k triangles is only about 4%.
Another test shows that a 30.000 Triangle Avatar with Unoptimized Materials can consume more GPU and CPU Usage compared to a Very Poor Avatar that has Optimized Materials but 70.001 Triangles. Thus; Is missleading.
Log In
Shinyflvres
Related but never tracked here: