VRChat Baked Lighting Tutorial
This guide is for VRChat world creators who have never baked lighting before, or who have baked lighting but still feel unsure what Unity is actually doing. Use the video for the Unity demonstration. The notes below turn it into a checklist for modern VRChat world projects.
Use baked lighting for static world geometry first, then add probes and platform checks before publishing.
- Back up the scene and mark only stable world geometry as lightmap-ready.
- Set static environment lights to baked where they do not need to change at runtime.
- Add light probes and reflection probes so avatars and dynamic objects do not look disconnected.
VRChat worlds benefit heavily from baked lighting because it moves expensive lighting work out of runtime. This is especially important for Android and Quest worlds, where VRChat recommends extensive use of baked lighting and light probes.
Playlist Companion
Creator: akalink
Watch on YouTube: https://www.youtube.com/watch?v=dKgUJccjWRU
Good Fit
Use this when baked lighting needs to carry a VRChat world without adding runtime lights.
| Situation | Baked lighting helps because |
|---|---|
| Static rooms, props, walls, and floors | Lighting can be stored in lightmaps instead of recalculated at runtime. |
| Android or Quest world support | Baked lighting is usually much cheaper than dynamic lighting. |
| Social spaces with many avatars | Runtime budget can be saved for players, mirrors, audio, and interaction systems. |
| Stylized worlds | Baked lighting can lock in a clear art direction without heavy real-time effects. |
| Performance cleanup | It reduces the need for overlapping dynamic lights and expensive real-time shadows. |
Before You Start
- Confirm you are using the supported VRChat Unity version for the project.
- Open the project through VRChat Creator Companion when possible.
- Check for red Console errors before assuming the lighting step is the problem.
- Make a backup or duplicate scene before changing lighting settings.
- Save the scene before baking so lighting data is tied to the correct scene state.
- Decide which objects are static environment geometry and which objects need to move or update.
What Baked Lighting Means
Baked lighting means Unity calculates lighting in the editor and stores the result as lighting data, usually including lightmaps and probe data. At runtime, the world loads that baked result instead of recalculating all of the lighting every frame.
That makes baked lighting ideal for:
- walls
- floors
- ceilings
- static props
- architectural details
- fixed decorative lights
- non-moving environment shadows
It is not ideal for lights that need to change color, move, flash, or react dynamically during gameplay.
Baked Lighting Checklist
| Step | What to check |
|---|---|
| Static geometry | Mark only stable environment meshes as contributing to baked lighting. |
| Light mode | Use baked lights for fixed environment lighting. |
| Light probes | Place probes in walkable and avatar-visible areas so dynamic objects receive sampled lighting. |
| Reflection probes | Add coverage where shiny materials, mirrors, or reflective props need sensible reflections. |
| Lightmap resolution | Start modest, then increase only where the result needs sharper shadows or detail. |
| Test build | Check in VRChat, not only in Unity's Scene view. |
Follow-Along Checklist
- Confirm the scene has a
VRC Scene Descriptorwhen the workflow affects uploadable world content. - Confirm the visible environment objects that should receive lightmaps are static enough for baking.
- Place light probes around player-height areas, doorways, stairs, and spots where avatars gather.
- Retest performance on the target platform, especially when the world supports Android or Quest.
Common Baked Lighting Problems
The world looks good in Unity but too dark or too bright in VRChat.
Check exposure, skybox or ambient lighting, reflection probes, post-processing, and whether the lighting data was baked and saved before upload.
Avatars look disconnected from the room lighting.
Add or improve light probes around player-height spaces. Static lightmaps do not directly light moving avatars the same way probes can.
Some objects do not receive baked lighting.
Check whether the object is static, whether its renderer can contribute to global illumination, whether it has usable lightmap UVs, and whether the lighting bake completed.
The bake takes a long time or creates huge data.
Reduce lightmap resolution, split the test into smaller areas, lower unnecessary detail, and avoid making every tiny prop part of the high-resolution baked lighting pass.
Help! The video was made for an older SDK or Unity version.
Older tutorial UI labels can drift. Use the current SDK panels, Builder messages, and a private test upload before relying on the setup.
Help! The result works in Unity but not in VRChat.
Test in a built VRChat instance. Runtime permissions, networking, platform restrictions, and SDK validation can change behavior that looks fine in the editor.
Help! I want to apply this to a production project.
Rebuild it in a small copy first, then move only the confirmed pieces into the production avatar or world. That keeps tutorial experiments from becoming permanent project clutter.
Official References
Related Docs
- World Creation Guide
- World Optimization Checklist
- World Upload Troubleshooting Checklist
- VRChat Prefabs
- VRChat Documentation
Topics: lighting