You had a friend visit and they said it felt a bit heavy. You have no idea what to fix.
Deleting furniture to cut polygons often changes little. Causes of heaviness come in an order, and starting anywhere but the effective end wastes effort.
This article adjusts mirrors, shadows, and LOD one at a time in the same room and watches the Stats numbers drop.

What You'll Learn
- The order in which causes of heaviness matter
- The three Stats numbers to watch
- Practical adjustments for mirrors, shadows, and LOD
- How to get lighter while keeping the look
Start from a room with lighting and furniture.
Heavy things come in an order
For world rendering specifically, the order of what matters is fairly settled.

| Rank | Cause | Why it's heavy |
|---|---|---|
| 1 | Mirrors | They draw the room a second time while visible |
| 2 | Realtime shadows | Each light adds a shadow-rendering pass |
| 3 | Material types | A separate material per piece of furniture prevents batching |
| 4 | Overlapping transparency | Glass, curtains, overlapping particles |
| 5 | Polygon count | When you line up high-detail furniture |
The surprise is that polygon count comes last. A large number stands out and looks like the cause, and the four above it almost always matter more.
Adjust in that order too. Mirrors → shadows → materials → transparency → rebuilding furniture. Work down and stop where it takes effect.
Three numbers to watch in Stats
Make the numbers visible so you can compare before and after.
Press the Stats button at the top right of the Scene view or the Game view. A small panel appears.

Plenty are listed, and three are enough for a beginner.
| Field | Meaning | Target |
|---|---|---|
| Batches | How many times drawing was batched. Lower is better | Compare the change |
| SetPass calls | How many times the material switched. Lower is better | Compare the change |
| Tris | Triangle count — the polygon count | Look at it last |
The important part is watching the change, not the absolute value. There's no standard for "Batches under N is fine." If the number drops when you change a setting, that adjustment worked.

When comparing, measure from the same place, facing the same direction. Scene view viewpoint changes move the numbers, so fix on the Game view or change only settings without moving the viewpoint.
Hands-On: Adjust mirrors, shadows, and LOD in turn
Work down, changing one thing at a time and watching the numbers.
1. Narrow the mirrors
Biggest effect. Start here.

Mirrors are heavy because they aren't photographs — they run the game a second time behind the scenes. While a player looks at a mirror, Unity draws "the main image" and "the image in the mirror" separately. In VR there's each eye too, so the load is larger than you'd guess.
Three things to do.
- Off by default: disable the mirror GameObject initially and reveal it with toggling with a button. This is the biggest win
- Narrow the reflected layers: in VRC Mirror Reflection's Reflect Layers, remove Particle, UI, Pickup, and anything else you don't need. Try a "people only" mirror with just
PlayerandMirrorReflectionfirst - At most one at a time: don't leave several mirrors around the room all showing
Watch Stats while switching between "mirror off," "people only," and "room too." The numbers change clearly.
For worlds that also ship to Quest or phones, not placing mirrors, or always leaving them off, is the practical choice.
2. Reduce shadows
Realtime shadows come next.

A shadow-casting light builds "the view from the light" before drawing the main image. A Point Light's shadow needs six directions, so making every indoor light cast realtime shadows rivals a mirror in weight.
The standard practice for indoor worlds:
- Bake constantly-lit lights: set ceiling lights and lamps to Baked (lighting and baking)
- Moving objects use Light Probes: props and avatars pick up brightness from probes (Light Probes and Reflection Probes)
- One realtime light, one shadow at most: when you really want a moving shadow, keep one Directional Light through a window
- Fake the contact shadow: a thin dark panel under furniture reads convincingly enough
Set a Point Light's Shadow Type to No Shadows and compare Stats. The difference in numbers should exceed the difference in appearance.
3. Unify identical furniture
Third is material types.

Placing furniture with a separate material each raises Batches and SetPass calls even with few polygons, because Unity pays a cost each time it "switches material."
The response is simple.
- Share one material across identical-looking objects (materials and textures)
- Mark static objects Static: enabling Static at the top right of the Inspector lets Unity batch the drawing
What to mark Static is the same as for baking: floors, walls, ceilings, furniture. Not things that move.
4. Simplify distant objects (LOD)
LOD (Level of Detail) swaps distant objects for simpler shapes.

A plant seen up close needs detailed leaves; one only visible from across the room does fine as a rough shape. Nobody can tell.
The setup:
- Add a LOD Group to the target object
- Assign the high-detail model to LOD 0 and a simple model to LOD 1
- Adjust the switching distance with the slider

The switching criterion isn't distance itself but how much of the screen it occupies. Once it recedes and looks small, it switches to the simpler version.
That said, LOD's effect is limited in small rooms, since there isn't much distance to begin with. It earns its keep in large gardens and halls. Preparing separate low-detail models takes effort too, so it ranks below mirrors and shadows.
5. Confirm what changed

Return to the viewpoint you measured first and compare Stats. Lower numbers mean success.
On top of that, always confirm whether the look is acceptable. Throwing away all the atmosphere to get lighter defeats the purpose. Most worlds get plenty light by "reveal mirrors with a switch" and "bake the shadows" alone.
Finally, confirm in actual VRChat. Load differs between the Unity editor and the real device.
Common Pitfalls
- The numbers don't change → You may not be comparing from the same viewpoint. Fix on the Game view to measure
- It's heavy even with the mirror off → Shadows or materials are the cause. Move to the next item
- Batches won't drop → Check whether identical-looking objects use separate materials, and whether Static is set
- LOD doesn't switch → Check the switching distance setting. It won't switch until you're far enough from the camera
Bonus: Good to Know Up Front
- Transparency gets heavier as it overlaps: Glass, curtains, and particles overlapping in view repaint the same pixels repeatedly. Don't line up too many see-through objects
- Match texture size to displayed size: A distant prop doesn't need a 2048 texture. Lowering Max Size in Import settings alone cuts size and memory

- Occlusion Culling is an option too: It excludes objects hidden behind walls from drawing. The effect is large, and setup and baking take effort. Consider it for large worlds with several rooms

- Post Processing is expensive: It applies effects across the whole screen, improving the look and adding weight. Avoid it especially on Quest
- Quest and phones have a separate budget: Comfortable on PC doesn't get you in there. Covered in gathering in one room from PC and Android
Summary
Making things lighter has an order.
- Mirrors are heaviest. Off by default, with narrowed reflected layers
- Then realtime shadows. Bake the constantly-lit ones, use probes for moving objects
- Unify materials and mark static objects Static
- Look at polygon count only after those three are sorted
The question to ask before acting is: "Is a mirror in the view right now?" If it is, that's your first adjustment.
Once rendering settles, review moving props in reducing physics load, or check the script side in optimizing Udon and networking.