been tryna reduce my vrc world more without sacrificing looks and this saved me about 12mb which is really nice being that i am trying to keep it under 100mb, thanks a bunch
No matter what I googled, no answers were coming up on why the debugger was showing 80mb but my actual build size was astronomic. With this video's help I finished my optimisation pass bringing my original 400mb first attempt world to 73mb. Thank you so much for putting this information out there!!!
Holy smokes! I thought the thumbnail was exagerating, but my scene full of palmtrees bushes and clones of furnitures went from 250mb to 138mb, and then down to 119mb with the help of VRWorldToolkit!! Thank you!! I was scratching my head on why the scene was so big when I compressed everything in my world (textures, skybox, sounds, meshes etc...) you are a a life saver!
small features that can do alot in the bigger picture, really neat video great information to have available for everyone out there trying to lower sizes of worlds without tearing them apart completly, love to see it (: .
Never woulda thought to turn off static batching, that helped a lot, thanks! This video actually made me research what static batching does, I didn't realize it reduces multiple smaller static drawcalls into one larger static drawcall, which tends to help underpowered GPUs.
There's another video that explains the same topic: ruclips.net/video/IrYPkSIvpIw/видео.html Most of the other videos on static batching and GPU instancing cover its performance gains as it's more applicable to Unity gamedev, however I wanted to cover how using GPU instancing over static batching in certain cases can lead to lower build sizes, especially when there are many duplicate objects. It's something I don't see talked about much and it makes sense considering you can't really see or inspect the combined meshes (the ones that are in the build) as separate files; however, using the web tool linked in the description you can see the separate files of a .vrcw in a list along with their respective filesizes. I only found out about this when uploading a large world and having a massive discrepancy in world sizes between VRWorldToolkit and the tool I just linked (about 193MB vs 36MB iirc, hence the thumbnail).
How do you continue to be a god send? Every time I need to learn or check up on something I'm about to tackle, you release a fuckin GREAT simple tutorial that takes less time than the other tutorials with the same amount of information. Not only that, but it's always up to date! And if something changes you update the people with the next video on what changed and how it implements! God and it doesn't even just apply to vrchat creation knowledge but the environment development too! So good please keep learning and educating. I appreciate your knowledge and time. Thank you. P.S. The first link in the description leads to a 404.
I mentioned that the link was broken in another comment reply but forgot to update it in the description, thanks. It's a shame because it was a really useful tool.
Awesome opossum! Might as well ask a curious question since you might be more knowledgeable on this topic, but do you know if it's okay to uncheck static batching and enable gpu for material even if there are no duplicates to save space? Or have you run into trouble doing this? Hopefully not bothering you too much on this. Edit: Nevermind just tried it and it made the size larger. Woops.
For now you can watch Sippbox and the VRC Learning Channel among others. Once the creator companion comes out of beta I'll think about it (if those two don't beat me to it). I'm honestly kinda unsure how I would make a full series on avatars, it's not as straightforward as making one for worlds. Plus, writing these scripts and making these videos is incredibly time consuming, it's not something I do on a whim (hence why I don't take suggestions).
Here is an ancient secret that my homie Lhun told me a while back. You can set mesh compression within the import settings to low, wish further saves on meshdata stored, as well as static batch variants. I never have many duplicates besides chairs and lamposts in the past so not much to be saved unfortunately, but like you can make your own static batch in a sense by combining a large portion that is always visible, like your terrain and removing the batching static checkbox on that. Keep these below 64k verts, as this is the max per object for unity and it would be broken up by unity afterwards anyway. And another note, there is also a tool called "Resource Checker", which does the same thing as the World Debugger, some might prefer that script.
Can you do a tutorial on, "Adding Avatars to your world"? Such as if you just wanted to make a basic avatar world with a bunch of random avatars. How would you go about downloading them/adding them? Do you have to make them yourself to add to a world? Thanks a bunch! the ones out now wouldn't be nearly your quality.
omg you're right, I just checked and there aren't any halfway decent tutorials on how to do this that are up-to-date. To add an avatar pedestal there are example prefabs that you can drag into your scene from the VRCSDK folder docs.vrchat.com/docs/sdk-prefabs#vrcavatarpedestal Then drag an avatar ID onto the pedestal's component. I will consider making a video on this.
whenever i switch my thing to quest it always gets rid of crunch compression, ive had this issue for weeks and its inhibiting my ability to even upload anything, could you please help? there is nothing i can find on my issue.
I did these things and my design doesnt seem to be any smaller I am frustrated. I am trying to upload to Spatial. I exported all my assets and the file is 1.5 gigs no matter what i do
your point on GPU instancing is wrong for 3 reasons 1) it should be same mesh and material 2) shader need to support this feature 3) srp batcher will be prefered by unity and should be disabled if you want GPU instancing. Advice is to open frame debugger and see what actually sent to gpu
Hello, that was a great tip I would say. But would you do some video on static batching vs GPU instancing overall performance gains, or maybe just reply here? That would be very kind of you 😊
sounds like you may have over-compressed your textures in a step. I'd check there first or possibly reload the textures on a previous setting with no artifacting.
Not totally correct. Unity will batch together meshes before sending them to the GPU for rendering using the same material (for BIRP) or same shader variants (for SRPs) whether GPU instancing is enabled or not. GPU Instancing will just instance the same mesh on the GPU. Worth mention that GPU instancing will disable SRP Batching and GPU instancing is not always good. If you are instancing couple of meshes, the cost of preparing and changing GPU state is higher than the actual instancing itself, bringing little no benefits at all. Use GPU instancing when rendering the same mesh more than 50 times. Otherwise sharing materials or shader variants is the best way to reduce drawcalls.
been tryna reduce my vrc world more without sacrificing looks and this saved me about 12mb which is really nice being that i am trying to keep it under 100mb, thanks a bunch
No matter what I googled, no answers were coming up on why the debugger was showing 80mb but my actual build size was astronomic. With this video's help I finished my optimisation pass bringing my original 400mb first attempt world to 73mb. Thank you so much for putting this information out there!!!
Holy smokes! I thought the thumbnail was exagerating, but my scene full of palmtrees bushes and clones of furnitures went from 250mb to 138mb, and then down to 119mb with the help of VRWorldToolkit!! Thank you!! I was scratching my head on why the scene was so big when I compressed everything in my world (textures, skybox, sounds, meshes etc...) you are a a life saver!
Ty! The thumbnail is the actual reduction in world size I got for that snowy world by following the tips I describe in the video
small features that can do alot in the bigger picture, really neat video great information to have available for everyone out there trying to lower sizes of worlds without tearing them apart completly, love to see it (: .
Never woulda thought to turn off static batching, that helped a lot, thanks! This video actually made me research what static batching does, I didn't realize it reduces multiple smaller static drawcalls into one larger static drawcall, which tends to help underpowered GPUs.
There's another video that explains the same topic: ruclips.net/video/IrYPkSIvpIw/видео.html
Most of the other videos on static batching and GPU instancing cover its performance gains as it's more applicable to Unity gamedev, however I wanted to cover how using GPU instancing over static batching in certain cases can lead to lower build sizes, especially when there are many duplicate objects. It's something I don't see talked about much and it makes sense considering you can't really see or inspect the combined meshes (the ones that are in the build) as separate files; however, using the web tool linked in the description you can see the separate files of a .vrcw in a list along with their respective filesizes.
I only found out about this when uploading a large world and having a massive discrepancy in world sizes between VRWorldToolkit and the tool I just linked (about 193MB vs 36MB iirc, hence the thumbnail).
Basically you use static batching for objects that don't move and use gpu instancing for objects that move
How do you continue to be a god send? Every time I need to learn or check up on something I'm about to tackle, you release a fuckin GREAT simple tutorial that takes less time than the other tutorials with the same amount of information. Not only that, but it's always up to date! And if something changes you update the people with the next video on what changed and how it implements! God and it doesn't even just apply to vrchat creation knowledge but the environment development too! So good please keep learning and educating. I appreciate your knowledge and time. Thank you.
P.S. The first link in the description leads to a 404.
I mentioned that the link was broken in another comment reply but forgot to update it in the description, thanks. It's a shame because it was a really useful tool.
I think I found it somehow through the broken link but don't remember how. Sad to see useful tools go. Couldn't find it again but either way thanks.
I just asked the creator and the link was changed, should be working now :D
Awesome opossum! Might as well ask a curious question since you might be more knowledgeable on this topic, but do you know if it's okay to uncheck static batching and enable gpu for material even if there are no duplicates to save space? Or have you run into trouble doing this? Hopefully not bothering you too much on this.
Edit: Nevermind just tried it and it made the size larger. Woops.
Thank you. Your time is well appreciated
Thank you so much. I bought an environment for unity and it's beautiful but I got warnings for this exact same issue.
Excellent tutorial. My build was getting into 10 plus gigs haha.
Quick and to the point this just saved me so much!
Actually this is very helpful. I didn't know you could do this Thank you!
Thank you for the video, very helpful and to the point!
Those tips are very useful, thanks! I'll share it in my community as well. 😄
Static batching can still be good for smaller scenes and on non-duplicated objects!
Great tips, great no bullshit video!
Solid tutorial, great explanations!
You should make a tutorial series on making avatars, definitely think that would be a thing I’d watch
For now you can watch Sippbox and the VRC Learning Channel among others. Once the creator companion comes out of beta I'll think about it (if those two don't beat me to it). I'm honestly kinda unsure how I would make a full series on avatars, it's not as straightforward as making one for worlds. Plus, writing these scripts and making these videos is incredibly time consuming, it's not something I do on a whim (hence why I don't take suggestions).
great stuff!
Here is an ancient secret that my homie Lhun told me a while back. You can set mesh compression within the import settings to low, wish further saves on meshdata stored, as well as static batch variants.
I never have many duplicates besides chairs and lamposts in the past so not much to be saved unfortunately, but like you can make your own static batch in a sense by combining a large portion that is always visible, like your terrain and removing the batching static checkbox on that. Keep these below 64k verts, as this is the max per object for unity and it would be broken up by unity afterwards anyway.
And another note, there is also a tool called "Resource Checker", which does the same thing as the World Debugger, some might prefer that script.
Holy shit this was fantastic!
can we apply same texture compression technique for the baked light maps?
Saved I think my 2gb game as I aspect will become 1 gb or less thanks my game will be launched by June tq
thank you so much I went from 1.4GB to 214 MB
big world
Can I use this VRToolkit to view results for setup projects other than VRChat? like for mobile game
Can you do a tutorial on, "Adding Avatars to your world"?
Such as if you just wanted to make a basic avatar world with a bunch of random avatars.
How would you go about downloading them/adding them?
Do you have to make them yourself to add to a world?
Thanks a bunch! the ones out now wouldn't be nearly your quality.
omg you're right, I just checked and there aren't any halfway decent tutorials on how to do this that are up-to-date.
To add an avatar pedestal there are example prefabs that you can drag into your scene from the VRCSDK folder docs.vrchat.com/docs/sdk-prefabs#vrcavatarpedestal
Then drag an avatar ID onto the pedestal's component.
I will consider making a video on this.
thanks!!!!!!!!!!!!!
whenever i switch my thing to quest it always gets rid of crunch compression, ive had this issue for weeks and its inhibiting my ability to even upload anything, could you please help? there is nothing i can find on my issue.
I did these things and my design doesnt seem to be any smaller I am frustrated. I am trying to upload to Spatial. I exported all my assets and the file is 1.5 gigs no matter what i do
your point on GPU instancing is wrong for 3 reasons
1) it should be same mesh and material
2) shader need to support this feature
3) srp batcher will be prefered by unity and should be disabled if you want GPU instancing.
Advice is to open frame debugger and see what actually sent to gpu
Hello, that was a great tip I would say. But would you do some video on static batching vs GPU instancing overall performance gains, or maybe just reply here? That would be very kind of you 😊
Look it up, there are other videos and guides on the topic
Do I need to bake after setting up the GPU instancing?
no
can you make world for me on vrchat
can youleave a link where to find world debugger
Google it
how to use world debuggers on other non-vrchat projects?
can't :(
@@iconoclass ;(
I performed this optimization and now I have ugly artifacts all over my furniture... and I cannot undo it... T_T
sounds like you may have over-compressed your textures in a step. I'd check there first or possibly reload the textures on a previous setting with no artifacting.
@@ErvahNoir it's alright had a power outage during trouble shooting the scene.... Aaaaand you know what that means for noobs like me! 💀
Not totally correct. Unity will batch together meshes before sending them to the GPU for rendering using the same material (for BIRP) or same shader variants (for SRPs) whether GPU instancing is enabled or not. GPU Instancing will just instance the same mesh on the GPU. Worth mention that GPU instancing will disable SRP Batching and GPU instancing is not always good. If you are instancing couple of meshes, the cost of preparing and changing GPU state is higher than the actual instancing itself, bringing little no benefits at all. Use GPU instancing when rendering the same mesh more than 50 times. Otherwise sharing materials or shader variants is the best way to reduce drawcalls.
Thanks for the corrections. This kind of nuanced info is difficult to find.