1. Hi! Welcome to VRCat.club. This forum is now obsolete with the release of the official Ask VRChat forums. Please go there instead! Over time, this forum will be set to read only, and eventually removed. Move your threads and content! https://ask.vrchat.com/

What do YOU think is the most pressing/imporant issue for VRChat currently?

Discussion in 'VRChat Discussion' started by Tupper, Nov 18, 2017.

  1. Saintrl

    Saintrl Member

    Joined:
    Nov 18, 2017
    Messages:
    93
    Likes Received:
    37
    VRChat:
    Saintrl
    Now that I think about it we should probably make a FAQ topic for basic things like that rather than hijacking this thread.
     
  2. SynLogic

    SynLogic Member

    Joined:
    Nov 17, 2017
    Messages:
    22
    Likes Received:
    24
    VRChat:
    SynLogic
    To quote directly from unity's docs:

    To draw a GameObject on the screen, the engine has to issue a draw call to the graphics API (such as OpenGL or Direct3D). Draw calls are often resource-intensive, with the graphics API doing significant work for every draw call, causing performance overhead on the CPU side. This is mostly caused by the state changes done between the draw calls (such as switching to a different Material), which causes resource-intensive validation and translation steps in the graphics driver.

    So basically its the cpu telling the gpu what to draw.
     
    Psych likes this.
  3. Tupper

    Tupper Admin
    Forum Staff

    Joined:
    Nov 14, 2017
    Messages:
    113
    Likes Received:
    108
    VRChat:
    Tupper
    To summarize in a fairly simplified manner:

    A draw call is an operation that the CPU performs where it passes information to the GPU to render to the framebuffer. Only one draw call can be handled at a time (unless they're batched, which is usually only possible with a pretty specific setup), so the CPU must wait for the GPU to handle the current draw call before it can move onto the next.

    Each draw call takes on the order of microseconds to process, but when you've got a lot of people with unoptimized avatars in the room, you can get into the thousands (or tens of thousands!) of draw calls. Eventually you run past the ~16 millisecond window you have for each frame (when targeting 90FPS) and you end up pushing back the frame, resulting in a loss of framerate.

    VRChat is already heavily CPU-dependent with things like the IK system, Photon, and uSpeak. All of these are handled by the CPU. On top of that, Dynamic Bones are handled entirely by the CPU and are serialized, which means one bone must be completed before the next can be calculated. Now, add draw calls onto that, and you might push a system that's already on the edge of losing 90FPS into sub-optimal framerates. Draw calls are easy to reduce, and very accessible to players. (Same goes for Dynamic Bones-- just don't use more than like 10)

    So, tl;dr: A draw call is the actual instruction from CPU to GPU to draw stuff. If the CPU has too many to pass, then you'll lose framerate.

    Notably, you'll pretty much never ever cap out on GPU utilization in VRChat. Upgrading your graphics card won't do much unless you're really out of date.

    Good point... I'll make a post in a relevant Development forum and link it here.
     
    Printer and SynLogic like this.
  4. Printer

    Printer Member

    Joined:
    Nov 18, 2017
    Messages:
    28
    Likes Received:
    30
    Upgrading from a 270x to a 1060 did increase my performance, but I think that was just the resolution I was pushing.

    So, a completely optimized model would be 1 mesh / 1 material while polycount doesn't matter?
    I'll keep this in mind for my future avatars.
     
  5. Tupper

    Tupper Admin
    Forum Staff

    Joined:
    Nov 14, 2017
    Messages:
    113
    Likes Received:
    108
    VRChat:
    Tupper
    Correct. One mesh, one material, zero dynamic bones is as optimized as you can get without sacrificing textures or details. We could optimize further, but then we'd start losing individuality/creativity.

    A 270x is a generation or two behind the "VR-ready" video cards we have today. At that point, yes, you were suffering from your card not being able to push the pixels necessary for VR at a high enough rate.

    FYI: https://vrcat.club/threads/what-is-optimization-and-why-is-it-important.65/
     
  6. SynLogic

    SynLogic Member

    Joined:
    Nov 17, 2017
    Messages:
    22
    Likes Received:
    24
    VRChat:
    SynLogic
    Don't forget that unity does have a vertex limit on meshes, so you are limited on polys in that way. Once a mesh exceeds 65535 verticies, unity will automatically split the mesh, adding to your draw calls.
     
  7. Tupper

    Tupper Admin
    Forum Staff

    Joined:
    Nov 14, 2017
    Messages:
    113
    Likes Received:
    108
    VRChat:
    Tupper
    Good call.. if somehow you magically managed to have over 20k polys, then you should absolutely draw the line at 65,535 tris.

    Notably, if the poly limit is raised, this is where I'd suggest the new hard limit be drawn.
     
    Compatible and Zarniwoop like this.
  8. OwlBoy

    OwlBoy Member

    Joined:
    Nov 19, 2017
    Messages:
    13
    Likes Received:
    9
    VRChat:
    owlboy
    Performance.
     
    Aev, Mr.Crane, Tupper and 3 others like this.
  9. Ron

    Ron New Member
    VRChat Team

    Joined:
    Nov 29, 2017
    Messages:
    1
    Likes Received:
    2
    VRChat:
    Ron
    1. Fixed in imminent Patch
    2. Ongoing. I saw some uSpeak optimizing message from devs this week
    3. Playmaker we're working on now and will be in the next Release (not patch). There should be a BETA shortly to help us test.
     
    Tupper and Aev like this.
  10. Zenny

    Zenny Member

    Joined:
    Dec 1, 2017
    Messages:
    15
    Likes Received:
    8
    VRChat:
    Zenny
    Fix the whacky low-fps jitter/earthquake on the Oculus. Or at least narrow down a cause. Or just performance in general so I don't have to strain my hardware just to prevent it.
     
  11. Tupper

    Tupper Admin
    Forum Staff

    Joined:
    Nov 14, 2017
    Messages:
    113
    Likes Received:
    108
    VRChat:
    Tupper
    From what I understand, this jittering is due to the higher dependency on CPU for the Rift's tracking. Since VRC is CPU-heavy, you're going to get earthquakes in populated rooms, no matter what-- VRC eats up all the cycles, and the Rift's image processing->tracking stack loses CPU time
     
  12. Zenny

    Zenny Member

    Joined:
    Dec 1, 2017
    Messages:
    15
    Likes Received:
    8
    VRChat:
    Zenny
    I understand this, but that isn't to say you can't still optimize to relieve this. Unity is pretty CPU heavy by nature but there are still quite a few options to utilize the GPU or lower the CPU impact. Removing any use of pretty much any premade thing in Unity other than the rendering [so making your own optimized alternative to gameobjects, for example], although quite the task, reduces the CPU impact.

    But the precise cause can be deduced by the creators themselves. Maybe it's not that. I'm not sure. I didn't make the game, just speaking from experience in my own projects. Almost every project I've ever done I've scrapped everything Unity has given me by default, because of how poorly it seems to run, and made my own more efficient alternative.
     
    #32 Zenny, Dec 7, 2017
    Last edited: Dec 7, 2017
  13. Tupper

    Tupper Admin
    Forum Staff

    Joined:
    Nov 14, 2017
    Messages:
    113
    Likes Received:
    108
    VRChat:
    Tupper
    Community research, testing, and some help from devs has gotten us to the point where we understand VRChat suffers from performance loss primarily via CPU-boundedness, and primarily due to (in no particular order):
    1. Badly optimized avatars (draw calls)
    2. Dynamic bone overuse
    3. Inverse Kinematics
    4. uSpeak voice
    5. Photon networking
    Unfortunately there's no real easy solution for 3-5. 1 and 2 we can help by educating users as much as possible.

    Despite that, I'm unsure if we'll ever get to a point where VRChat is not a CPU-heavy app.
     
  14. Zenny

    Zenny Member

    Joined:
    Dec 1, 2017
    Messages:
    15
    Likes Received:
    8
    VRChat:
    Zenny
    I guess a lot of it just comes down to the big task of doing things from scratch to get the most performance out of it then. I can't predict the future, and I know future VR headsets may use way less CPU than the Oculus (They already do), but the performance could be a downfall. I have a fairly good CPU, overclocked a good amount, and it's still not quite enough to handle this game with the Oculus.

    Something also worth looking into (Though I'm not sure if it's already possible, I certainly haven't seen it done yet), how about an option to disable the voice server for a room? Whether done at upload or instance creation, that could potentially be useful for some like me who suffer the apparent pain of owning an Oculus with a less-than-rocket-powered CPU
     
  15. Aev

    Aev The Guy
    Forum Staff

    Joined:
    Nov 14, 2017
    Messages:
    37
    Likes Received:
    42
    VRChat:
    Aev
    Would moving to Discord Gamebridge for 3D voice chat fix the issue with uSpeak?
     
    Tupper likes this.
  16. Jazneo

    Jazneo Member

    Joined:
    Nov 18, 2017
    Messages:
    74
    Likes Received:
    70
    VRChat:
    Jazneo

    not voice it actally the avatar is self
    1. Badly optimized avatars (draw calls)
    2. Dynamic bone overuse
    3. Inverse Kinematics

    you can go in room with alot people in no no skin mesh, and draw the the performance does better basic be invisible
     
  17. Draconis

    Draconis New Member

    Joined:
    Nov 20, 2017
    Messages:
    4
    Likes Received:
    3
    1) Lack of transparency
    2) Lack of customization
    3) Lack of guidelines for VRChat etiquette
    4) Seemingly lack of trust for users
    5) Lack of power to enforce personal rules set on hosted levels

    The loading screen has no information on what is actually happening and any problems with it remain unknown to even be remedied by the user. I also cannot find details of what the game can handle in world making, terms of polys on screen with worlds/avatars, or anything else. I can't find any easy access to any official documentation of a dev log, what's being produced, what deadline dates are set, when to expect a patch, or upcoming features through social media.
    Players are unable to make their own keybinds with the already limited selection of things they can do - which is even worse for VR when both controllers share the exact same keybinds and there is no differentiating between the two.
    Finding information on what is/is not allowed for world making and avatars is a headache to find when available. I am still unable to find limits of file sizes, the ability to enlist worlds with different etiquette rules as one world may be less suited for a younger audience by the crowd that spawned the world.
    The lack of transparency, lack of customization, and lack of freedom in our own creative development combined with forced oversight of mods at events tend to give off the vibe of a lack of trust for the users. I realize the game is still not officially released and the dev team is working hard to produce such factors, but I still feel this and the others are important issues.
    The capability of hosting a world with the option to act as a moderator of that world is needed. Too many events have been ruined, people stalked, and vile people not been kicked quick enough because of a lack of this option. Yes, this power can be abused, but more worlds can be made to avoid those that abuse it.
     
    Wooger the general and desunesu like this.
  18. Mr.Crane

    Mr.Crane Member

    Joined:
    Nov 18, 2017
    Messages:
    167
    Likes Received:
    59
    True to some point but I bet if you ask you will get answers.
    What are you talking about? It's all about custom stuff in there...
    https://www.vrchat.com/community
    I understand why. They trusted them too much in the past and learned from these mistakes.
    True. That would be nice. If you could ban on your own world or give permission to kick to others for example.
     
    desunesu likes this.
  19. Draconis

    Draconis New Member

    Joined:
    Nov 20, 2017
    Messages:
    4
    Likes Received:
    3
    In lack of customization I meant on a mechanical level. Inability to set keys, video options, or playmodes/who can join in levels. Although most of these problems I have seen were either from hard to find ignorance or were fixed! Check out the new patch notes: https://www.vrchat.net/release

    BTW, I am not trying to be hostile towards VRChat or the community, simply giving feedback.
     
    desunesu likes this.
  20. Mr.Crane

    Mr.Crane Member

    Joined:
    Nov 18, 2017
    Messages:
    167
    Likes Received:
    59
    No I did not see that post as hostile. I just wanted to share my opinion cause I think most of the stuff is or will be solved.
     
    desunesu likes this.