#world-optimization
1 messages · Page 15 of 1
when light baking ?
Hello again, i need some help optimizing this thing im trying to do . I added some avatar statues to my Blender worlds and im posing them in there so i can delete the skeleton after. My issue is that when i try to do an expression, i can't have it stay there.... if i set pose as rest , it resets the expression and then i can't place it again because all the visemes becauses skewed
This is before setting rest pose
After setting the rest pose and redoing the expression with same values
you need to delete all other shapekeys and leave that one as the last one left
then make a shapekey out of the two
so make a new shape key to recreate the expression , set as rest pose , then delete the remaining shape key and armature ?
i believe so yes
ill check on how to make custom blendshapes
If you press the down arrow on the right of the shapekey panel there should be "New Shape from Mix"
@1 it's still becomes skewed as soon as i apply the pose
alright fixed it by also deleting the basis blendshape
thanks for the help !
@versed lichen is there a way to delete the armature and bones without deleting the mesh in the process ?
The wrench icon
i dont think i have it
You have to select the model first
ok , i did apply it but the pose and armature is still there .
Now you can delete the armature
If the model is atlased yeah
it will be in the end yes
When I bake the lighting all looks fine in Unity but when I upload and actually enter the world in VR Chat the ground and vegetation is black with no shader.
I was able to fix the ground by changing the default shader to a custom material but the plants are all still black.
Can't bake grass with terrain
Got it. I'll give that a shot.
I'll try duping the terrain and only delete the terrain itself leaving the grass layer
How to set render distance in my vr world?
I managed to bake some parts of the lighting in my world but one of the 2 models is having an issue .
do you know why the shadows are acting up like that on the red one ?
im using the same shader for both
What good shaders do you guys use when doing Baked Lighting ?
@fierce seal do you have generate lightmap uv's turned on for it?
Same mesh 🤔
hum
That's interesting then
well.... i joined them in blender
i can't get the atlas to work though
it breaks a few of the texture on the red one
this is the blender file. theres no weird tris or anything
Send a closer picture of it in unity
its only weird on the skin , the hand and hair seems to be fine ... or better at least
What shader is it?
Yeah poi did add support for lightmapping
You could try doing the bake with standard to narrow the problem
How does it break?
You did say theres no weird tris or anything but does anything happend if you do remove doubles on the vertices
could you guide me through that , i don't know about it
Select all the vertices in edit from the body then from spacebar search search for remove doubles
I haven't used 2.79 in a long while so google it if you can't find
got it , it remouved quite a lot
Okay that was most likely the problem then
well ill redo the material and check how it looks.
Same issue
@cold prairie got any other ideas ? do i have to set something specific in blender to make shure light is reflected the right way ?
I'm in bed about to sleep so can't be more of help currently
Oh so sorry . nvm
I'm still feeling it's something about the mesh
But no ideas on top of my head
If you are still having the problem tomorrow when I get off work I can try baking the lights on them myself and see what happens
ill see about asking others tomorrow. thanks again a bunch for the help
Do Mirrors, Models and/or Particle Systems effect Frame Rate when they are turned off? In one of my worlds I get frame rate of 90+ everywhere I go, except when I'm in front of a mirror, then it drops to 46 - this seems normal to me - and in one particular room a turned off mirror. When I stand next to this mirror (when it's off) at one particular place it drops to 46 fps.
The only difference between the rooms is this particular room has two turned off particle systems and more furniture.
Thanks!
you can check the mesh in Blender and make sure your normals are all facing out
if they arn't then select the mesh and recalculate normals
also make sure you dont have extra geometry z fighting
@fierce seal Did you generate lightmap UVs for those as well ? You may have to tweak the settings
When you mean generafe laightmap uv you mean check that one box right?
All the normals should be facing outwards i had back culling on and it didnt create any holes
As for extra geometry i made sure do delete doubles
@fierce seal Is there a reason you aren't just using lightprobes instead?
you're not gonna like the answer but it's because i don't know what i'm doing .
thats okay lol
if you add lightprobe components to your scene they will light up dynamic objects based on the baked lighting
my objects are static
I wouldn't recommend trying to bake lighting for avatar models
yes but the character models i mean, with or without skeletons
well.... it's like a statue
complex geometry is more effort than its worth to try bake lighting to
im trying to make the world run better ....so i was trying not to use any dynamic stuff
Using lightprobes would probably be the most performant method
have any tutorials for setting them up or is it easy and you could just tell me
light probes are just a component you add to your scene and when you bake the lighting they take the baked data and light up non baked objects
you could also just use realtime lights on the character meshes so long as the lights only affected those models via layer culling
my issue is that looking towards the model drops the frams in half. was really trying to optimize them more
I don't know if this is where I go to ask for help but uhh
is it just me or does OnDrop not work?
it should work
Hey, I'm trying to lower the file size of a map. Does Crunch Compression on textures even work in VRChat? It feels like it doesn't, since my map is still over 200 MB.
It does, yeah. It can be challenging to audit your build with just the editor log alone imo though. Could be all sorts of sneaky stuff causing build bloat :/
There's a free version of A+ Asset Explorer on the asset store that might help. It's helped me track down unused assets, stuff that isn't crunched, meshes that might benefit from mesh compression, etc. You'll have to run a standalone build to audit iirc which might require you to briefly remove the VRC SDK and then reimport after it's done
@fierce seal I had that issue with flipped normals too. If you havent found the solution yet, here is my tip. Look at your material for your avatars/objects texture. If you have a normal map texture for your object/character make sure its color space is set properly and set it to normal map in its properties.
To show you what I mean here are two reference images of my custom Lara Croft avatar with Non-Color Colorspace and RGB colorspace.
You can also recalculate normals in Unity iirc
Is there an easy way of making a world smaller in terms of its file size? I am making a world for a friend and he doesn't have the greatest internet
use crunch compression on your textures, lower the quality on audio files, bake lighting at lower quality
compress mesh in import settings
I have this cabin I built out of individual logs, etc. Would something like this typically cause such heavy performance issues? Anyone know what I can do to fix it?
I've never made a map before so I have no idea what I'm doing btw so explanation in the most basic form would be ideal
If you have never build a map before it's important that you set everything as a static and also baking the lights is important since realtime light performance is very bad
Need i worry about audiosources in many different places? They activate only one at a time, but i'm wondering because of the Quest requirement, if it causes performance issues
Already did those two
Lighting is set to baked and the logs/most everything in the cabin is static
Can you enter into play mode and show how the stats panel looks
@median stag there's a limit how many audio sources unity can handle active at once and if you go overboard peoples voices can't be heard anymore, the performance issue is much lower on pc though
If there's like 20 audio sources that exist and only play for 0.2 seconds on awake, that wouldn't be an issue then? It's not the physical presence of the audio source but the fact its in use?
Do I need to have a camera placed for the stats to be proper
From what I remember it being active in scene as well takes some performance
@twilit belfry yeah have a camera placed properly
What about an animator that as a part of turning on, plays its audio source, then turns itself off with a button? Inactive is inactive right?
Oh god that batch count
Okay so if that tells you something what does that mean lol
holy $hit XD
you got real time lights going on there
Yeah that looks like you got realtime lights
every new light that's not baked adds every material on every mesh to another round of batches XD
Really? How do I change it then
Do I need to toggle more than the option on the actual light?
Are you sure everything is baked?
I'll check them all again
Pretty sure I had set them all to baked
Oop no I had one set to realtime still
But all the rest are baked
I changed that one now
did you go through the baking process in the lighting window?
I don't believe so, how do I do that
Oh I think I see it
Do I have to generate the lighting
This thing right?
Yes
Otherwise I think unity can think of baked lights as realtime lights until they are baked
@median stag you should be fine if the audio sources aren't actively playing something at the same time
Thanks. Mostly for a directionality reason i would want multiple sources-- don't wanna go about repositioning the audio source on every single one if i don't have to.
I haven't experimented enough with having a large amount of sound sources though to give a good answer
It can also depend on how many people you want to have in the map since people speaking is also a audio source
https://johnleonardfrench.com/articles/unity-audio-optimisation-tips/ I've looked at this before and even though it all doesn't apply for VRChat it does give you some insight how it works @median stag
Dang this is taking a hot minute to generate the lightmaps
Yeah it takes long esp with the unity build in lightmapping
Consider looking into bakery if you really want to get into making worlds
Post a picture
\
What's wonky about it?
Making lights look good lot of times is just experimentation depending on the effect wanted
It's completely different than before
The floor and windows and things look much shinier than before
Oh wait a minute
I think I fixed it
I just gotta change some settings
If you are using unity terrain it takes some doing to optimize it properly and make it work nice with lightmapping
If you want to skip to the gist of it, just skip to the end.
Note: I forgot to mention that you will want to bake occlusion whenever using terrain. Open up the occlusion tab, adjust your settings (5 is too big) and bake occlusion.
I'm going to show you how to bake the can ...
Aight I'll have a look at it, gonna hop in and see if that really fixed the issues
Thanks a lot, appreciate it
Np
So I just hopped in game it certainly is better, but how would I go about having day/night time lighting cause it clearly does not update unless it is realtime 🤔
There's some ways of doing it with your map the best way might be using post processing or shaders to darken stuff
But I don't have much knowledge in doing day/night cycles
It's a hard thing to do in vrchat properly
On small maps there's some tricks to baking multiples of the map and moving them in place but with the size of your world that would make the size pretty huge
Okay just gonna have to figure that out another day I suppose
Is it possible to use OctaneRender to render the baked lighting in my worlds? I see there is a free Unity plugin available.
importing lightmaps would be nice
if only, amirite?
I second this ^
Would have saved many months worth of issues with my projects if it was possible
how to fix people spawning on roof of building
Does occlusion culling activate automatically in game or do I need to do something for that in Unity?
Are your objects set as static and did you bake occlusion correctly ? @modern elm
I have my prefabs not set as static but I just found this:
https://www.youtube.com/watch?v=pwach6gfhQ0
I think I got it but I'll let you know if anything weird happens
I don't think there is much to occlude in this map
?
There's nothing really occluding other stuff in that map so just frustrum culling might be fine
If there is something that could benefit from occlusion culling follow this to optimize it's performance:
"When should you use Occludee Static? Completely transparent or translucent objects that do not occlude, as well as small objects that are unlikely to occlude other things, should be marked as Occludees, but not Occluders. This means they will be considered in occlusion by other objects, but will not be considered as occluders themselves, which will help reduce computation."
Like for example the houses in the back don't seem to be occluding anything or getting occluded by anything you might wanna turn off both occludee and occluder in them
The smaller your occlusion culling file the better since the larger it is the more computation it causes
Ah ok
So it's more for something like a dungeon map where there's a ton of rooms
I thought OC was a general performance helping tool so it doesn't render everything at once
Frustrum culling already does that by not rendering stuff out of your view
Is that a setting I need to activate?
It's on by default
ok cool
@modern elm do make sure you have batching static and lightmap static on though those are more important
I'll look into those, thanks!
frustum culling would still render stuff behind you if it's pointing the direction you're viewing so that's why you need the occlusion culling
Frustum culling exactly that it doesn't render stuff out of the viewport
The map that he has in the picture has no need for occlusion culling
Though I'm not quite sure what you mean by stuff behind you pointing the direction you are viewing @pallid gale
if a big rock is hiding stuff behind it the stuff behind it would still be rendering by Frustum culling
Yes but looking at his map there isn't anything that would benefit from that
yeah having a double look at the map good point
All good 👌
just wanted to be clear on the differences between frustum and occlusion culling for any future Maps they make
Yeah fair I did post the explanation on them a bit up but not a proper explanation on frustum culling
This one's a bit higher quality 😄
thank you
but yeah you can cram a lot more stuff on a map when you design it to have lots of nice line-of-sight blockers so that occlusion culling can do its thing
Yep ^^ open maps are much harder to optimize properly
darn that supposed to be a gif
I gotchu
Honestly best demonstration on importance of occlusion culling in large worlds
yes it's a very important gif
cool we managed to get a pin
Hm I tried out occlusion culling on my world but decided to leave it out. It caused the objects to disappear and reappear rapidly as soon as you started moving.
Doesn't seem to work well if you're on the backside of a mesh's faces.
I see, occluder and occludees would probably solve that problem without having to get rid of the see through effect when outside of a building (normals point inwards and no faces on outside)
Settings need to be adjusted for sure
@old iron in the occlusion settings, set the problem meshes such as a transparent window to occluder static. This will make it so it won't cull objects behind it when you look through it.
Occlusion culling is huge when it comes to reducing draw calls. Definitely try giving it another shot 👌
I'll see if it'll come handy now, might not even make noticeable difference because of the way the world is made but definitely will be useful with bigger worlds
Hey, so I added in some optimised mirrors, but, I don't know how have it so only one is on at a time, right now you can click both buttons and have both showing
@gleaming yarrow https://discordapp.com/channels/189511567539306508/361741445352259584/647430786554920970 scroll down from there and it should help you get it working
Anyone know of any guides for optimizing a basic waterfall situation? Or just general particle optimization tips?
It gets pretty choppy, there's also a mirror. I have all of the particles set to Water so they don't reflect but it still seems like they are being calculated by the mirror just not drawn?
Also are there certain particle shaders that are generally no-no's for optimization?
Mostly curious about the standard set
@peak flower could be overdraw combined with blending, which means it has to write a pixel multiple times, and in case of blending read it back each time too, if you have a large number of particles or huge size of the particles your gpu has to read/write a lot of pixels over and over before it has blended all of the color
the 'fastest' particle shaders just use a blend mode and a texture and no fancy things, the built-in unity particle shaders are fast and simple except for particles\standard surface and particle\standard unlit, those are a little heavier
there's some other stuff too: even if you use the faster particle shaders, too many really big particles will just eat GPU
And the particles are very large
Okay that must be what it is
So I take it there is a happy medium in there somewhere?
between many small and few large?
another tip is make the particle texture use an image with more 'white' and use less particles
so it fills into a white shape with way less particles
Do you mean a textured mesh w/ many fewer particles running through it?
A particle texture with more white and less particles... wouldn't that make the particles bigger?
are you using the unity default particle texture or something custom?
ah okay that's good, the blue neatly fills the texture
Yeah it must be because they are so big then
Hmm I dunno, is there an easy way to tell?
click the particle system(s) in the editor and hit play in the editor view
Oh I see, 115
that's nothing
they are p big though, not too big you think>?
when you turn them off the fps is fine?
Will test that next
It might also be the shattered crystal thing in the middle
Lots of split uvs
if you want to be sure you can use the unity GPU profiler and see what each object on screen costs in ms
Yeah I was trying to figure out how to do that
and find out what material or shader is causing the most gpu load
Couldn't figure it out per object
particles would show up in the transparent queue
but it's good to learn the profiler basics when you're not sure what objects are causing fps drops
So wait, am I just supposed to turn objects on and off to see how it is affected?
that works too
you can turn on the stats gizmo in the game view window and turn things off and on if the profiler is too technical
Oh is there any way to fly around while in the game tab / camera?
you can manually move the main camera
ah, so no. Okay
In this video you will learn a quick and easy way to position camera in Unity3D.
3D Environment used in this video :
https://assetstore.unity.com/packages/3d/environments/mobile-low-poly-battle-arena-tower-defense-forest-pack-100080
it's saying transparent is getting 1000+fps
omg, thank you for the camera tip I have been going crazy
omg. hahaha
what's even better that not only works with cameras but any object
I dunno why I went all this time without googling that for myself lmao
Alright so vsync and gpu/other are my biggest
It really only appears when I have my headset on though
I take it Vsync is just filling in the gap to make for an even framerate?
then it's not the particles killing the frames in this but the meshes, yup
coooool
Would an animated texture be game over?
Thought a mesh with a moving water texture on it would look amazing
shouldn't be a problem
Awesome, I am gonna try that soon
Also do you know what Other usually is in the profiler?
just look at the fps, the drawcalls and the profiler
really depends, could even be waiting for vsync, you can test that by going into edit > project settings > quality and change 'every v blank' to 'don't sync' to turn off vsync in the game window
but that's the CPU profiler you're looking at now?
in case of other in the gpu profiler it's uploading textures, updating custom render textures sometimes too
Now I can really see the fps lol
So should I change the vsync back to every v blank before uploading?
doesn't matter for vrchat, it will lock onto the headset max framerate if it can
cool, alright
Any reason to have sync at all? It's great with it off because I can see the real fps
one warning: the best and only really important fps is what you yourself and other people report in vrchat in vr
but on the whole the profiler is the best way to find bottlenecks and reduce them
I am definitely understanding it a lot more now
for cpu problems too, having colliders or physics will spike the cpu load
and the profiler will show you where it's coming from
I keep getting these spikes in Other
batching and occlusion culling are ways of reducing mesh load on the gpu, look into that aswell
Maybe when the particle system loops?
I have done occlusion culling but I didn't know about batching yet
if opaque geometry takes the most time in a frame, make sure all the meshes are static
and ideally share the same material
Yeah at one point I had imported some new meshes and forgot to set them
keep an eye on the performance while turning stuff on/off will pay off, unity is janky but it does have enough options for making it waste less time drawing all the objects and figuring out where they need to go
no problem, have fun with it, the profiler info works on avatars too, and you can set the game window to headset or 4k res too to stress test gpu 😉 good luck
Awesome thanks again!
Hey, what's that thing I keep hearing about that lets me check the draw calls/causes for lag? It's something in unity...
I think it's part of one of the gizmos, or something?
profiler
thanks!
also stats in the game viewport menubar
So, one of my newest worlds, I'd like to further optimize through lighting.
It's currently using Realtime lights, and I've tried to bake them (as a baked directional light), but then it
would cause the stylized/caustic shader to no longer work. (shown below)
https://gyazo.com/713f82a5fd18d3aea675e5cc3bd70bf1
Is there any way I can further optimize this through a means of lighting? Also unsure if I should either
statically batch or use GPU instancing instead.. I'm not sure if the batching is even working properly
Also I'd like to think there's the option to code the shader to ignore lighting and have its own color gradient in unlit form, but I'm not sure
how it affects lightprobe placement and dynamic lighting
What does the OnNetworkReady trigger do exactly?
once all of the things are properly loaded in to your world, It would allow you to trigger something to happen
for example all the pickups to be loaded in properly in the right spots
and then a use of that was a door
that only opened when everything was properly in place
everything properly networked and broadcasted
then the door opens
Oh okay, I’m just trying to figure out if there’s a function for triggers activating when a player looks a certain direction
Like it won’t activate unless you turn around for example.
Is there one? Or would I have to make a custom one?
my only guess is a playertracker collider invisible in front of you
and then onenter trigger
thing
@harsh geode Your world ran extremely well for us during the community meetup, i don't think you need to trouble yourself with optimization tbh
unless your realtime lights are affecting all layers
thanks @versed lichen ! Right now the layers affected are everything except pickup and UI, but what uneeded layers can I get rid of? all the environment and fish are all default
then you can only keep Default, player local, player, pickup and UI
no idea, i've always been told to remove them if not used
I want to make a world like Rainbow Six Siege. I have a destructible house and a hammer. I want the hammer knock down the wall(s). I don't know how to configure that. Can someone help me?
Maybe when the hammer hits a wall. The hammer deactivates the kinematic on the wall(s).
Sadly there's no way to enable the kinematic
BUT
you can definitely disable the non kinematic object and at the same time enable the same object with the kinematic check
so it's the same wall, but in two different objects, one is kinematic and the other isn't
Also since it's not really an optimization question it's better to ask in #event-system-sdk2 or #world-development
oh srry.
it said ask questions about optimizing a world. So i thought.
no problem 
quick question: like avatars, there is a material limits for worlds?🤔
well you're probably going to have a bad frame rate if you have way too many materials but there's not a explicit limit
is there a way to tell how many materials you used then? I haven't atlased my world because frankly it was so hard to get looking right that I'm scared to, lol
it's small and I haven't compressed any textures yet or shrunken the lightmaps yet, and it's 36 MB
so I'm kinda wondering if I should bother
honestly you should get around to trying to compress the textures as that's going to help with the file size
oh, yeah sorry
I meant specifically atlasing
that's not going to potentially help with file size that's more just for cutting down draw calls
ohh interesting thank you
and yeah, I'm using assets I didn't make so there's several individual objects that use two materials
yeah you definitely would want to look into texturite assets tools for your props
well
I spent 25 days putting it and my avatar together so working on it further and potentially messing up UV maps and stuff (none of the materials even have human-readable names, I started with no experience so I didn't think to change them)
is a little nauseating but
I will at least compress textures and shrink lightmap resolutions and gather my strength to atlas later lol
it wouldn't be so bad if it could be done in Unity, the atlasing, but I suspect it's all Blender work and I imported my cabin from Blender all as one FBX because I was a fool
😩
hmm. if one object calls the same material twice, is that still two draw calls?
because there's this one, for instance, with like five material slots and each one uses the same material
which is kinda baffling but not my doing
okay that's confusing considering that should be one material slot?
are you sure it's using the same material and not five copies of it?
yeah, it's a game asset from the early days when the devs made a flower pot have as many polygons as a player character
no I have no idea what they were thinking
but it's not that bad performance wise
it IS however five separate objects with their own material slots all glued together and referencing the same material with each slot
is that early Final Fantasy XIV
yes.
I have no idea wtf 1.0's devs were thinking
I can see the difference in assets from early on and newer ones lol
you're probably going to need to do some mesh optimizations if you want that running on the quest
but it's five bottles on a shelf with five slots and I'm just not sure how draw calls work is all. its polycount isn't bad at least
yeah, noted. I'm not too unfamiliar with that at least, I had to "repair" a couple items
ahah, thank you
I'm so new to this it's hard to know what to google sometimes, but I try to be as self-sufficient as possible lol, thank you
I would recommend going through all the pinned messages on the world's sections and giving them a read
i
good point
I have been thus far
but now that I'm "done" aside from optimization (read: not done) I was just thinking about it idly at work
appreciated lol
Oh no, that's wrong though
The flower pots didn't have as many polygons
Just shaders and draw calls
FF14s renderer has a batching and instancing stage before it does the rendering; depending on what tools you used this isn't going to translate to Unity
Similarly, if an object references the same texture several times, it might be because it uses different properties for each invocation.
oh, that then. i'm new to 3d art and heard that long before i ever knew about how all this works, so i misremembered it
and yeah, i know it won't translate, at least. i was able to ask someone who's already done a lot of ffxiv-to-unity work
i never would've figured out that "delete green, mask blue with red" RGB channel nonsense for converting the specular textures otherwise lol
Mask blue with red? That's a bizarre workflow
it's just that ffxiv handles specular textures very differently
Oh, trust me, I have very deep knowledge of how this works
If you have any questions, feel free to DM me!
well my original question was just about draw calls anyway, since i think i've got the specular stuff all done. even if it was done in a weird way, you can see in the video up there that (imo) i got a look that's pretty faithful to in-game, if a bit prettier (at least i'm proud of it, don't hurt me lmao)
but these bottles (not fully rendered here) have five material slots, and i put the same material in each one, and i wasn't quite sure if that was a problem
but documentation seemed to say that unity will just batch draw calls when a single object uses the same material multiple times, unless i misread
so, should be okay
now i'm just onto compressing textures and shrinking lightmaps since 78% of my map is textures
As long as the batching works it should be alright
Working on these maps in Blender is quite a struggle.
Is there a way to make Audio Sources lower their volume via VRC_Trigger?
lowering would be a slider, unless you want a specific volume ?
Like I want to click on a button and have it lower the music slightly.
I don’t think AnimationTrigger works.
@versed lichen Do you think something like this is possible?
by the same amount each time ?
Like clicking the button will lower it from 1 to 0.8 for example.
Clicking the same one again/or clicking another one will lower it to 0.6
I want to decrease the volume by 0.2 each click.
Yeah in that case doing that through an animator shouldn't be very difficult
creating a lot of substates, and basically enabling parameters between states, and those states just have an event that changes the value on the component
hmm, could one of you help me out, everytime i put generate collisionand apply, unity gets stuck on "hold on". i would leave it alone for couple hours and it still be on "hold on"
You mean generate lightmap uvs
How many million polygons is that mesh ? @olive mauve
both, also how do i check how many polys it is?
I don't think you want to generate collision
You should be able to see if you click the arrow next to the asset in your project
Then click on the mesh object inside, it'll show the poly count in the bottom right corner
@olive mauve
If it is multiple millions, which I suspect, generating could take hours
Hello everyone 🙂 i have just a question ^^
This tag mean that I need to optimize my world ?
please ^^
That means someone reported your world for performance issues but it doesn't mean it has performance issues since people can report worlds for whatever
Unless your report count is unusually high it doesn't really matter
Hard to say though maybe your world does have performance problems 🤷♂️
@cold prairie Thank you very much for your answer ^^ i make an update this afternoon (UTC+2) for enhancement, i think lightning kill my world (Apo's World) it's a coaster park with lot of togable animation. 🙂
If you have realtime lighting that's a real performance killer you should look into baked lighting
yes i have read this in the world optimisation here "https://vrcat.club/threads/world-optimization-2.114/"
Thank you again @cold prairie ^^
@cold prairie Sorry, just a last thing, What about emissive textures, it's the same ?
Most of time you should bake emissive textures with the lighting as well so there's no performance impact
Thank you, ^^
Not sure why that is but mirror is causing a drop from 90fps to 20ish while in vr.
How performant is your avatar ?
also how big is the mirror. with larger mirrors camera has more to render.
Avatar is good, mirror is a reasonable size, also should add it's been fine for months. Made updates to the world in terms of images and more avatar pedestals but didn't touch the mirror or anything near it.
But I also added a button to turn off pedestals and it's still eating frames
can you show what the mirror reflects ?
can anyone recommend a good water shader? I need to make an open ocean but don't want to lag my world.
Silent's water shader is great
I'll give that a go, thank you!
Im sure this is pretty noob to ask, but when you export your level to vrchat from unity, does it upload all the assets in your unity project or just the ones being used?
just the ones being used
If future proofing is disabled
should never use future proofing though, it's no longer a supported feature
I'm trying to add audio to my world, I have looped sounds for 2 spots in my environment, but I'm not trying to add the 3d effect to them (I don't want players to hear where they are coming from). Just hear them when in range of the sound. Any advice?
@untold stirrup We visited your world earlier, really nice ! Have you thought about baking lights to help with performance ?
I have some objects which are cloned from a prefab and just translated to different locations and unity is not batching them for me
@west crag Does the frame debugger show the reason its not batching?
different reflection probes 😦
so that's a thing
yeah, turn off all but one reflection probe, bam, batches goes from 42 to 39 ... still nowhere near enough
ah a lot of it is post-processing of the world itself so I might actually be ok
I guess I just sit tight then
good lord lol
40 batches isn't an issue, or is that just a small part of your world?
Usually not worth fighting with unity to get things perfect
You can also use anchor overrides to help with thing batching when there's multiple reflection probes in the area
Or even turning reflection probes off if the material is non reflective
ahhh yes, I forgot about that trick
but
in this case it doesn't matter
the small part of the world I'm making will transplant into an entirely different place
so that stuff is all in their control I imagine
some other objects are saying "Objects are lightmapped."
That's usually I think them being on different lightmaps from each other
that .. would be a completely different sentence
I guess maybe turning off shadows for some of these things might reduce the whine
English is my second language sorry if it's not understandable at parts
nah, I don't think that's it
I think I'm complaining about unity's message not being useful heh
Ahh gotcha
Unity 2018 does improve batching of lightmapped objects though
But we don't currently know when we are gonna update to that on live
but I know it's before the event I'm doing this for
well, unless some major disaster occurs
what happens when I turn off "lightmap static" on these things
But even with 40 batches you should be good as long as the final thing that you guys are making is properly occlusion culled
They would be light up with light probes in that case and not have shadows
that's what I thought .. so theoretically worse performance, but it might let it batch them
Light probes shouldn't really be worse performance but usually it would look worse depending on the object/lighting of the scene
nah it just found a new reason not to batch anyway
I guess I will give up at this point and wait until the proper tools come out to check my stuff
Is it for Vket or something?
yeah
yeah
Do you have the numbers I'm interested to hear them?
Yeah explains why you are trying to get them so low
You won't really be able to add post processing though since you won't be able to control their reference camera though 🤔
yeah the question is will they be using it
And it's kind of hard to test with since you prob won't know their exact settings
Oh yeah I've seen some tweets about the tool but since I haven't participated I don't know much
what I do know is that a bunch of stuff I wanted to do was adding draw calls and wasn't able to be batched 😦
If I could see pictures I might be able to help more
this is shader hell stuff
the shader assumes the object coordinates so it explicitly turns off batching
You could atlas and combine all the normal geometry depending on if you have something else in the booth
I'm very light on actual geometry. there is a place I can do that though I think
the bit where I have the remaining problem is a complicated issue
ah except that place is batching properly yeah
so I can reduce draw calls by a further 2 if I really have to
I'm hoping that I'll actually be well under so that I can restore some of my decorations
Good luck on getting it down
im guessing diffuse just draws with simple shading
and standard lite is exactly what it sounds like
standard shader stripped down and gunned for mobile
i didnt know th3r3 was a standard lite
diffuse is very lightweight. standard lite is pretty lightweight but the additional normal map (and additional textures) can incur some small but not insignificant perf costs, which are wasted if you don't need it
Hello guys I have a question about the bloom...I want to make a toggle button to toggle it on/off, I made this it works only in unity but doesn't work in vrchat I don't know why😣
the bloom itself works fine, but I can't toggle it on/off in vrchat
I tried to check/uncheck the bool in play mode in unity and it works
don't put post processing on the main camera
Also that could literally be a single OnInteract SetComponentActive
On an empty game object
ohhhhh
also make sure you have the correct layers
default?
and that your vrc world has the camera reference
nopr
Thank you!! I'll go check it
ah but does v2 work?
I tried v2 but it kicks me out of the world every time I try to load it
so I switched back to the first version
V1 isn't very good for a few reasons and won't be supported in 2018
came across this useful tool
hey, I need a transparent mirror for a glass plane, how do I achieve this?
Use glass shaders instead ?
@gray minnow Does it actually need to reflect people?
that would be even more nice, but since I only would activate a thing like that with a button it's rather optional
so if you have a shader that allows to do that I'll happily take it :D
@winged sinew
It's complicated actually
I've seen it in the spirited away train world and have been looking for something like it since
If you just want to reflect the room, use the Standard shader and set it to Transparent. Then set Smoothness to the maximum. It will be reflective as glass. If you want to reflect people the setup is a little more involved and I'll have to write something up on how to do it this weekend
Just setting the standard shader doesnt have an option to make it a certain percentage transparent
but someone gave me a shader for it that maybe works
The standard shader lets you change the colour and opacity
only reflecting people is still interesting 👀
where would you change the transparency?
Next to albedo, there's a colour field
That's actually multiplied against the colour of the material
When you click that it'll show RGBA sliders. A is for Alpha, or transparency. Reduce that to zero.
for some reason my screen space reflections isn't working in my new world :/
worked before in other worlds I uploaded
post processing is working though, except screen space reflections
rendering path is set to deferred
even more strange, it's visible in untiys game window, but not in vr chat

Most likely something to do with the fact that VRChat is forward rendering not deferred rendering
You can't really use screen space reflections because of that in VRChat
Yeah, screen space reflections are not supported in Forward mode, and Deferred mode is not supported in VRchat
If you saw reflections on other worlds, those were just reflection probes
or custom (and heavy) grabpass screenspace reflection shaders
Hi there. was wondering if anyone could give me some tip on getting the world size down?
Crunch compressing textures is usually the way to cut down filesize the most
oh cool. how does one do that?
when you select textures in the project folder theres this option
Got it
it does decrease the quality of the textures by a little bit and can be pretty hard on your cpu to compress them but does help a lot with file size
Sweet, thanks lots for the help!
Theres also this https://twitter.com/Ruuubick_/status/1166014308918185984 which can help you find and optimize other things that take up a lot of the filesize
Ok. thanks!
Every world I upload doesn't wanna load, in game. I used the SDK and followed the tutorial on vrchat YouTube but it just won't load (on PC) and one of the worlds is an unmodified homekit I'm using unity 2017.4.28f1
@glass phoenix What's the world ID ?
@versed lichen is that on the website
https://www.vrchat.com/i/whathearts-479 is this what you mean
from the thumbnail i'm going to guess your vrcworld is probably under the floor, and that's why it's booting you out of it, since you can't spawn on anything
I'm on it
was it the right move to move the map up
nope
Oh.. where does one find the word ID
it's on the URL of your link up there, or in the world descriptor component on the VRCWorld object in your world
ahh
so how would i go about fixing my world
im a noob when it comes to comuter stuff
raise the vrcworld object above our ground
ok i moved it up abouve the floor
it didnt work
I'll try anything
I just know it's going to be something so simple and when it finally works im going scream
@fluid wharf If performance is terrible to begin with, disabling a lot of things won't do much, because they're most likely not the culprit for the bad performance
@fluid wharf Do you have realtime lighting in your scene ?
The world is loading theb kicks me to home
@fluid wharf Is it set to baked ?
In that case removing the objects should only really remove the drawcalls tie to them, you can check that with the frame debugger
I even filmed what's happening if that helps. I've been struggling with this all day
https://youtu.be/WrDRwBCng-E
My world is not working any info would be great thank you
How can I estimate a good guess of performance for lower GPU than my own? Is there a way to simulate GPU power of different graphic cards below the own performance or is is this done another way?
Not really, asking people with different PC specs is usually the best way, or showcasing worlds at the community meetup for example, to get a wide variety of hardware
Do the best you can, but you don't need to go above and beyond to optimize, vrchat has minimum required specs still
@gray minnow use steam vr performance monitor, use some other worlds as base line
I use oculusDebugTool to check gpu time of each frame and improve it as much as I can
Would 107 planes cause frame dropping? and like, be unoptimized?
frame dropping is unlikely, but if those could be one mesh instead then yes it's unoptimized
so do i need to chagne unity version for VRChat 2019.3.2p4 for create the world?
@orchid stratus no read the damn update, 2p4 is a build number
ah i'm not good at english no need to be aggressive just asking because i still don't know i should change unity or not after i read it.
we arent even on 2018 yet it would be a huge jump to go to 2019
hello
hi I have a problem there is a place in my map where culling culling makes walls disappear why
Either bake again after increasing smaller occluder size or use the visualization to see what causes it
question, i have a model ripped from a game that is a house question is when i put it into a world that house cant be walked on it would just let me o right through it, any solutions? Im new to world making
@sweet steeple the short answer is you need to add colliders https://docs.unity3d.com/Manual/CollidersOverview.html
it's best to use static primitive colliders (box, sphere, capsule) as building blocks to map out an invisible shape that people can stand on
Here's a quick tutorial if you're interested! ^^
Step 1: Go into the unity editor and click on the object. In your case, the house
Step 2: click on "Add Component", as highlighted in the picture below.
following u
Step 3: Type in "Mesh Collider" and click on it
Step 4: Profit! Now it should be set up and done! (:
if that doesn't work you need to enable colliders in the fbx
i think its called generate colliders or something like that
how expensive are simple colliders performance-wise anyway?
my world has some tiny avatars up for grabs and a powerful jump in it, so i kinda wanna map out some of the more complex surfaces of the furniture there with just like, boxes and capsules
The primitive colliders have almost no performance cost compared to mesh colliders
Since you only have to calculate the colliders that are touching something it get's pretty cheap having a lot of primitives versus one giant mesh collider
Even more since primitive colliders have optimized math
cool, alright
because that tiny chest in the top left has little puppet avatars in it
and i don't really want people who're suddenly small with big jumps to be like "wow these colliders are so lazy" lol
thanks
As long as you consider them a bit it's pretty hard to notice as a player
ye
First advice is to download ShareX
next, occlude those desktop notificatons, or disable them whent aking screenshots lol
i am not a world developer. i amnot a world developer. i am not a world developer.
Shift + Win and S is also good to use 😉
from research i've gathered in prep for when i inevitably work on worlds, your best friend is the unity profiler and frame inspector. use those. heavily.
@glossy wraith We'd need to know what your current drawcalls/batches situation is to help
From the limited info they atleast have the basics down
you are building for a VR platform. remember this and plan around it, you can do research for what's best. generally,
-plan for your scene to not exceed 1-2 million triangles and 500-1000 drawcalls, that includes avatars (players) so budget wisely
-compress everythinggg. or the stuff you can. textures and audio bloat filesize very quickly
-you do not need the fanciest shaders for worlds. use mobile shaders where possible, next best choice is standard.
-bake your lighting. set your lights to baked or mixed. some exceptions, of course, such as worlds that have a primarily outdoor environment, but you should only need one real time light for a sun or moon
others:
-atlas your textures and maps wherever possible
-batch stuff that can be batched like trees
-take advantage of LODs
@versed lichen already the map weighs 73 mb and then in vr bc of person lag and seux in dekstop not lag would have wanted to be able to lower the weight of the map first
Then follow the steps given above
better use gpu instancing on trees if u wanna save on memory
static batching for big meshes that dont appear everywhere
Anyone know the best mirror optimisation settings?
@limber thunder use the culling mask to reflect only what you want to show in the mirror ... other avatars are on the Player layer, the player's own avatar is on the MirrorReflection layer, so you need to reflect only those to see avatars, put the background wall or whatever on a special layer too, so in the end you have the culling mask Player, MirrorReflection and one custom layer with the wall/background on it.
also turn off pixel lights, but ideally don't use pixel (realtime) lights at all in a world, use baked lighting and just one directional light (sun or moon light etc)
-plan for your scene to not exceed 1-2 million triangles and
@vale dock
So your scene should have 0 triangles for 20 people 😄
1-2kk is for 90 fps with 970 reccomendation for rift.
In reality you cpu will bottleneck long before gpu
People will use models with at least 30k so 35 people is already more than 1kk
30k is very optimistic, safe assumption is like 60-70k per person
well yeah
i dont understand what the "0 triangles for all people" is for though
it sounds like were talking about and moving towards the same thing 0 0
20*100k
so 0 left for world meshes 😄
If you want to keep scene within 2kk for 20ppl
i didnt say anything about avatar sizes initially >u>
-plan for your scene to not exceed 1-2 million triangles and 500-1000 drawcalls, that includes avatars (players) so budget wisely
@vale dock
im just taking oculus's numbers cuz its the best advice i can give, i havent actually tried "simulating" a reasonable scene in the unity editor with the profiler yet
are you trying to say that those constraints are much higher than i think or that im suggesting that one has to be a lot more constrictive on their worlds (cuz i also agree that most avatars approach 100k triangles cuz gay >~< )
It will not matter much or at all
i know that you can apparently push 10 million triangles in a unity scene under conditions that i dont even remember
because of bottlenecking?
that makes more sense then
can I add one?
- make everything that doesn't animate or is a pickup static
My world has like maximum of 250k triangles visible at same time
cuz vrchat is pretty CPU heavy right now and doesnt use a lot of GPU
and maybe max of 50 draw calls
I am more afraid of triggers and networking, when working on stuff
- avoid overbroadcasting, make triggers local and put objectsync on the object that changes instead
(don't broadcast a button press, sync the result)
yeah, disabling is an exception
Is it currently possible to load a scene into another scene or do we have to put everything in one scene? Because I would like to separate scenes this way so I can toggle their state (on/off). If there is any other way which would be better than this, may it be possible to let me know how to do so? Thanks in advance.
one scene
ok thanks Ruuubick
@lilac saddle What triggers should be always be local and what triggers should always be broadcast?
goodmorning everyone, i was wondering if anyone could tell me what i am doing wrong i am using a theater prefab which the screen works just fine but there is no audio playing
its also connected to the screen
@lilac saddle im assuming your ingame world volume isnt down or that the video is quiet. have you tried multiple videos to make sure?
also #world-development would be a better place to ask next time.
does anyone know why in unity i cant get close to things without it disappearing
the closer i get the more it goes away
Press alt + middle mouse while aiming somewhere
Your scene view cameras clipping got messed up
Click the object you wanna focus on and press f
@frosty nymph Check the steps on how to update your ask in the VRC documentation
Pretty simple question - is there a recommended max texture resolution?
4k
Crunch compress at the end and you'll be fine
@placid shuttle Do you mean the field of view or something else?
The default desktop view in vrc is 60
Pretty sure that's also 60
Component > Mesh > Text Mesh
that's how I'd normally do it at least, not sure if that's the "recommended" method
I prefer ui text over text mesh but i think its whatever you feel comfortable with using.
Yeah, depends what you're going for I guess
Is it a problem that I have to make multiple materials for small variations of color for different objects? Does it all become one material in the compile or will it have a performance cost?
whatbdo you mean
i dont follow what youre trying to do
if your model is just flat colors you can just do vertex colors
then if you want to add details later - real textures- or just have texture maps on hand
you can always bake those onto a diffuse texture for later
and have one texture for the entire thing
or better yet, to make it real light: pixel palette UVs
My example is if I want to have 7 cups in 7 colors, I'd have to make 7 materials. Is that bad?
that will make seven different materials
one thing you can do is if you're using the standard shader, make the cups the same material and enable GPU instancing on it.
then create an animation to change the colors of the cups
Yeah, it's not necessarily a problem, but it's definitely not efficient
For the same reason that atlases are a thing
I have a lot of materials in my scene, many are used across different meshes. If I enable GPU Instancing on all my materials, will it help with performance?
Only if the meshes are identical afaik
And only if they are not static
And most cases static > instancing
Instancing better saved for cases where you need a lot of identical dynamic objects
trees > bubbles
Combine all meshes + gpu instancing > all
That sounds like a terrible idea in most cases 🤔
Why
If you combine all meshes gpu instancing doesn't really benefit you in any way and you can't really do occlusion with everything combined
Lol u misunderstood
Combine all meshes up to the unity mesh limit then gpu instance
Use cubic areas e.g. 50x50x50m areas r occlusion
For*
GPU instancing still wouldn't be doing anything in that case 🤔
Are u sure
Yes for GPU instancing to work it needs to be the same identical mesh and same material on that mesh for them to get instanced
That applies to mesh combining aswell
If you are combining meshes in 50x50x50m areas you would rarely end up with identical meshes
If u mesh combine its like static batching or better
I'm not arguing that you shouldn't atlas and combine close by objects which is a pretty important step in optimization I'm just saying GPU instancing won't work with that
If u do ur models properly with atlases then u can combine most objects
Combine up to max mesh size then turn on gpu instancing 4 the combined meshes
So all your combined meshes would be identical in the end?
Because it doesn't 😔
You might be misunderstanding what GPU instancing does
you can check it on but if you're not using it correctly it's just a checkmark you turned on
"GPU Instancing only renders identical Meshes with each draw call, but each instance can have different parameters (for example, color or scale) to add variation and reduce the appearance of repetition."
😔
Yeah ofcourse and after you start combining meshes they won't be identical anymore
Thats not always true
Ofcourse it's not
But u can use static batching if u prefer that i dont care lol
I combine as much as i can then use gpu instancing
I use everything 🤷 just instancing or static batching won't solve your problems
And from what you are saying your gpu instancing isn't working
I atlas/combine > static batch > GPU Instance depending on the objects in the scene and everything else
Static batching and mesh combining makes ur world file size bigger fyi
Try static batching a forest vs gpu instancing
Yeah it does that's why you need to know what to use and when
But 4 fps ultimate thing to do is combining and gpu instancing methinks
there's isn't one set "yeah just do this"
There isn't that many cases of combining meshes and doing gpu instancing that would work for everything expect if your world is just the same group of meshes repeated everywhere
Occlusion culling can also kill your fps if u have too many objects
Better not use it in open areas
That's why you also need to know how to optimize occlusion culling and not just turn it on
you'd need tens of thousands of objects
in which case your perf is already dogshit
yup that makes it worse for sure
Better use Frustum culling and fog
You just don't mark everything as a occludee and occluder and call it a day, you should go trough every object and mark it right
Or disable parent object
frustum culling is basically worse occlusion culling
especially since FOV differs from headsets
Collider streaming then
occlusion culling is great
It is if you do it right
Na occlusion culling is overrated
if you like performance and stuff not disappearing in your view, then occlusion culling is better
yup
we don't usually bring up stuff that isn't relevant to the platform 
If your occlusion bake is taking forever you are doing something wrong
"When should you use Occludee Static? Completely transparent or translucent objects that do not occlude, as well as small objects that are unlikely to occlude other things, should be marked as Occludees, but not Occluders. This means they will be considered in occlusion by other objects, but will not be considered as occluders themselves, which will help reduce computation."
If you mark everything in your scene with everything enabled static you are doing something wrong
lol you dont even know how my world looks like
but do whatever you want i dont care tbh
whatev works 4 u
I think I multiple times stated that it depends on everything in your scene all my tips was general on what you should take in consideration on optimizing
@cold prairie The first thing you said was wrong though, Unity's occlusion cache can become bloated and make all future bakes take 2-3 hours. Deleting it helps, but of course, it needs to regenerate it
Never ran into that myself thanks for the info, it does help with the bake times when you setup your occlusion properly though
I did have my umbracache files bloat into 800k files at one point which was a pain to clear out
I guess a good pointer would be clear your umbracache files once a while before they bloat up too much inside the Library\Occlusion folder in your project
I did have my umbracache files bloat into 800k files at one point which was a pain to clear out
@cold prairie Sorry, offtopic but are you finnish?
@smoky kindle yes I am
Can I get some help on how to setup a movie player in my world
guys I got question how do you optimize floors without being too tiley and too crappy texture
What kind of texture are you using? Can we see it? @quaint mango
secondary maps with higher tiling
how do movable object react to occlusion culling?
will you see them move? or does it ruin it?
like if people are moving stuff behind you and if you turn around will they be moved?
they need to be set to static to be part of occlusion culling afaik
but objects that are not static still disapears
im moving the main camera and everything disapears but just not lights
of does it work differently when in game
during the visualization ?
yea
Then i'm not sure, if they're not marked as occludee static then they shouldn't be hidden
oh maybe this should be unchecked?
ah yeah probably !
hmm still dissapears
how do you mark something as occludee static
or is it just static object?
oh nvm i think this is it
it just sets this
still disapears
yeah.
what are you trying to solve?
" if people are moving stuff behind you and if you turn around will they be moved?"
yes, as objectsync will move them even if you can't see them
the pickable objects should they dissapear or not ?
ah ok then 😄
thats what i wanted to know, so its ok if they disapear
even if you can't see them they are still there
it's only their visibility that changes
ok gocha thanks
np
alright baked lights , occlusion culling, texture compression, whats else? 😄
What do the stats look like for you currently in play mode ?
That's pretty good !
what are the main numbers?
CPU main, batches and drawcalls
CPU main is the most important usually, you can always lower the batch/drawcall count
but there's a point where the effort isn't worth the gain
if you think you can do more, you can, but there's a limit to optimization
my cpu main is 14ms with just a skybox. that's because of vsync.
well even before optimizing i got full fps so i guess its kinda enough for now
in desktop mode ?
and vr
cool, perfect then
but if high mirror it was like - 10 fps
All layers enabled ?
idk what you map is but 560 batches sound a lot depending on what you're doing
that's without any occlusion culling
not a big deal
And how many drawcalls is that?
uh
or maybe not (i disabled it)
water can be a single batch but still heavy for the gpu
I would also check the profiler for drawcalls
i have one directional realtime
shadows?
if its off/baked the water doesnt show anymore, cuz its like moving and stuff
but water soo nice
oh yeah, it needs depth
so i guess ill have that big minus for it
is it only on a specific layer ??
make sure the realtime light's culling mask only affects the water's layer
you can also make the water toggleable along with the light for it
to make people happy
hmm yes yes
Does anyone have any suggestions for world optimization?
I have already used occlusion and low quality mirrors.
Can you take a picture from your world in Unity in play mode with the top right button Stats opened ?
@versed lichen
Is your lighting baked ?
That has the biggest impact on performance out of all things
alrighty@versed lichen are there any other suggestions?
Did you change the layers on the mirror ?
@versed lichen layers? like low quality mirrors?
Yeah, if you don't want to bake lights, you can change the layers on the light as well
You should only need Default, Player, Player Local and Mirror Reflection
should the backface threshold be 5 or 100?
backface threshold is complicated, try 100, then use the visualization
@versed lichen shouldn't use player local in mirrors
aye true
i already have lq mirrors
adjust light settings a bit, that's the easiest thing
Is it better use 3-5 box colliders on an object than using a mesh collider? Or does it matter that much?
3000 tris is the mesh
Definitely
Boxes are almost always better
Collision check costs are like
Box: 1 check
Sphere: 1 check
Mesh: Each triangle is checked
So a box collider vs a mesh box collider is 12x more expensive? I might be wrong on the exact numbers but that's the idea
so decimating a mesh and using that for colliders would still be an improvement
yep !