Skip to main content

VRAM Usage A.K.A Stop Being Monsters With Your Textures

With the most recent Developer Update post at the time of writing this, we have learned that Avatar Texture VRAM will now be accounted in performance ranking.

Below is a table of what the VRAM limits will be according to the dev post.


Excellent Good Medium Poor Very Poor
PC <40MB <75MB <110MB <150MB >=150MB
Quest <10MB <17MB <25MB <40MB >40MB

What Is VRAM?

VRAM stands for Video Random Access Memory to put it simply, it temporarily stores image data in a place the computer can easily access it to render. VRAM is used to display textures and render 3D models.(more info) VRAM is located on the GPU to reduce the latency compared to regular RAM. According to Steam's January 2023 hardware survey, the majority of of Steam users have 8 GB of VRAM, VRChat is basing the performance rankings off of this data, along with taking off 2GB to account for VR compositing and your OS rendering.

How Do I Reduce My Avatar's VRAM use?

Do NOT turn off Mipmaps! You may have heard this can reduce VRAM but it can cause performance and visual quality to take a hit! Poiyomi's post here goes more in-depth with it.

Overall, I highly recommend reading Poiyomi's Optimizing Texture Memory post as well, it goes into much more depth about this topic than I have.

First of all, I recommend downloading Thry's Avatar Performance Tools, this has a very helpful tool that'll help you reduce your VRAM usage, you can access this tool by going to Thry>Avatar>VRAM to open the window once you've installed the UnityPackage. Drag your avatar into the input, and then hit "Recalculate" it'll then show you how much VRAM your avatar is taking up as you can see below with an older model of mine.

image.png

This avatar has alright VRAM usage, it would get put into "Good" performance ranking, however we can get it much lower than this very easily! Let's go into the settings of the texture taking up the most space on our model here.

image.png

As you can see, it's set to 4k, but does it really need to be? Frankly, no. Below is a gif showing the difference between 4096 and 2048 on my model. The only difference it particularly makes is on a very small part of my model that has a bit of detail on the horns, that is largely unoticable.

textest.webp

You know what is noticeable though? The VRAM usage! Let's head back to Thry's VRAM Calculator.

image.png

As you can see, the VRAM usage dropped significantly, from 21.33MB to 5.33MB, that is a 16MB difference, for VERY little quality loss. Now my avatar only uses 29.76MB and fits snugly into excellent. However, we can take this a step further by doing it with the rest of the textures. I also went ahead to split the face of the mesh from the rest of the body and removed all the shapekeys on the body to lower the VRAM usage of the meshes. This doesn't do too much on low-poly models like mine, but can have a tremendous effect on high-poly models.

Note on matcaps and similar textures

If you've downloaded a pack of matcaps somewhere, chances are they aren't configured correctly and are set to 2048x2048 in Unity. Check the original file to see it's resolution, majority of matcaps tend to be around 256x256 and 512x512. This has occasionally made it's VRAM usage go up in my experience. Usually not by much, but if you're trying to get every byte you can, make sure each texture is at it's appropriate resolution.

image.png

After recalculating, you can now see we've gone from 45.76 MB to 21.57MB, that is roughly a 53% decrease!

So, in short, you should reduce the resolution of your avatar's textures, you can often get away with making many kinds of textures lower res very easily, especially masks which you can often lower the resolution on a ton and there will be little to no visiaul difference.

NOTE: You do not have to change the source image's resolution, changing the resolution in Unity is enough. This allows you to avoid doing anything destructive to your textures!