#world-optimization

1 messages ยท Page 27 of 1

spice turtle
#

So would doing this with groups of static things help?

solemn tapir
#

Lmao. No. There's no reason to do that.

You make logical groups. A root or parent container holding the similar items.

WINDOWS--
window 1
Window 2
Window 3

There's no need to nest things under each other endlessly.

#

When merging, you don't want to just merge everything without logic either. You merge nearby meshes into larger chunks to make culling easier and more effective. If every item was merged for example, then no matter where you look, nothing would ever be frustum culled.

#

Organizing your hirearxhy only makes it easier for you to know where things are and manage your project, or make it easier to export things as fbx to send into blender and merge.

#

Poor organizing of the hierarchy can have odd impacts that are more technical and debated than what needs to be talked about here.

spice turtle
#

Well I mean I feel like combining all these glasses on the display into some kind of mesh thing on blender is far beyond me, should I try to bake the world as it is or basically toss out having glasses and cups

proven crater
#

Glasses and cups arenโ€™t static objects so donโ€™t bake them, should help performance I think

split wadi
#

Occlusion culling thinks there's an occluder here for some reason? Even though you can clearly see this is an open area? It was working flawlessly up until I just moved some furniture around and re-baked.

Its this one spot in the entire map thats giving me issues and it's a corner spot with a couch and spin the wheel.

split wadi
#

This is the problem area I have no clue why. The couch used to be along the wall with the rug, that is the only change I made here. The bar is a prefab and when I bake occlusion in another scene, the issue does not exist. (This scene is a bar in the middle of a city so It's rather large )

obtuse bear
solemn tapir
#

I will say. Things like small furniture, like couches. Tables, chairs, etc. Should not be set as occluders. Only occludes. The walls should be your only occluders.

split wadi
#

I think I found an explanation for what is happening but no ideas for how to fix. I am using the occlusion visualization and it shows these white boxes from the second floor when I put the camera into the problem area. in the spots where theres no problem, it only uses white boxes from the first floor.

#

I have narrowed it down to something upstairs thats messing up the calculation but I cant figure out what ๐Ÿ˜ฆ just gonna slowly enable things until it messed up and update you guys on the findings cuz i dont want anyone to have to deal with this haha

EDIT: Figured it out. SO that yellow box happened to be the area that the camera can 'see' the floor of the second floor and it was marked both occludee and occluder static. Removing occluder static from the floor object on the second floor fixed it.

ornate parrot
#

culling in my world is being very hard to work with

#

i just want to render certain things when a player is in certain areas

pallid gale
split wadi
# ornate parrot is there a proper guide for this

That guide rainwolf plush posted has been the one I have been going off of its super helpful. Every once and a while you'll get a weird behavior like I just had but luckily I could solve it within a day

ornate parrot
#

the camera still renders the rest even when its indoors + the wall in the way

#

wacky

solemn tapir
#

Poor occluder or merged mesh. Or possibly transparent materials with zwrite disabled.

#

Should consider using large solid walls (giant unity cubes) set to the tag Editor Only as your only occluders.

#

You can also use area triggers to disable areas depending on how your world is setup. Occlusion may or may not be the best solution, considering it's file size and cpu overhead. There's times to use it. And times to not use it. Sometimes a mix of things is needed. You can't overly rely on any one system to solve your issues.

autumn verge
#

ello i just wanna ask for help, i cant seem to upload the world although there are no errors showing up or anything, how do i fix this?~

twilit atlas
autumn verge
twilit atlas
#

just enable both
but yellow is warnings
red is errors

oh, nevermind, you have 0 on all of them anyway, could not see that on mobile well

fallow ember
split wadi
faint moth
#

Yo dose anywone have good avatars to trade

pallid gale
#

this is the wrong channel for that

late garden
#

my world is pretty heavy (50 fps on desctop) so i reduced the render distance a lot (1000 to 100) and i only see the room i am in (the other rooms are at least 150m+ far away) yet i didnt see any improvement

am i doing something wrong or is it just that reducing the render distance wont unload the assets as that they are not in view anymore

quartz shard
#

can be alote of things that low yor fps like a wery bad mesh you walking on maybe or something else.i think not seeng the object not mean that it not costing somthink no idea why yor world have fps problem :/

solemn tapir
late garden
#

I have 8m poly with around 33 mat and around 200mesh 2 udon (for tp) and most of my lights are in baked mode (even tho they somehow still show as real-time for no reason)
I have one grabpass on the water(big pink-ish rectangle)

#

I made everything from scratch and I can tell ot is pretty optimised

#

Except a couple textures

solemn tapir
#

You need to drastically reduce the poly count. Player ideally shouldn't render more than maybe 500k at any given time.

You need to merge meshes into logical groups to reduce draw calls

Use as few materials as possible and atlas textured where possible to reduce drawcalls and improve baking for lighting

And actually bake your lights in the lighting tab.

Profiler is a profiling tool in the windows tab.

late garden
#

Also in the editor I'm getting actually a lot of fps

solemn tapir
#

16.2 million verts....

#

72 can also be a bit, especially considering hardly anything seems to be batching, ideally more of that would be able to be batched. Remember, performance is much worse in vr because you're rendering everything twice, once for each eye. Your profiler doesn't take this into consideration, you need to.

Your poly count however, is most likely your biggest issue that absolutely needs to be dealt with. Those numbers are simply not viable. The camera should absolutely never exceed 1mn poly, ideally sub 500k. Or even way less than that

#

If any of these super high poly meshes have a mesh collider on them, you'll have an absolutely massive hit to performance on top of just rendering them.

Mesh colliders perform a collision check against every face of a mesh, so millions of collision checks, would absolutely tank performance. Even if you're not using any mesh colliders, 16.2 million Tris is simply 16 million too many

late garden
# solemn tapir If any of these super high poly meshes have a mesh collider on them, you'll have...

I have a lot of poly that are lost in tree and grass, which are alredy quite low poly, I can't really reduce them

My world has around 50k poly, but the I added a landscape for a place to chill with sum tree and grass I made, which kinda are using a lot ik, but usually u won't see that much poly at once except if ur going there

Tho, I think imma redo everything, like all the landscape to smth else completely

solemn tapir
#

The screen you posted is the render from your camera, the camera can clearly see over 16m tris....

late garden
#

Yes, but thas with the additional terrain, the base facility where ull be 70%time is about 50k poly(if I remeber well but wasent that big)

late garden
#

Imma go sleep now, thanks for ur help and tips

hearty ore
#

I'm having some ridiculously finnicky results with occlusion culling and I need help. The camera is outside of the occluder and there are no holes in it. The only flag the occluder has is occluder static. All of the objects inside the occluder are occludee static, but still visible

#

The scene view is in between outside where the camera is and inside a cube occluder (pink)

pallid gale
#

if it helps a guidon occlusion culling

hearty ore
#

That's what I'm currently reading and taking inspiration of using occluder boxes and nothing else being occluder static

hearty ore
#

Yeah I can't seem to get any of this to work the way I want it to, so I might just make my own culling system

hearty ore
#

Nvm. That's neigh impossible for my current skill set

split wadi
#

Does anybody have an estimate for the performance impact of video player screens? are they efficient enough to have a bunch of them in a sports bar setting? I've been putting the video material on lots of tvs

#

just a rough estimate not asking for big O complexity or anything

elfin anvil
#

i don't have one of these gpu profiling programs and stuff but: the shader itself is a surface shader with an extra gamma converter so it's like the standard shader but a bit lighter, if you want an even lighter shader you can change the material for one with an unlit>texture shader, and if you want to apply gamma then create a new unlit shader and replace the line "return col;" with "return pow(col,2.2);", if you are using various non-toggleable screens you can just merge all planes as one so you don't reuse the video screen component on each object

eager ingot
#

So Iโ€™m somewhat new to making worlds, is there any good videos for starters on optimization?

hearty ore
#

Or is there a way I can achieve a similar look as the top with just baked lights?
Both images do have realtime lights turned on

elfin anvil
#

Unfortunately the standard lite shader has reflections disabled to avoid sampling cubemap textures
The only available reflections would be specular highlights
So standard lite won't sample reflection probes, only dynamic lights

#

And if you baked the lights already it's possible the shader will disable them

hearty ore
#

Well. I have a toggle to use only baked lightmaps or lightmaps + realtime lights for specular. It seems like I can remove realtime lights altogether if I use something like bakery to bake the specular highlights into directional maps or something cheesy like baking specular highlights into reflection probes

#

since standard light doesn't sample reflection probes, I'll have to see how just standard does in terms of draw calls

#

just enabling realtime lights blows my performance target away

#

Maybe I'll just try bakery. Even though bakery produced some really bad results for me

elfin anvil
#

Try using box projection reflection probesand a shader that supports it, realtime specular lights are heavy sometimes

stray oak
# hearty ore Well. I have a toggle to use only baked lightmaps or lightmaps + realtime lights...

I use this to bake spec into reflection probes, it's an annoying extra step to the baking process but works nicely https://github.com/zulubo/SpecularProbes

GitHub

Bake specular highlights into Unity Reflection Probes, allowing baked lights to cast sharp specular highlights for free - GitHub - zulubo/SpecularProbes: Bake specular highlights into Unity Reflect...

hearty ore
#

I did stumble across that and tried to use it, but couldn't quite get results similar to realtime specular. Trying out bakery atm since I have that

stray oak
#

Also make sure you're using some kind of directional mode for lightmaps

#

And shaders which support that, if it's the more advanced kind

#

I don't think bakery does this? I personally use that together with bakery

#

The directional mode thing is important or else normal maps won't do anything. But yea it also takes some tweaking of the specular probe sizes and intensities, and intensity of the reflection probe too

#

To make it look close to realtime

hearty ore
#

Bakery SH mode does bake speculars and requires a special shader for that reason

stray oak
#

Ah cool, good to know. I just use normal directional mode since I wanna keep my shaders simple and I'm not too concerned about it being super realistic. Those advanced modes look niiiice tho

hearty ore
#

I'm aiming for highest quality I can squeeze out of quest hardware since my map supports quest. Trying every optimization tip I can get and reading the profiler a lot. Too bad the PlayerLoop is taking most of the profiler

stray oak
#

Isn't the playerloop like literally everything that's happening in your scene, graphics physics scripts etc? Idk why it wouldn't be using the most time in the profiler?

#

I believe it's always gonna be the stuff within that loop that you want to look closer at and optimize, unless your editor is glitching out or something

hearty ore
#

That should be EditorLoop iirc

#

PlayerLoop, I believe, is player controller related stuff

stray oak
#

No, I think it means Player as in the Unity Player, as in the core engine that runs the game, all update functions and rendering etc (including player controller stuff)

#

Same way "Player settings" is like engine settings and not controller settings

hearty ore
#

ah fair

#

Forgot Unity used the term "Player" for the runtime

stray oak
#

Yeahh it is an inconvenient choice of name XD

#

Are you using the frame debugger as well? That's really helpful for optimizing graphics, making sure your meshes and materials are batching/instancing properly and the camera isn't taking any extra steps to draw things

#

I also keep this handy for what numbers to target

spice turtle
#

Ive been on off asking this sub and reddit for a good month with no answers on thisโ€ฆ I have QT pens in my worlds and they do not drawโ€ฆ how for the love of god to people get these things to actually leave trails and draw

versed lichen
#

I don't think you're supposed to do anything special, it's a drag and drop prefab afaik

#

Check whichever official source for them and follow instructions

spice turtle
#

There is no instructions on them its literally just qt pens

solemn tapir
#

If I had to guess it's one of two things

1: you didn't download it from the booth page and are using a stupid old version meant for SDK2 acquired from God knows where

2: you're not using the prefab and are just adding the FBX of the pens.

topaz hinge
#

we're trying to figure it out in world dev lol

solemn tapir
topaz hinge
#

yeahh

#

and when people act like people are purposefully hoarding information xd

solemn tapir
spice turtle
solemn tapir
valid marten
#

how can I make a room not render when people are not in it?

pulsar field
#

Easiest way would to enable ambient occlusion

#

Some good tutorials on YouTube on how to do it

solemn tapir
#

That.... Doesn't make sense

First, you never want to use post processing AO in vrc. AO should always be baked into the textures/lightmaps.

You probably meant Occlusion Culling as well. AO makes no sense in the context you used it.

solemn tapir
# valid marten how can I make a room not render when people are not in it?

Occlusion Culling, which may or may not work depending on the world design. Occlusion culling can work well when designed for it, but it carries both a file size and cpu performance impact so it needs to be used appropriately. It will cull meshes hidden behind solid occluders, like walls, or by using large solid cubes set to Editor Only set as occluders between structures if the structures aren't visible from one another such as disjointed rooms

You can also use LODs to distance cull meshes.

You can also use the far clip on the camera to cull meshes.

None of these however cull running logic, and only cull meshes.

You can use area triggers which is a udon behavior or U# script that uses a collider volume set to istrigger to determine if a player is in it or not and then disable meshes and udon logic so that there isn't any logic overhead from items in the room. When a player leaves a trigger, that area can be entirely disabled. You can have trigger portals between rooms, in hallways, all over, or if there are buttons to get to another space, that button can also disable everything.

valid marten
#

thank you, thatโ€™s a great overview

#

Iโ€™m thinking Iโ€™ll use occlusion culling

#

with an invisible wall occluding it

#

since the room kinda sticks out and makes other parts of the world look bad

fallow drum
#

Yea big invisible walls are always handy. That or setting your camera culling distance if all your rooms are well sperated in space and you teleport between them

pulsar field
obtuse bronze
#

Hello, I've made a world, that is supposed to hold a 'show' for about 12 people, + 3 actors and a few theatre instructors.

we have a host on a PC using Vive, but the rest uses Quest 1

Lately when we have tested, several people experience being booted from the world, where the only clue has been a message which sometimes appears, stating that they have run out of memory.

the world's size on quest is ~26Mb

We've tried clearing the cache, but it does not seem to resolve the issue, and I've yet to find other suggestions to this specific problem.

I'm thinking that the culprits could be one or more of the below:

  • Too many objects in the scene
    (As I recall, unity only render the objects that it can actually see, and most places they see much less objects than is even in the standard VRchat home, but the problem seems to occur everywhere. I'm considering to bake an occlusion map regardless. Also yes, I made sure the objects were mostly as low poly as I could get them, and I mostly used VRchat Toon Lit shader if I could get away with it.)

  • Six constant looping music
    (Basically for ambience in different parts of the world)

  • Two particle systems
    (both: max particles 1000, rate over time 500, lifetime random between 50 and 100)

  • About 100+ canvasses
    (because buttons needs to be located many different places, but it pains me to place that many, as I have seen canvasses as taking up quite a bit of space when observing them in Unity's profiler in the past)

  • Bad routers
    (because we use three, and the headsets using one particular router seems more stable in not getting booted)

Any thoughts and ideas?

solemn tapir
# obtuse bronze Hello, I've made a world, that is supposed to hold a 'show' for about 12 people,...

Literally just as the error says, the quest ran out of memory. Q1 has like 2gb of ram iirc. That goes very fast. Six audio sources could be a pretty big hit on memory, ensure your audio files are very small and set to be compressed in memory. You may want to use area triggers so only audio near the player is active. Or remove these outright on the quest.

Textures and light mapping can also take a chunk in memory. Compressed textured uncompress into memory.

Canvasses is certainly excessive. You should rethink design if you're relying on that many.

Too many meshes.

Too many materials.

obtuse bronze
#

Also I can see we have 77 materials in total. If I do some funny buisness, I should be able to kill off like 42 of them I'd wager, by stuffing the images into one texture, and project the UVs to their correct image. Would that be a better option?

fallow drum
#

It's always a good idea to atlas materials together like that where possible

serene sparrow
#

does unity have some easy atlassing tool like CATS/Blender? Or

tall topaz
serene sparrow
#

Yeah, i'm familiar with optimizing avatars. With worlds i have no idea where to start haha

tall topaz
# serene sparrow Yeah, i'm familiar with optimizing avatars. With worlds i have no idea where to ...

Okay, then it's worth pointing out that unlike avatars a lot of large environment objects like building surfaces won't atlas unless you're using Blender and can essentially "cut up" the surface into chunks.

If you're aware of how UV unwrapping works then it's important to understand that with avatars, UV unwraps almost always lie between the values of 0 and 1 (the space that the texture occupies across it's X and Y axis), and auto-atlas tools found in CATS uses this to simply shrink and move UV coordinates into smaller sections.

With environment objects this often isn't possible as surface UV coordinates will be much larger than the 0-1 bounds of the texture, and its how a texture continually repeats across a large surface.

#

Merging small objects that have their UV space within the 0-1 bounds is doable, though the addon I linked only combines textures - not the UV data in meshes which you also need.

serene sparrow
#

I see, i guess it's not as easy as an avatar

#

thanks for the info

untold apex
#

77 materials is quite a lot. that's likely to send draw calls through the roof. look into material atlasing... as the other poster said, you pack the UV shells of multiple objects into a single map, then use a single material for all of them.

#

trim texturing /trim sheets is another good trick for environments. you basically slice up your uv tile into tileable horizontal strips that describe different materials like walls, molding, baseboards, etc, and arrange the UVs on your various objects to match. means you can texture tons of space with a single material

solemn tapir
#

I've noticed on some worlds for the Q1 exclusively that you'll get an out of memory warning too, but if you immediately load the world again, without doing anything at all, it will load fine with no issues at all and perform as expected. Not sure if it's some form of memory bug, bad garbage collection, or something. But it's kinda odd. If it fails on the first try and you get the out of memory warning, going again immediately will almost always succeed if the world is indeed functional.

magic oar
#

has anyone come across this error when trying to build for android/occulus?
Assembly with name 'Unity.XR.Oculus.Editor' already exists (Packages/com.unity.xr.oculus/Editor/Unity.XR.Oculus.Editor.asmdef)
i cant get rid of this error I googled it and others are getting the same thing.. im not sure how to fix it
https://forums.oculusvr.com/t5/Unity-VR-Development/Assembly-with-name-Unity-XR-Oculus-Editor-already-exists/td-p/839295

stray oak
magic oar
#

ya that got it thanks

#

Error converting build target group names .
Must specify valid information for parsing in the string.
UnityEngine.SubsystemManager:Internal_ReloadSubsystemsCompleted ()

now this popped up

stray oak
#

Hmm, only place I recognize subsystem from is here, do you have any of this XR stuff installed in the package manager? If so remove that too

#

Or do you have any XR stuff or objects using components from the Oculus SDK leftover in your scene maybe?

cursive lotus
#

filesize ๐Ÿ‘

#

protip: crunch compression and decreasing max size

tall topaz
cursive lotus
#

its in the import options

cursive lotus
tall topaz
#

Ah, gotcha. If textures ever become a problem in my world i'll check it out :D

solemn tapir
# cursive lotus

Note, this reduces the download size of the world but not the size in memory.

cursive lotus
#

yes dreamed

cursive lotus
pallid gale
#

like if you have a 2k texture and it still looks decent in 1K use the 1K

cursive lotus
#

maybe ill compress different things at different sizes and see what looks good

pallid gale
#

in that case you probably need the resolution

#

also stuff like roughness Maps or metallic Maps might be a good spot to Target a resolution reduction

#

like a metallic map is just a black and white texture that's pretty much just going to be solid blobs

cursive lotus
#

yea

pallid gale
#

a Unity documentation on detail Maps can be quite helpful for tiling textures

stray oak
#

I always find I end up with a bunch of normal maps that are like 4k and huge file size but are literally one flat color and don't even contain any details lol

pallid gale
stray oak
#

So I usually have a handful that I straight up delete, and others that are big blobby textures that look exactly the same at like 128 or 256

#

Yep

#

It's just funny to look at what's taking up space in a world with assets you've imported, and find it's a bunch of blank 4k normal maps that aren't doing anything ๐Ÿ˜†

cursive lotus
#

fuck it

unnormal maps

granite wadi
#

so with the vrsdk, when optimizing a world, we dont use the XR plugin right?

unique kite
#

Right, XR is for multiplatform integration and nothing we are concerned with. Optimization is: Mesh, atlas, compression, lighting, and size. simplified. If you make use of Udon or UdonSharp you also then get to focus on code optimization.

#

^generalized of course. Point being, ignore the plugins. the vrc toolkit which needs to be added to the CC is your first step into optimization, followed by the profiler and then the built in stats monitor.

granite wadi
#

ok and one more question, i know it says on the website that there are no shader limitations for worlds on quest, but is there a performance benefit to switch from unitys "standard" to the vrc provided "standard lite"

#

or will using unitys standard really not affect it much? cuz when i swap some to the standard lite, they become a lot more dull

solemn tapir
# granite wadi ok and one more question, i know it says on the website that there are no shader...

This isn't true how you've worded it. There are limitations. The quest for instance can not use GrabPass. So any shader using a grabpass will break the world, among other unsupported shaders.

You're allowed to use unsupported shaders for worlds, but it's absolutely no guarantee they will work at all. Some unsupported shaders may cause a heavy hit to performance.

It is best to use the quest shaders when possible, as they have the least overhead.

Standard is usable but if you're not specifically needing a part of standard that isn't in Standard lite. There is no reason to not use standard lite.

Poiyomi Toon has been shown to work pretty well for quest assuming all materials are locked in, and no unsupported aspects of the shader are used. When locked in, it would perform virtually the same as standard.

Everything needs to be tested by you as you add more unsupported shaders. Performance and function isn't guaranteed so it's up to you to ensure it functions and ensure you don't use any unsupported shaders.

Good luck

real wasp
#

Hey! Is there a way to check what am i importing and what size ? I made a world in blender(8mb), then i put textures inside unity, compressed them into around 170kb each and i did this with every asset i put, like rocks and trees but the world still says its 100mb

pallid gale
real wasp
#

Thanks! I tried going through each object in the scene and checking the textures but its pain haha

pallid gale
#

this will be a lot faster as they'll give you a list of everything

real wasp
#

Yeah found it thanks a lot!

pallid gale
#

so what was taking up the file size

real wasp
#

other cubemap idk where i am using it lol, shader, and then there is a normal map in array its for the trees but idk how to unpack it so i will just get rid of it probably

oblique pivot
#

I'm trying to profile my world to see if it is event optimized
I'm getting 8.2Ms on my CPU but 7.6Ms of that is "PlayerLoop"
The part that appears to be handling my scripts only takes 1.5Ms.
Is there a way to lower the PlayerLoop miliseconds?

#

Basicaly, how do I ensure my CPU utilzation is as low as possible as I am being very light on the GPU already (1Ms at max)

wary rapids
#

Currently working on a world and when i test on pc, in some locations i am less than 60fps and others i'm at 100+, could someone help me out with optimising it? thanks!

unborn ruin
#

VRChat world works fine in build test, but when I try to access it in game after uploading it, it crashes and sends me back to home world. Is this a common issue?

wary rapids
#

Is there a way to reduce my world size from 245mb to below 100? Or have i done too much to my project?

pallid gale
fallow drum
#

^^ use that tool and probably reduce the size of a lot of textures and set them all the crunch compression

wary rapids
#

thankyou so much!

obtuse bronze
unborn ruin
#

@obtuse bronzeAre you talking about file size or in-game world size?

#

File size its only 50mb or so.

obtuse bronze
#

Then check the spawn point. I brainfarted a while ago, and forgot to put in a transform, so I got booted back to home world.

unborn ruin
#

I got my spawn point as a transform.

obtuse bronze
#

is it oculus or PC build?

unborn ruin
#

PC build

obtuse bronze
#

Ok, then I don't know anything to further help. Sorry ๐Ÿ™‚

unborn ruin
#

Its cool. I've been having all sorts of trouble with it. First few days it was working great! Now, I'm having all of these problems just popping up left and right, lol. This all started happening right after the more recent update to SDK3 that I imported.

#

Not sure if maybe some of my assets just don't like the new updates. If that's the case, then I'd have to start removing stuff from the world.

obtuse bronze
#

uff, sounds like I should take care if I update the SDK3 then ๐Ÿ˜…

unborn ruin
#

Ha, yeah. Who knows? Maybe this is just an isolated incident in my case.

obtuse bronze
#

or were you updating from SDK2 to SDK3? ๐Ÿค”

unborn ruin
#

No, I started getting into world building about a week ago, and then I saw that SDK3 had a newer update over the weekend if I remember correctly. I have a habit of checking for updates every other day or so.

obtuse bronze
#

Arh, I see ^^ I'm fairly new to this myself, popping in and out, depending on work assignments ๐Ÿ™‚

unborn ruin
#

Same. I'm honestly stumped at this point, lol. I'm trying to back track at this point to see if maybe there was something I added or changed in settings that caused this. Everything on initial setup should be good, but I might have to start over and go step by step again.

obtuse bronze
#

also, check the log on your PC, and see if you can get a hint there. It is quite extensive in length though

#

because one never know if there might be a bug๐Ÿ›

unborn ruin
#

Very possible

unborn ruin
#

I think I finally fixed the issues

#

Looks like it was being caused by having too many specific colliders along with 2 or 3 assets that just didn't want to play nice with Unity.

#

Removed the problem assets and colliders, and now its loading!

#

No errors showing up in the console. Its a clean buld.

#

build*

obtuse bronze
#

Neat. I will remember that as a case issue for my future work. Although I'm very tedious when it comes to using physics layers, to avoid too many collisions progging, and normally disables colliders when I can, It is good to know, that it may cause crashes ๐Ÿ™‚

magic brook
#

anyone know the most performant way to light avatars? single light only, light probes only or just cranking up the environment lighting?

pallid gale
#

light probes

mossy python
#

hey! so i have my world done for a bit now and i wanted to set it public, i found something dating back to 2018
saying that you need to send a email to vrchat (email was given). But when i send an email i got a notification that
it wasnt send does anyone maybe know the new way to set your world public?

solemn tapir
mossy python
#

ooh alright alright thank you!

balmy vortex
#

i really need some help

#

when im baking lights it just stays on preparing bake then says in console lighting data incompatible with current version of unity

hearty ore
#

What exactly am I doing wrong here? Nothing else in the scene is occluder static except for these boxes that I have set to block camera visibility. Inside of these boxes, stuff is flickering even though there are no occluder static front faces that would be occluding it

#

another example. Nothing inside is being occlusion culled

#

Are the boxes not supposed to enclose the area I want to occlude?

#

Seems like I got the occlusion to work somewhat by setting the smallest hole as 0, but the flickering still happens. Smallest occluder is set as 4 which is the smallest size of one of the axis on one of the cubes

tall topaz
#

Its in the Object tab of the Occlusion window and options will appear whenever you select a GameObject with a MeshRenderer component. Generally speaking really big objects should never be occludees and small objects should never be occluders

hearty ore
tall topaz
#

I don't have any suggestions yet then, I recently started implementing it and i'm aware it can be quite flaky

hearty ore
#

either way, I still need help on this because my brain is melting

tall topaz
#

I reckon the occlusion I added will be missed up as it's rare Unity "just works", if I find something that is actually helpful i'll let you know ๐Ÿ˜‚

hearty ore
#

Yeah. My scene is really complex which is why I'm trying to do the cube strat

tall topaz
hearty ore
#

That's what I was thinking and might try

#

but shouldn't my way work either way

#

since it should only consider occluder static front faces

tall topaz
split wadi
hearty ore
#

I got my setup working good if I treat the cubes as thick walls

split wadi
elfin anvil
#

Oh you welcome :> ๐Ÿ‘

lilac saddle
#

Does light probes help performance?

untold apex
#

baked lighting helps performance. light probes are just there to apply baked lighting to non-static objects

lilac saddle
untold apex
#

well, if you have a huge warehouse with a lot of objects, there's other stuff you'll probably need to do to optimize

#

first would be to atlas materials as much as possible. this means grouping up multiple objects into one UV tile and shading them all under one material

#

second would be enabling GPU instancing on these materials

#

third would be occlusion culling

split wadi
# lilac saddle Does light probes help performance?

Light probes are a lot faster than realtime lights from what I've seen!!! but yea toadstorm gives a good list. If you can find a mesh combiner plugin for unity that helps too. I paid for a nice add on that does this but there's a free one on unity asset store simply called mesh combiner.

lilac saddle
#

and yeah the mesh combiner helped too

split wadi
#

nice!! I had to fiddle with occlusion culling a long time to get it working properly without bugs ;-;

vernal hare
#

anyone have good settings or recommendations on how to make a super optimized glass material for quest? by that i mean vrc mobile shaders if possible

solemn tapir
# lilac saddle and yeah the mesh combiner helped too

You can't compress generated meshes when you use mesh combiner. It's better to export the meshes as an FBX and combine them in blender. It's like one button click. Then just export it as a fbx into unity and you're able to compress the mesh again to at least medium.

lilac saddle
solemn tapir
# lilac saddle The amount of individual parts in the prefabs are ridiculous, it would take days...

What. No. You just export as fbx. Then drag it back in. Takes seconds..... Nothing has to be "rebuilt".

Regardless, my point is, that combining in unity isn't a good practice, it's easy for testing, prototyping, and stuff. But you're unable to compress generated meshes and they have other more technical downsides as well. Exporting and combining in blender is the right way and takes literally seconds. Unity has a FBX export tool that works well enough and it's as easy as export, open in blender, join the parts that need to be joined which is two button presses or a single menu press, export, swap out in unity. Done.

lilac saddle
#

Thereโ€™s no option

#

at least to โ€œexportโ€ or โ€œconvertโ€ anything I can see

#

Maybe itโ€™s an add-on? I have no idea

split wadi
lilac saddle
#

cough

lilac saddle
solemn tapir
hard saddle
#

what is unknown lol

lilac saddle
versed lichen
#

If they're baked, that shouldn't matter RuuuThunk

lilac saddle
#

Disabled all of them, brought FPS up by 30 and download size down by 50 mb

#

Maybe because theyโ€™re prefab lights?

versed lichen
#

Are you sure they were baked and not just set to "baked"

untold apex
#

baking lights wouldn't bring the download size down at all, if anything it would increase the size due to lightmaps. sounds like there's something particularly weird about the prefab lights you're using

lilac saddle
versed lichen
#

Can you post a screenshot of how your world looks post lightbake ?

lilac saddle
#

I donโ€™t currently have it up

versed lichen
#

Sweet, wanted to make sure just in case, but if you have lightmaps that should be fine. Still weirded out by your world size decreasing by disabling lights though

untold apex
#

there must have been some really heavy textures included in the light prefab he was using... hdr cubemaps or light textures or w/e

proper quartz
#

I have a simple script in my world to spawn a small static sphere whereever a ray is colliding with. everything works great but these sphere counts add up very quickly (potentially 10s of thousands)
would it be better to use particles instead of geometry to mark these points? is it possible to create these particles using one particles system and continue adding to it or do I need a separate particle system for each dot

#

the rest of the world is very optimized and this should be the only thing that otherwise affects performance

toxic stag
lilac saddle
#

hey what shaders are supported in quest vr chat but still do the same effect as the one i usually use (standard)

solemn tapir
# lilac saddle hey what shaders are supported in quest vr chat but still do the same effect as ...

Shaders for quest are under Vrchat>Mobile

StandardLite would be the comparable shader to standard.

Quest worlds are allowed to use unsupported shaders, but it's up to you to performance test and ensure everything works. For instance, you can use Poiyomi, standard, or a fairly wide range of shadertoy shaders, but there's simply no guarantee it will work right or well and is purely up to you to play around.

lilac saddle
#

i do have alot of quest friends and when they play they get around 40 - 60 fps

#

even with standard

#

but ill use standardlite

lilac saddle
#

k i tested standard lite and im not a fan of it, thanks for reccomending it tho!

solemn tapir
#

I didn't recommend anything. Breskd_Neck

lilac saddle
#

wrong word i guess ๐Ÿ’€

untold apex
#

using lite shaders might help, but you'll likely get more of a performance boost by reducing the number of materials you're using overall, GPU instancing if you have a lot of duplicates of the same object, and setting up occlusion culling if your world is large / has a lot of rooms

hardy nexus
#

Currently trying to improve FPS in my world, OCC is fully set up however when other areas are enabled (located very far away, OCC'd out), theyre still affecting performance rather drastically still. Trying to figure out whats causing it but also thinking, what if the area is turned off locally and when you TP to that area it enables it and disables the area behind, is that viable or dumb?

versed lichen
hardy nexus
#

currently trying to debug it in world with others

solemn tapir
#

Occlusion culling, frustum culling and LOD culling all only cull meshes. They do not disable any running logic, cameras, etc. In those areas.

You may also want to utilize the frame debugger as well as the overdraw visualization mode with the occlusion culling preview mode to ensure things are culling.

Do note there is also a performance hit to using occlusion culling, depending on your setup it may or may not hit the CPU hard.

If rooms are separated and spaced out (nothing too far from 0:0:0) it may be best to just use protected triggers to enable/disable areas entirely. Occlusion culling isn't really the best for when your rooms are all spaced out and teleporters are used to get between them.

versed lichen
hardy nexus
hardy nexus
oblique pivot
#

Does anyone know of a shader that is just unlit texture+vertex colours

#

Trying to find the cheapest shader I can atm and landed on standerd lite tho that has options I'm not using

elfin anvil
#

right click on the project window and create a new unlit shader.
open it on any editor.
after the cgprogram, remove:
#pragma multi_compile_fog
#include "UnityCG.cginc"

on the appdata structure, add:
fixed4 Vcolor : COLOR0;

on the v2f structure:
remove unity_fog_coords(1)
add fixed4 Vcolor : COLOR0;

on the vert program:
remove unity_transfer_fog(o,o.vertex);
add o.Vcolor = v.Vcolor; (before the return o; line)

on the frag program:
remove unity_apply_fog(i.fogcoord,col);
change the fixed4 col = tex2D(_MainTex, i.uv); line to fixed4 col = tex2D(_MainTex, i.uv) * i.Vcolor;

you can remove the comments if you want, it's not necessary but i always do it to clean up the code

lyric plover
#

is there a consensus on whether using a mesh vs using a unity terrain is better optimization wise? assuming that the landscape will be fairly small and the shader complexity is about the same

#

im assuming vrchat is forward rendered and iirc unity terrains have to be computed multiple times for depth and lighting which is pretty expensive

stray oak
lyric plover
#

ok good

#

because unity terrain tools are also miserable

#

the only trade off i can think of is for lods

stray oak
#

Can always use unity terrain tools if you want and then export to fbx and use the fbx

lyric plover
#

god no

stray oak
#

Yeah exactly

lyric plover
stray oak
#

Not in VRchat but all of my standalone projects use mesh terrain yeah

lyric plover
#

or vertex color

stray oak
#

Mm no I haven't gone that far, I just texture by height and by normals

#

In the shader

lyric plover
#

ah ok

tall topaz
#

For terrains my bet would be to just use sculpted meshes in Blender and export to Unity, and if you're still new to Unity you could experiment with Polybrush - it lets you paint textures onto any kind of object surface and that should be easier to use then setting up a custom shader and painting Vertex Color data in Blender.

This only applies if the scene is relatively small (around 100m X 2). Any bigger and you might have to start thinking about terrain mesh splitting and LODs, all the fun things.

snow hatch
#

What are some basic things I can do to start optimizing my world? The current download size is 106mb.

untold apex
#

crunch your textures

#

for file size, the biggest offender is almost always textures, so use crunch compression and possibly reduce the resolution of textures in your project that don't need to be super high.

topaz hinge
#

do it to your skybox too

snow hatch
topaz hinge
#

as low as you can get it without a huge visual loss

#

maps/masks can usually be pretty low

#

like normal maps

untold apex
#

yeah there's no minimum size really... it's all relative to what level of fidelity you need in your scene

#

for example if there's a texture on the ceiling that you know nobody is going to see up close, you can probably get away with a lower resolution

topaz hinge
#

i import everything as high res and let unity do the compressing, after i just play around with how low i can get it while also having it still be within my personal taste

#

it tells you what size your image is before and after compression so you can get a mild idea on the size reduction

snow hatch
#

Thanks. I compressed a lot of textures down from 2048 to 1024 and the download is now just over 80mb! About 25mb saved just because of that with almost no noticeable downgrade in looks.

snow hatch
#

Compressed more stuff and got it down to 72mb. More than happy.

pallid gale
hearty ore
#

Because of the fact that Poiyomi compiles into optimized versions of the uber shader based on selected properties, would it be reasonable to use in worlds?

So far, the pros on my end are that it supports Physically Based Rendering and can provide a standard-like look, and that it also supports matcaps with masks, so I'm using the matcap on fake windows and wanting as much as possible in the map to batch. It also seems like it supports some cheap specular highlights from spherical harmonics as my map only uses baked lighting.

The cons is that I don't know the cons. Idk if it's just not practical or if it goes through too many passes if this or that is present or if there's a better option. Pointers are really appreciated

hearty ore
lilac saddle
#

the unity video player makes my world 200mb and i literally am using ther normal shaders and stuff. i don't understand why'

elfin anvil
#

I think that depends more on the render texture it's using for the video other than shader, but it shouldn't be that much of a memory increase

lilac saddle
elfin anvil
#

Ah ok you mean a video directly on your world

#

Well now that depends on the format and compression

stable panther
#

Hey guys, I'm new with crunch compression/crunching, do you bake lighting then crunch or the other way around? ty for reply.

willow panther
#

Anyone know a way I could lower the amount of frames that are being taken away for a world with a bunch of real-time lights for quest? Also without baking lights (every time I tried it didnโ€™t wanna start baking) currently getting 20-25FPS

untold apex
willow panther
#

Every time I tried to bake it would either crash my unity or freeze it anyway

pallid gale
#

you're going to have to fix your baking so it works

hazy pier
# stable panther Hey guys, I'm new with crunch compression/crunching, do you bake lighting then c...

What is it that you'd like to crunch? Your textures, or your light map?
Lightmaps aren't usually crunch compressed. You can enable crunch compression, but (with the default settings) there isn't much of a difference in file size. When I want to make my lightmaps smaller (for quest), I usually just decrease their resolution on that platform.
For other textures, I usually keep them crunch compressed all the time. It shouldn't affect the quality of your final bake too much, though... it's an interesting thought, actually! Using 'raw' textures for bakes only.

stable panther
#

I already baked a lighting, then crunch compressed it. then this happened

hazy pier
#

If it remains, then we're probably looking at mismatched UVs instead..!

stable panther
#

I'll try checking it out later, ty for the help!

lilac saddle
#

hi im unable to upload world cause its over 50mb for quest is there anyway around this cause im compressing all textures to 512 from 2048 and its doing nothing to the mb count help plz

solemn tapir
lilac saddle
#

and then switch to quest

#

thats what i do

#

as for results?? go to the world called "Backrooms VRC"

lilac saddle
hazy pier
#

@lilac saddle Have you tried building and testing, to see if the error may be erraneous? Double-check that your platform is Windows, not Android

red vigil
#

how i prevent vrchat kicking me out of own world after loading in

vapid bane
#

Help. I've done literally everything I can think of

#

Sounds compressed, textures compressed, meshes compressed

pallid gale
vapid bane
#

I have that installed. Where do I see what's taking up file size

stray oak
idle yoke
#

how do you bake lights? preferably without changing the look of the lighting (dont care about real time lighting, it just makes my world hella laggy since i have a lot of lights)

pallid gale
idle yoke
#

I'm not really understanding it, it's talking about more realistic lighting that increases file size?
I'm just trying to get the world to not give lower end devices heavy frame drops

pallid gale
#

increasing frame rate would also be baked lighting

young wasp
#

I'm making a scanner sombre inspired world, uses my own unlit shader and a simple mesh renderer game object for the dots. Works fine, but on quest after having scanned for a few minutes the FPS starts to decrease when looking back at what you've done

#

Is there any better solutions of rendering lots of dots at a time?

#

Right now I'll be implementing a system that removes dots after a certain amount of time but leaving this here if anyone knows any methods ^^'

stray oak
#

Then it can render all of them together in one pass instead of one at a time

#

Unitys Frame Debugger tool can give you a nice breakdown of that kind of thing, and also suggest reasons why things aren't being rendered together when they should be

#

Other than that I would consider using a particle system instead of gameobjects, but I don't know how practical that would be for how your world works

young wasp
#

I kind of haven't been able to figure out how to manually spawn individual particles from an emitter in a certain location ^^' that'd work though

#

thanks for letting me know about the GPU instancing thing

glad nexus
#

Quick question

Does a big mirror tank more performance than a small mirror?

red vigil
#

is it difference if i use same objects over and over again or prefab instead

glad nexus
red vigil
#

thats actually handy

#

if i want to edit script

#

and will need some object in these objects

#

i would have to edit 5000 objects separate

glad nexus
#

yus

red vigil
#

but performance sided its same

glad nexus
#

Yeah, it's the same.

red vigil
#

thought it might load world faster

#

since it loads prefab by prefab rather than object spam

red vigil
#

whats the timeout time that if i exceed it during loading it will kick me out for vrchat not responding

red vigil
#

i need more world optimization 1 minute loading time in unity is still too long and kicks me out in vrchat

topaz hinge
#

probably would help to know what you're working with

#

optimizing worlds doesn't really change between them though

lilac saddle
#

is there a world size limt for PC?

solemn tapir
# lilac saddle is there a world size limt for PC?

The reality is, you'll be hard pressed to get the vast majority of people to download anything over 100-200mb. So while you can go over that, nobody is gonna go there unless it's some stupid awesome experience but even then.

unique pine
#

My world has a 500 megabyte download. I already did crunch compression at 50%, what more can I do to lessen that number?

#

this world really shouldnt be more than 150 gigs in comparison to similar worlds

untold apex
#

download VRWorldToolkit, that'll tell you where all your MB are going

#

99% of the time it's all textures

unique pine
#

noted

unique pine
untold apex
#

do a build & test, then check the VRWorldToolkit UI for the build report. that'll tell you what assets are taking up the most space

unique pine
#

huh, turns out my reflection probes werent actually compressing themselves

#

gotta love it

#

anyways world size is down at 197 from 519 now

pallid gale
#

nice-sized Improvement

stray oak
# unique pine this world really shouldnt be more than 150 gigs in comparison to similar worlds

Besides using compression I would also lower the resolution of textures that don't need to be high res. For example I usually find a few assets have giant 4k/8k normal maps even though it's a flat surface with literally no detail and the normal map is just a single color that's not even doing anything. Or the map is something like blurry waves that can be represented perfectly fine at 256x256 res instead of 4k or whatever

#

Some maps definitely need that high res level of detail but plenty don't, or the difference is negligible and worth the sacrifice

scenic adder
#

So is using a directional light that only affects the layers "player" and "playerlocal" a good way to handle player lighting?

It is what my world currently uses since I wanted the player's brightness to change when they swapped between the baked day and night modes.

#

The world seems to be fine with it, but since performance loss would scale linearly with the amount of players I haven't yet seen if it becomes a problem at high player counts.

urban bane
untold apex
#

it's very handy

turbid hinge
#

I'm trying to upload a world I made to be compatible for Quest but when I try to switch build target to android I get the error "androidplayer is disabled" is there a reason for that or how can I enable it?

pallid gale
#

did you install the Android build when you installed Unity

stoic fable
#

is it worth it sacrificing 30~MB for optimization? After setting all my trees/bushes/whatever to static, the game is locked at 90fps but the map weighs slightly over 40MB now (15 before)

scenic adder
pallid gale
#

I'd say that's a fair trade-off

young wasp
#

I've modeled my world entirely as 1 main mesh, and it uses a non-convex mesh collider for collisions (it's required for my use case). Is it a good idea to split up certain parts that can be convex as seperate convex mesh colliders?

scenic adder
rustic osprey
#

Should avatar pedestals be set to continuous or manual synchronization for its udon behavior?

#

been having trouble with too many pedestals and i am splitting them up but still getting a weird bug of if you show each box-set of them too fast you still get a long "load" time of none of your own avatars, other people, and pedestals loading for a bit until it finishes up

#

Is there a way to get a bunch of avatar pedestals to load slowly and gracefully?

#

I already split them up and still getting that issue, i have 160 or so in total so far

stray oak
rustic osprey
#

well i feel i have a unique problem no other avatar worlds with large number of pedestals have, and im wondering if its a weird setting somewhere i have set thats causing it

stray oak
#

Hm I'm not sure what you mean then

rustic osprey
#

well its doing this, where if i load too many or before where it all loaded in at once, itd halt all loading of new avatars and even all favorite and my own avatars and lots of other online features until its done

#

though at the moment, i think i mitigated it slightly where if someone turns on a batch of them (i have 4 buttons) and not immediatly try to open them all and wait like 20 seconds it works

#

personally i dont think udon worlds like opening 162 avatars at once

#

where as sdk2 didnt seem to mind

solemn tapir
#

You should never load that many anyways. Just load groups. Or use area triggers to only load the ones closest to a user as they walk around. All or nothing when you're doing a fuck ton of pedestals is just bad design.

rustic osprey
#

well thats why im segmenting it, right now i split it into 4 groups

#

did that just today

#

with my layout, im not really sure how else to reorganize 162 pedestals at the moment. kinda wish vrc just had a prefab of just putting a single id and having it show all my public in a list or something but thatd be too easy

pallid gale
rustic osprey
#

yeah i tried that, but you have to manually take a picture and input one for EVERY avatar

#

it doesnt auto load it from the api

#

and i aint doing that 160+ times

#

cool prefab if you have a few avatars but nightmare if you have alot

untold apex
young wasp
#

which in turn visualize the environment

untold apex
#

is your world mesh modeled as a single object? or you're only talking about colliders?

young wasp
#

mostly a single object- the world is not visible, the colliders more or less become whats visible as particles get created along raycast hits

untold apex
#

ah so this is some unusual special effects thing

young wasp
#

yeah ~

untold apex
#

personally i would break things up into multiple convex hulls for simplicity and only use mesh colliders in places where the object can't be described by simple convex primitives

#

boxes, cylinders, etc

young wasp
#

this is what I've been doing ^^' nice to get some more confirmation though

#

thankyou ))

rough crag
#

I am making a castle, and I was wondering: should I split the mesh into parts so the world can unload parts of it that arent in view, or does that increase the number of draw calls and make it not worth it?

versed lichen
rough crag
#

What is "massive" in vrchat terms? The mockup of the whole thing is about 250k (this includes some things that would definitely be split off though)

pallid gale
#

depends are you targeting PC or Quest

rough crag
#

PC, making it work for quest as well would be nice, but I probably wont be able to

versed lichen
#

250k for PC is pretty low

rough crag
#

Good to hear, I expected it to be a few times higher once all the set dressing is in place (depending on what I do with it). I'm sure that what I make will be fine for PC, but I'm always interested in learning the fundamentals of what makes good performance just to make a habit of making optimal content. (and thanks for the help btw!)

magic brook
#

would like to know which would be better for tiling textures, multiple materials? or shader lerping between textures using a mask texture?

versed lichen
#

Shader catYes

pallid gale
stoic fable
#

How can I make a mirror only reflect stuff in a certain radius? The world runs at 90+ fps normally, but when I look at the mirror it drops to 40

pallid gale
stoic fable
#

thank you

pallid gale
magic brook
#

would it be possible to attach pickup object scripts to bones and have one big skinned mesh for all the little do-dads in a world? or should i stick with having individual objects

solemn tapir
magic brook
#

things would be pretty low detail, just like balls, pillows, toothbrush ect. might experiment with it!

regal sequoia
# versed lichen Depends how high poly the pieces are tbh, not worth doing if it's not massive, 3...

thats just wrong. 30 Drawcalls makes a massive difference. notice how much of a difference there is if an avatar uses 30 matierals vs 1? the difference can be gigabytes of Video memory. depending on the size of the textures obviously. if a world takes up 30-50% of a high end users Vram budget. then you can expect low/mid ranges users to be hit with minimum of 50% obviously. this all depends on if it's a static castle that do not change. as in no light change etc. objects not moving around or materials changing then the difference is minimal

#

the only reason why it wouldn't matter to much if it was alot of the same materials etc since unity would automaticly batch everything. that it considers similar or same. so if you had 10 x objects with 10 materials each. thats 100 drawcalls. but if they are the same materials across all 10 it can be reduced alot. i dont know exact amount but more then half. so instead of 100 drawcalls that would end up being 50. or lower

regal sequoia
solemn tapir
#

That was from nearly a week ago....

regal sequoia
#

still matters.

rough crag
rough crag
regal sequoia
#

eh 8k is fine. since its only one texture that takes up 64 mb.

#

when it comes to Textures and materials etc. if avatars keep it max at 4k. no point in beyond. unless you need to combine alot of textures go 8k. and in your case i would highly recommend 8k. since its fine if a world uses like 512 mb of vram of even 1024 mb

#

what you generally need to be worried about is how many lights sources, dynamic or static. since each light is another drawcall. etc.

pallid gale
#

just baked all of your lighting and you'll be fine

regal sequoia
#

yea.

#

baked light is the best for worlds.

#

having one or two dynamic lights is fine.

#

i often see so many worlds take up 4-5 GB of vram. which is so much.

rough crag
#

Yeah, I'd planned on that, Im not familiar with what it means, technically speaking, but I planned to keep any dynamic light to a minimum

regal sequoia
#

and majority of avatars are typically in between 64-256 mb each

#

just keep it to max 2 i would say.

pallid gale
#

honestly if you do your map right you won't need any Dynamic lights

rough crag
#

2 total, or 2 that would be loaded at once? Or are they always loaded?

regal sequoia
#

and make a button for people to switch between dynamic and or baked.

#

2 loaded.

#

but that said. yea no real need for it.

pallid gale
#

technically different light types have different costs as far as draw calls

regal sequoia
#

unless you want a really cool day/night cycle.

rough crag
#

I wanted people to still be able to cast shadows outside in the moonlight, thats a dynamic light though, right?

regal sequoia
#

does not need to be no

rough crag
#

oh wait for real??

regal sequoia
#

you can still cast light with baked.

rough crag
#

Man I have so much to learn...

regal sequoia
#

all through

#

that is abit more advanced.

#

but if you keep the moonlight as dynamic light that shouldn't hurt to much.

pallid gale
#

you can just make a toggle for the light for the shadows for the players

regal sequoia
#

yep.

#

just remember Shadows can be cast in different resolutions.

rough crag
#

Oh for sure

regal sequoia
#

i would say shadows keep them at max 2k. for recasts.

#

4k and 8k shadows are hella expensive

rough crag
#

Yeah, I think people overestimate the resolution that they're seeing things at in VR, lower res stuff still looks fine if its used well

regal sequoia
#

2k looks more then fine in Vr

#

for shadows.

#

people tend to overestimate the budget they have for worlds in vrc.

#

you dont really have a massive budget.

rough crag
#

Yeah for sure, I really want to get educated on the fundamentals of optimization and how to best use what I have to work with

pallid gale
#

so if you can find clever texture reuse for your map do it

regal sequoia
#

like for instance i would keep any world to be max around i dont know 96 drawcalls. because every increase you do in a world means less resources for avatars.

#

yea 100% lol

rough crag
#

Yeah, I've been doing that a lot, trying to find places where my UVs can overlap to do more with less

regal sequoia
#

texture reuse is not a bad thing

pallid gale
#

if you're trying a big castle like that trim sheets are helpful concept to learn

rough crag
#

Do either of you know where I could read/watch more about baking lighting and what it means technically? When I first heard baked lighting I was still thinking about it being baked directly into the diffuse map lmao

regal sequoia
rough crag
#

Cool, thanks

pallid gale
#

light baking doesn't occur in blender for vrchat worlds but still good to know how blender baking works

regal sequoia
#

100% but you can still do AO maps. which generally makes a nice effect to

rough crag
#

Oh yeah, I've baked things in blender before, but its mostly normal maps or procedural textures to diffuse

pallid gale
#

an example of trim sheets on a castle like structure

regal sequoia
#

oof ๐Ÿ˜„

rough crag
#

Settle down bot!

#

Ok, I think trim sheets were exactly what I was looking for even before this conversation, very excited

pallid gale
#

but yeah you don't necessarily need a huge amount of textures to make a decent Castle

regal sequoia
#

you can do all the castle in one atlas. but if its to hard its not bad to seperate it into 2

rough crag
#

Thats what I was thinking too, espectially since plenty of the textures never get close to the players (rooves ceilings etc) so they can be lower res

regal sequoia
#

they can. but you can solve that with Mip mapping. so further away textures are not using as much.

pallid gale
versed lichen
regal sequoia
#

plus. 30 drawcalls will make a noticeable difference. depending on hardware. but most people will be heavily affected.

rough crag
regal sequoia
#

don't believe me. try and do two different objects one that causes 30 calls. while another that causes one. in vr obviously. in desktop you wont be to affected

#

ontop of that the idea of optimization is to allocate more resources to allow more players in a world.

pallid gale
regal sequoia
#

that's primarily the reason why so many worlds drain your frames. it has to many drawcalls

versed lichen
regal sequoia
pallid gale
#

and wasn't the original question to separate the pieces for occlusion purposes wouldn't static batching take care of the draw called Problem?

agile hawk
#

Memory usage will most likely not differ much. The biggest issue for a lot of materials (with the same texture) with memory usage is material settings, texture bloat, and void space. Bloat meaning needed info for computers to be able to understand what the shader is about and void space is lessened by smart UV mapping and (again, as before, trim sheets). If they don't use the same texture then mostly it'll just be the texture file size that fills the memory.

As for frames; the best for a big castle that has an interior is to separate it and use occlusion culling or unity's standard frustum culling with either a static baking to keep draw calls down through batching or GPU instancing.

regal sequoia
versed lichen
regal sequoia
pallid gale
#

and we are talking about the hero asset of the map

agile hawk
#

GPU instancing is better in some instances than static batching which is another thing to consider.

pallid gale
#

yeah GPU instancing would probably work pretty well on the modular pieces if they're low poly enough

regal sequoia
#

for a world keep it below 50 drawcalls

versed lichen
rough crag
#

I appreciate the info folks

versed lichen
#

Good luck !

pallid gale
regal sequoia
#

often i see to many worlds drop me to 45 fps. with just my self.

pallid gale
#

and your Castle will probably go fine if it's tiling textures and not trying to uniquely texture the whole thing

regal sequoia
rough crag
#

Im sure what will matter most is identifying whatever my bottleneck is (once I get further along)and spending my available time addressing optimizing that

versed lichen
#

Make sure the world is actually interesting ! Cool world > performant world

pallid gale
#

of course I just mentioned the trim sheet and tiling texture stuff as might not be obvious to folks who don't have a lot of experience making environment art

versed lichen
#

Optimization comes second

agile hawk
#

Honestly. I would say it mostly devolves to what you need it for. But, I'd say try doing trim sheets + 1-3 materials.

regal sequoia
#

eh what lol.

#

optimization comes first

rough crag
pallid gale
versed lichen
regal sequoia
pallid gale
#

I guess it would be better phrase try to be interesting and be the most optimized well keeping the concept

regal sequoia
#

with good looking

rough crag
#

I'm approaching this from a perspective of first determining what the world should be, for player experience, and then determining how to make that performative

versed lichen
#

Go to any of Fins's worlds, some of the most gorgeous and complex, people love them, millions of visits, 500-1000 drawcalls in a lot of those places

#

Yes, always keep performance in mind, and work towards making it as nice as it can be, but if the experience is compelling, people won't care

#

It's a balance

pallid gale
#

do I suppose also a important question with some of this is if the map is PC only

#

like I could see being completely hyper obsessive about drawcalls if you're trying for the quest

rough crag
#

Probably? I'm PC and I'm making this world first and foremost to be the sort of castle that I want to hang out in lol

regal sequoia
#

ehm. suure if you want 30 fps max alone lol.

pallid gale
#

I sincerely doubt it would be that terrible considering castles provide lots of occlusion opportunities

rough crag
#

Its going to have a few places where you can see lots of the castle/some surrounding terrain all at once which might be a bit taxing

regal sequoia
versed lichen
regal sequoia
pallid gale
agile hawk
#

I feel like you're challenging someone rain

versed lichen
#

Oh, I'm interested in what you think is a much better world !

rough crag
#

I'm also of the opinion that good art direction beats highpoly/textures any day. So looking cool isn't at odds with being performative for me at all.

pallid gale
agile hawk
#

You challenged them from the future, impressive.

regal sequoia
pallid gale
#

like breath of the wild looks pretty nice and it's running on Hardware way less powerful than the average vrchat PC

rough crag
#

Some of the remakes of games that focus on "realism" over interesting lighting and art direction lose a bit of visual interest because they set their sights on the wrong goal imo

agile hawk
#

That's one of the issues with unreal engine ngl. A lot of games that are made would work better in toonish or more unrealistic lighting

pallid gale
#

now I'm mildly curious if you could fit like the breath of the wild Temple of Time in one big texture Atlas as it's mostly some tiling textures and trim sheets

pallid gale
#

I guess that would depend on your max texture resolution as the breath of the wild textures aren't terribly rez

rough crag
#

Yeah some of the lighting n that Distric: Roboto world you linked is really pretty

regal sequoia
pallid gale
#

like doing some quick Googling apparently 1024 is like the max size of the textures in breath of the Wild

regal sequoia
#

by DrMorro

#

it's complex and insanely big. its prob one of my favorite. but i agree fin makes good worlds

versed lichen
#

Yeah I'm a fan of that world too ! Talked to the creator before, the world is beautiful, although very static, so it's a bit like comparing apple to oranges

#

Occlusion is doing a lot of the legwork

rough crag
#

Regarding "static" what does this refer to? Models that dont animate or change?

versed lichen
#

But if you're thinking of performance, I'm not sure that's the best argument, given that DrMorro didn't even add lightprobes in the world until recently because he thought it would be bad for performance, so who knows what else he did/didn't do

pallid gale
#

like for example if you know something is static you can just bake the lighting into a texture because it's never going to change

regal sequoia
versed lichen
#

It's just hard to take most of what you say at face value given you've not made a world in vrchat, where compromise is key, a lot of creators knowingly make the choice to trade performance for looks/compelling experiences. Not everything needs to be extremely optimized

#

No one will make a interesting world with 50 drawcalls, hell, making a 50 drawcall world to begin with would be challenging

regal sequoia
#

been more busy with avatars

versed lichen
#

We're all there with you KEK

pallid gale
#

question would that be 50 draw calls over the whole map or 50 draw calls loaded in any given time

rough crag
#

Yeah ^ same. I put this project down a month or two ago and just picked it up again

regal sequoia
#

i love doing vr devolpment through.

pallid gale
#

honestly I probably need to try my hand at making a vrchat map I just need to actually figure out what I would want to make

rough crag
#

I've been learning c# for career reasons, but I also hope to get into being able to use it in unity to do cool stuff

versed lichen
#

Same thing with Pop Escape. And they're some of the most compelling experience the platform has to offer

pallid gale
#

must be quite annoying conundrum how much of the player base on the quest2 which doesn't give you many draw calls play with

rough crag
#

Yeah I was also wondering if it is possible to make a world that has a pc version and a quest version that would load for those players?

regal sequoia
#

you need to keep it seperate. due to quest 2 limits

regal sequoia
regal sequoia
rough crag
#

Aww dang, i was hoping a pc and a quest player could be in the same world, but only loading their respective version of it

agile hawk
#

I mean, tbf, you can almost always optimize something more. But, the problem comes in if quality is lost. Or if the thing you're trying to optimize causes less optimization somewhere else.

An example is that you could make each zone in a map in one shader and use shader logic as well as UV zones to keep the same quality but use less draw calls, but, you'd use more GPU resources to do so.

pallid gale
regal sequoia
#

then you need to stay in limits of quest 2

agile hawk
#

You can have two different maps all together for quest and pc

#

You could make a map that just has the poop emoji for PC and an amazing mini golf course for quest if you'd like.

rough crag
pallid gale
#

with the caveat that your concept could actually fit on a quest 2 like no you're not going to get a huge open-world Forest map on the quest

#

and mostly I picked a forest as an example because that tends to induce lots of alpha overdraw

versed lichen
pallid gale
#

like you probably couldn't get organism to fit on the quest as an example

regal sequoia
#

that you might be able to. but in terms of how limitting it will take a very long time.

rough crag
pallid gale
regal sequoia
#

ikr

regal sequoia
pallid gale
#

cool tricks aren't going to get you like that O'Neill cylinder map on the quest as one of its main points as you can drive around the entirety of the O'Neill cylinder all 32 kilometers of it

versed lichen
#

Tricks can only get you so far sweat

regal sequoia
#

nope. but can make something unigue

pallid gale
#

like if you were just having a chill house in a O'Neill cylinder you could probably do that on the quest as you could turn the cylinder into a Skybox

#

but that's a very different thing from drive around the entirety of it

fair agate
#

you can absolutely have two versions of a world that quest and pc coexist in. Easy Quest Switch facilitates this. just keep same hierarchy.

#

i do this and swap out shaders/lods

regal sequoia
pallid gale
#

Furality apparently just went with swap everything to Quest shaders and lower lod settings for handling the quest maps on the same project

fair agate
#

i prefer a consistent experience, but will do things like change a mesh particle to a billboard for quest, remove normals, etc

versed lichen
pallid gale
#

isn't the whole used to different Unity project version going to easily result in hierarchy desync

fair agate
#

back when we only had 50mb for Quest, you hsd to make a lot more compromises. 100mb is very doable now.

fair agate
#

ruuubick i havent even started thinking about making that quest yet

pallid gale
fair agate
#

dog park was brutal at 50mb, realistic terrain and foliage is tough

versed lichen
#

I suggested we bump it a while ago, everyone went "Yeah that makes sense" and we made it happen in a couple of days teehee

fair agate
#

and everyone cheered, literally

versed lichen
#

I made sure to include as many screenshots of world creators tearing their hair out to save those few kilobytes just to be below 50mb as possible

regal sequoia
#

lets see this world you two made haha

pallid gale
versed lichen
#

Yeah, there's always 30% of that 50mb that is just inherent to unity if you try to make anything meaningful

solemn tapir
pallid gale
#

that would look bad

#

like worse than a PS1 game

solemn tapir
#

Nah. Depends on the world. Adrift is only ambient

pallid gale
#

honestly given the neon look a proper light bake would have made it look a lot nicer quickly Googling it

solemn tapir
#

Lmao. It was just a joke, but there are no lights to bake. All effects are shader driven.

pallid gale
#

fair but most Maps aren't Shader toys

solemn tapir
#

Was just a joke...

pallid gale
#

yes but I don't want the Newbie mapmakers taking the suggestion seriously and skipping out on doing proper lighting

solemn tapir
#

...

#

People have to make a wide range of choices artistically to achieve the effect, look, style, whatever of the world they're trying to create. Choices have to be made towards optimization and space saving, especially when it's for quest. But optimization shouldn't be entirely at the expense of artistic expression or unique experiences. Properly setup ambient only lighting actually works great for many types of quest worlds and looks totally fine. It saves a ton of file size and works for those who don't have good enough computers for a decent bake. PC worlds can get away with it too but course it looks needlessly flat but reflections from properly setup reflection probes can greatly help that. My statement was a joke. Because why or when someone would do this is up to them purely, but that doesn't mean it's inherently a bad choice or shouldn't be mentioned. Infact I see it as the opposite. Talking about random methods to achieve the style, file size, or whatever limitations we've encountered is important.

versed lichen
#

Your first mistake was making a joke Merc

solemn tapir
#

Suppose so lol q.q

versed lichen
#

Can't believe you've done this

pallid gale
#

like heck even the PS1 could do more intriguing lighting than just ambient only https://twitter.com/Dreamboum/status/1185983405365837824?s=20&t=4ee4G3dbmDPuFGvsx7ubwA

On top of the architectural prowess of Vagrant Story in delivering a cohesive art design, I wouldn't even begin to fathom how they were able to simulate lighting on the PS1 not only on the environments but the character models too ๐Ÿ˜ณ๐Ÿ˜ณ๐Ÿ˜ณ

Likes

156

solemn tapir
#

Ok

regal sequoia
versed lichen
#

Thanks !

#

Some moments hit 300+ drawcalls, but haven't had anyone complain yet teehee

pallid gale
#

well how would they know how many draw calls it would be if they're not the mapmaker to complain about too many draw calls

regal sequoia
versed lichen
#

Hence leeway you have in terms of optimization

regal sequoia
#

it really depends. like 300 calls is alot obviously. but it also highly depends on hardware.

versed lichen
#

It also depends what's grabbing your attention at that moment catYes

pallid gale
regal sequoia
fallow drum
#

whops sorry for the ping, forgot to uncheck the @ bit

rough crag
#

So this might be more of a blender question than anything else, but I figure some folks here might know. I'm baking textures in substance painter, and they look great there, but in blender, the normals look WAY screwy. has anyone experienced this/ know what to do about it?

#

The crenelations at the top of the tower are weirdly dark in a way they shouldnt be

pallid gale
#

question how do they look in unity itself as that's the important part

rough crag
#

Yeah, Im about to check that, hopefully its fine there, It's just wierd to work on it in blender not knowing if I'll get a cohesive appearance in unity

rough crag
#

Ah damn, looks wierd in unity too ๐Ÿ˜ฆ

pallid gale
#

did you accidentally export DirectX normal Maps?

rough crag
#

I dont think so but im going to check

#

nope, open GL for the crenelation

#

Hmm, mightve had a bad normal setting on njob

rough crag
#

Yeah problem solved, I was exporting from substance painter with the wrong output template, its all good now

pallid gale
#

glad it's working now