Guides:Avatar Performance Ranking
Introduction
VRChat uses several systems to help manage performance and safety within the platform. Avatar Performance Ranks are one of these systems and are used to communicate how resource intensive an avatar is.
Performance Ranks
Ranks range from Very Poor to Excellent, based on avatar complexity and resource usage in-game.
Avatar Metrics
VRChat has a unique avatar metric system that outlines the performance of each avatar, or world. An avatar's metrics are the main measurement for your Avatar's Performance Rank. These metrics measure how resource-intensive your avatar is. The more demanding the metrics are, the lower your avatar will be ranked. Lower ranks affect avatar visibility, performance, and the experience of other users.
Metric Elements
- Polygons: These measure how complex your avatar's geometry is. A polygon count of an avatar is the number of tiny triangles that make up an avatar's 3D shape. More triangles = more detail, but more performance-intensive; Therefore more work for a system to process and render. This is also known as Triangle Count.
- Materials: Unique surface types that apply to each part of your avatar. Skin, clothing, eyes, harnesses, etc. More materials = more performance-intensive; Therefore more work for a system to process and render.
- Textures: These are image files (Such as PNGs, or JPGs), that give color and detail to the materials. Larger textures mean more detail, but make an avatar's size bigger. Bigger size means bigger download, and people may not render your avatar well. Too big of an avatar is not allowed, and cannot be uploaded.
- Dynamic Bones (Physbones): Bones that move or "jiggle" dynamically with how the avatar itself is moving. Things such as hair, tails, ears, or small accessories may have Dynamic Bones. These can be converted and/or removed easily for avatar performance.
- Meshes (skinned): These are meshes that deform with the bones. Things such as the body, face, and clothing. Each mesh adds complexity to the avatar; it is recommended to merge and blend meshes when possible.
- Audio Sources: These sources are simply sound emitters that are attached the the avatar. Voice lines, music, sound effects are audio sources. Multiple sources may cause lay or audio clutter. It is recommended to use 1-2 maximum; Avoid looping audios unless necessary.
- Real-Time Lights: These are lights that cast shadows or change dynamically. Things like glowing eyes, flashlights, or built-in light probes on some avatars. More lights cause heavy lag. It is highly recommended to bake lighting into textures instead.
- Shaders: Code that controls how materials look. Things such as a materials glow, if it is transparent (PC only), or animated. Complex shaders are highly performance-intensive, and will crash low-mid end systems if not used carefully. Simple shaders such as VRChat's built-in shaders are safe for all devices. It is typically recommended to avoid transparent shaders and animation unless they are optimized.
Rank Thresholds on PC
Note all GameObjects and Components, including those that are currently disabled, count towards the Avatar Performace Rank.
| Rank | Excellent | Good | Medium | Poor |
|---|---|---|---|---|
| Triangles | 32,000 | 70,000 | 70,000 | 70,000 |
| Bounds Size | 2.5m x 2.5m x 2.5m | 4m x 4m x 4m | 5m x 6m x 5m | 5m x 6m x 5m |
| Texture Memory | 40 MB | 75 MB | 110 MB | 150 MB |
| Skinned Meshes | 1 | 2 | 8 | 16 |
| Basic Meshes | 4 | 8 | 16 | 24 |
| Material Slots | 4 | 8 | 16 | 32 |
| Physbone Components | 4 | 8 | 16 | 32 |
| Physbone Affected Transforms | 16 | 64 | 128 | 256 |
| Physbone Colliders | 4 | 8 | 16 | 32 |
| Physbone Collision Check Count | 32 | 128 | 256 | 512 |
| Contacts | 8 | 16 | 24 | 32 |
| Constraint Count | 100 | 250 | 300 | 350 |
| Constraint Depth | 20 | 50 | 80 | 100 |
| Animators | 1 | 4 | 16 | 32 |
| Bones | 75 | 150 | 256 | 400 |
| Lights | 0 | 0 | 0 | 1 |
| Particle Systems | 0 | 4 | 8 | 16 |
| Total Particles Active | 0 | 300 | 1000 | 2500 |
| Total Particle Active Polys | 0 | 1000 | 2000 | 5000 |
| Particle Trails Enabled | False | False | True | True |
| Particle Collision Enabled | False | False | True | True |
| Trail Renderers | 1 | 2 | 4 | 8 |
| Line Renderers | 1 | 2 | 4 | 8 |
| Cloths | 0 | 1 | 1 | 1 |
| Total Cloth Vertices | 0 | 50 | 100 | 200 |
| Physics Colliders | 0 | 1 | 8 | 8 |
| Physics Rigidbodies | 0 | 1 | 8 | 8 |
| Audio Sources | 1 | 4 | 8 | 8 |
Optimization Tips (Per Metric)
Polygons
Use decimation tools in Blender or Unity to reduce triangle counts. Avoid higher-poly accessories if possible. Combine meshes when possible.
Materials
Merge materials using texture atlases and tools available in Unity. Fewer materials = fewer draw calls, which improves render speed.
Textures
Compress textures (make smaller size, less detail) when possible. It is recommended to use formats like JPEG or WebP for lightweight assets. Use 1024x1024 or lower if possible.
Dynamic Bones (PhysBones)
Switch to PhysBones (Newer system). Limit bone chains, colliders, and detail. Use bone filters to exclude unnecessary movements, and reduce bugs.
Meshes (Skinned)
Combine skinned meshes in Unity using tools like Mesh Baker, or available 3rd party software. Avoid separate meshes for small accessories if possible.
Audio Sources
Use one audio source per avatar if possible. Avoid looping audios, or higher-bitrate audio unless absolutely essential.
Real-Time Lights
Avoid real-time lights at all possibilities. Instead, bake the lighting into textures or use emissive materials.
Shaders
Annoying, but necessary. Use lower-intensive shaders. Unlit and Mobile of course are recommended, but don't look as good or flashy. Avoid transparency, animation, or multi-pass effects unless they are optimized and minimal.
It is possible to view your current avatar metrics from the VRChat avatars menu. Useful to identify possible avatar bottlenecks, and to know where adjustments need to be made if necessary.
Related Systems
Official resources
- Avatar Performance Ranking System — https://creators.vrchat.com/avatars/avatar-performance-ranking-system