Improve muilti-threaded performance
complete
Maribel Hearn
I'm no expert on how software takes advantage of the hardware available to it, but it is quite clear to me that VRChat does not yet have the ability to fully use all of the hardware available to it. I commonly sit at low framerates (20-45FPS) despite CPU usage being around 25% and GPU usage far far below maximum with a large margin remaining for the power target and clock speeds to ramp up.
I have spoken with many people on this, and they all seem to agree that VRC is not using all of the cores/threads available to it, and performance is primarily dependent on single-threaded performance, and that a single core at high clock speeds trumps more cores/threads.
Clock speeds aren't going up much between CPU generations, but core counts do seem to be on the rise.
Please consider improving multi-core performance somehow. Wallowing at 25 FPS on an 8700k at 5GHz and an overclocked GTX 1080 and seeing that you are only using 25% of your CPU and 40% of your GPU is quite discouraging.
Thank you for your consideration and time.
Log In
Tupper - VRChat Head of Community
complete
Since this thread was posted, we have made many performance improvements regarding how well VRChat takes advantage of the threads and cores available to it. We'll continue to implement these improvements basically forever.
As an example, we recently enabled Graphics Jobs, which is a Unity feature that utilizes the Job system to improve rendering performance.
Due to the age of this thread, the highly generalized nature of the OP, and the improvements we've made, I'm going to go ahead and mark it as complete.
---
As a final side-note: VRChat has, at least since its launch on Steam in February 2017 and potentially earlier, utilized the available resources of the system it is running on to the fullest. VRChat has always supported multiple cores and multiple threads-- but, like many networked "game-like" applications, we can _always_ improve how those threads are used. This is an eternal battle, and we'll keep making improvements!
ni1chigo2115
Will you be able to take screenshots in a separate thread?
The lag when I took the screenshot is really frustrating.
MaryWolf01
I don't want to run at low frames any more Im always at 45 to 50 I want to run at 90 FPS like my headset allows I see no reason why this should not be something that should be fixed
P
Pineapple
VRChat can't really do much in low-level multithreading space, since it's running on closed-source Unity engine.
They can optimize and optimize, but nothing can optimize against horridly made VRChat avatars with millions of polygons just for clothing and 20 bones for just a jiggly chest.
owlboy
Kick off the multi-core widening.
rotus Thexmaster
GPU IS THE BOTTLENECK GET VRWORKS AND VR SLI
ExDe707
rotus Thexmaster: How is the GPU the bottleneck when it's not even above 50% load for the majority of the time (GTX 1080, load only goes up when I'm near a simulated fur shader)
rotus Thexmaster
ExDe707: depends on a map go to a photorealistic world
Event Horizon~
ExDe707: With a 4k headset? It's easily a massive bottleneck juding by the GPU and CPU frametimes.
Redotix99
Event Horizon~: how many people have a 4k headset lol. Theres games that look much better than vrchat and run much better. The Gpu is not the bottleneck in this case.
ExDe707
Well, it's been 2 months since the 2018 LTS released. There's still not been a word about intending to upgrade to 2018. Would love to hear from the devs.
Bob
ExDe707: They confirmed it
FerLuis
2018 Lts has officially released https://unity3d.com/unity/qa/lts-releases
FerLuis
So... how long is long term again?
MehStrongBadMeh
FerLuis: Well, first the Unity 2018 LTS builds need to be released, then VRChat needs to update to Unity 2018 LTS, and then they can utilize the Unity 2018 job system to redistribute functions into a more muti-threaded workload. Unity, for its part, has only stated that 2018 LTS will be released "in early 2019"
FerLuis
MehStrongBadMeh: So 2018.4 lts just relesased two days ago https://unity3d.com/unity/qa/lts-releases
Maribel Hearn
Unfortunately it is looking like instead of getting multithreading, we are going to get absurdly low limits on avatar features that will make creating good looking and fun avatars much more difficult or impossible. Forcing the burden of extreme optimization onto people who create free content for your game isn't the solution.
SeriouslyVR
Maribel Hearn: What are these proposed limits to avatar features? LINK?
Maribel Hearn
SeriouslyVR: https://docs.vrchat.com/docs/avatar-optimizing-tips
Scroll to the bottom for public avatar world limits.
These 'recommended" limits are already being strictly enforced as hard limits rather than recommended, in that avatar worlds are being denied public status if the avatars in them exceed these recommendations.
And by 30 transforms affected by dynamic bones, they mean individual bones that move using dynamic bones.
An average MMD anime girl model I have has 97 bones in the skirt alone, including the root bone. If CATS can find the bone chains (Big if,) you can merge the bones down at a 50% ratio, to a very optimized 49 bones vs the original 96. Merging the bones further than that reduces the visual quality of the skirt, as there just aren't enough bones to create the fluid look that a cloth skirt should have. The skirt alone in this case would exceed the maximum of 30 bones, and we aren't even looking at hair, breasts, or other parts that you may want to have dynamic bone on them. The 30 bone limit effectively eliminates good looking dynamic bone features from public avatar worlds for avatars with long hair or skirts.
I expect these 'recommended' guidelines to become mandatory in the future. I also don't expect to see proper multi-threading making it into this game any time soon. I find it hard to accept these limits when toggling off nameplates has a greater impact on your framerate than blocking every avatar in the world has.
Verser
The worse thing about it is turned made a junk video about how dynamic bones steal your frames when he is using a I9 processor which has 10 cores 20 threads. His game has less available prossessor power access then my 7th gen I7. It is no wonder why he hates dynamic bones so much. It is not the bones it's the game not using the prossessor to it's full potential.
owlboy
Maribel Hearn: 👎
Maribel Hearn
Verser: They need a scapegoat.
Verser
Ya, thanks to there scapegoating I won't go into public world's anymore. It is just not worth being targeted for having a normal amount of dynamic bones and having a snail marker. I'm poor with just the bones but the second I use my marker I'm very poor.
Maribel Hearn
Verser: I don't even bother optimizing anymore, since my super optimized single material avatars are still ranked as poor because they have a dynamic skirt, even after bone merging to reduce the number of bones. It just isn't worth all the extra effort to still end up being ranked poor.
owlboy
Verser: Your bones rarely turn off. They are rarely culled. The client can not optimize them. That is unless you are in a large world and travel really far away from people.
If you used fewer bones, then it would not be such a big issue that you are breaking the optimization by _implicetly saying_ "Do not turn off my avatar. Do not do optimization that would turn off my expensive bones when you
can't see me
."Verser
owlboy: i forget the range dynamic bones stop but they do stop after a short range. You dont have to go very far for them to stop being prossesed. You might be thinking of cloth physics. Something like the length of the ramp in the mmd dance stage maybe a few meters longer. My avatar has never caused anyone any issues. She has a mini skirt, 2 hair tails and breast. It is as optimized as i can get it without breaking out the weight painting tool and turning her into a mess. Anyways this is not about how dynamic bones are not as expensive as people are being told it is with straw man videos and such this is about the need for vrchat to get with the times and implement multicore/thread support.
Maribel Hearn
owlboy: Dynamic bones distant-disable at 20 meters and also disable when the avatar is off camera.
owlboy
Maribel Hearn: the way it knows you are off camera is checking your bounding box. If your bounding box is huge you will have trouble getting off camera just standing behind me. The Pug is barely 20 meters in most normal distances. So occlusion is needed (walls and such). Again, you need the bounding box to not be huge so it’s not poking through walls/ceilings/floors.
A large bounding box makes it hard for optimization features to do their job.
Load More
→