There are benchmarks showing the 7950X3D having significant performance improvements over even just the 7950X.
A lot of the current performance issues in VRChat (beyond the notable overhead of VRC compared to the other VR social game also running Unity 2019.4) are due to avatar and world performance optimizations.
For example, I was in Udon Tycoon, which is an entire game with LOD levels and properly takes advantage of the Quality presets in the VRC settings, plus 2 others with medium rated avatars, and I managed 72 FPS with some GPU and CPU still on the table. Meanwhile, some worlds cause me to drop to 50-60 FPS even without anyone else there.
Even better: If you go to many of Silent’s worlds (Silent made their “Filamented” shader), they are rips from games. There is a FFXIII world with beautiful visuals that runs at 72 FPS for me, even with 5 others in the world with very poor avatars.
Another example: An event I go to decided to go to 1’s Optimized Box (1 material, just a box). The event still dropped to 20-35 FPS with 25-35 users because of how horridly optimized their avatars are.
And Tupper and other VRC devs have been focusing recently on optimization. The main thing being exposing the common performance issues. The main performance bottlenecks right now are:
- unoptimized shaders (GPU heavy)
- too many materials (plus draw calls, which incur CPU cycles)
- player animators with 50-100+ layers (blend trees are magnitudes faster; CPU limiting)
- constraints (CPU)
- blendshapes (CPU)
Also, poly count directly affects the performance of blendshapes, plus shaders doing math on meshes to render them.
This is why, even when I had a Rift CV1 and a 2080 Super where I would barely even get close to 70% or more utilization on the GPU at all times, I would get 15-30 FPS, due to CPU limitations on my 3950X. Plus the occasional <1 FPS with repeated frames due to VRAM not being large enough for all active textures.
Most games are optimized in various ways, most often with batching and optimized materials. Some characters in games might even have 1 material with many different maps to separate metallic, roughness, base color, etc.
This is why games like LoL are so performant, since they are able to very easily batch things, even going as far as to make their artwork and art-style play into the limitations of 3D rendering. When you have control of the player’s view, you can get away with some pretty impressive quality cuts and tricks to improve performance.
If we want the game to be more performant, the people that are making content need to optimize their content. This is why they added texture memory to the safety restrictions now, where 150 MB+ is very poor, and constraints is a generic stat that isn’t counted towards safety yet.
But I will say, this would have to come with VRC adding better self-moderation for users to hide poorly performing avatars automatically/programmatically, plus better SDK hints/tools on how to improve. They do already promote things like VRCFury and other scripts that the community has made, even saying that the community tools will always be ahead of the curve of whatever they can make.
It also would help if we have some more features, like mipmap streaming, which can allow the textures to drop to a lower quality if the active VRAM is too full, rather than locking up the game.
https://feedback.vrchat.com/feature-requests/p/add-support-for-streaming-mipmaps-for-avatars-and-worlds