Lightmap Groups
Bakery Lightmap Groups are one of the main tools for controlling how your world is split, packed, and baked. For VRChat world creators, they are most useful when you need better control over atlas count, rebake scope, shader compatibility boundaries, or which lights affect which areas.
A Lightmap Group is Bakery's collection of objects that share one lightmap. Group settings control how Bakery packs objects, which lights affect them, whether the result is texture-based or vertex-based, how resolution is determined, and whether the group overrides the global directional mode.
What Bakery Does Automatically
By default, Bakery already packs static objects into multiple lightmap groups and atlases automatically. You do not need to manually assign groups just to make Bakery work.
That matters for VRChat workflow. Manual Lightmap Groups are not a required baseline step. They are a control tool for specific goals like:
- Keeping hero areas on predictable atlases
- Reducing rebake scope during iteration
- Separating shader compatibility cases
- Controlling which lights affect which spaces
- Allocating memory differently across important and unimportant areas
Use manual groups when you want better control, not just because the feature exists.
What Manual Groups Are Good For in VRChat
Manual groups are especially useful when the world has different quality zones or when iteration time matters.
Common VRChat uses:
- Split a hero room, social hub, club floor, mirror corner, or featured vista from lower-priority areas.
- Keep a street, alley, lounge, or stage on a predictable atlas so changes stay localized.
- Reduce rebake scope when you are repeatedly tuning one important area.
- Separate SH, MonoSH, Dominant Direction, or non-directional areas when memory and shader support differ.
- Use bitmasks so specific lights affect only certain parts of the world.
- Use vertex lightmaps only for very specific specialized cases.
Important Group Settings
Packing Mode
Bakery groups can use different packing modes:
- Original UV: uses existing UV layout behavior.
- Pack Atlas: lets Bakery atlas-pack objects into a shared lightmap.
- Vertex: stores baked lighting in vertices instead of textures.
For most VRChat worlds, Pack Atlas is the practical default when using manual groups.
Vertex is niche. Bakery supports it, but it needs compatible shaders such as Bakery Shader or a custom shader path. It is not a general replacement for texture lightmaps in a typical VRChat world.
Directional Mode Override
Each group can override the global directional mode. This is useful when:
- one hero area benefits from SH
- the rest of the world should stay MonoSH
- some materials cannot support SH or RNM
Bakery's manual explicitly notes that RNM and SH modes can require separating those objects from the rest of the scene when standard color lightmaps are not available or the shaders are not compatible.
Resolution and Auto-resolution
Each group can use a fixed resolution or derive resolution from global Texels Per Unit using auto-resolution.
In VRChat, this is useful when you need:
- stable atlas sizing for one important area
- predictable bake output for iteration
- different density behavior between hero and background areas
Atlas Packer
Groups can choose the atlas packing algorithm. In practice, this is less about artistic intent and more about packing efficiency, atlas count, and UV behavior.
Default vs xatlas
Bakery supports two atlas packers:
- Default: Bakery's original pre-v1.7 atlas packing algorithm.
- xatlas: xatlas-based packing.
The Bakery manual calls out a few important differences:
| Atlas Packer | Strengths | Limitations | VRChat Guidance |
|---|---|---|---|
| Default | Supports object override resolution | No efficient LOD packing, no hole filling | Good when you need strict per-object override resolution control |
| xatlas | Supports efficient LOD packing and hole filling | Does not support override resolution | Good when packing efficiency matters more than override resolution |
For VRChat worlds, the decision is usually practical:
- use Default if you rely on override resolution behavior
- use xatlas if you want tighter packing or better LOD-oriented atlas efficiency
xatlas and UV Regeneration
It is easy to confuse Atlas Packer with Unwrapper.
- Atlas Packer decides how already-existing UV layouts are packed into lightmap atlases.
- Unwrapper decides how Bakery adjusts or regenerates UVs when UV padding adjustment is enabled.
If you want to keep using xatlas but avoid Bakery re-exporting geometry and maps on every bake, the relevant toggle is Export geometry and maps. The Bakery manual notes that if geometry, textures, and lightmap resolution settings have not changed, you can disable that checkbox to make the next render faster.
For VRChat workflow, that means:
- leave xatlas enabled if you like its packing behavior
- disable Export geometry and maps only when the scene geometry, textures, and resolution-related settings are unchanged
- turn it back on as soon as you change meshes, UV-relevant content, textures, or resolution setup
This is mainly an iteration-speed optimization, not a different packing mode.
That distinction matters in VRChat projects where shared imported meshes should keep their existing UVs.
Bitmask
Every group has a bitmask, and Bakery lights also have bitmasks. A light affects a group only if they share at least one enabled bit. Default settings mean all lights affect all lightmaps.
For VRChat, bitmasks are useful when:
- room lights should stay inside one room
- club signage should not leak into unrelated areas
- you want lighting separation between floors or sectors
- hero lights should affect only a specific presentation zone
Per-object Override Resolution
Inside atlas-packed groups, object-level resolution still matters. Global grouping does not replace per-renderer resolution control. You can still use per-object adjustment to keep low-value meshes cheap while preserving detail where players actually look.
| Setting | What It Controls | VRChat Guidance |
|---|---|---|
| Packing Mode | Texture atlas vs original UV vs vertex bake | Use Pack Atlas for most manual groups |
| Directional Mode Override | Per-group lighting direction mode | Use to isolate SH hero areas or compatibility exceptions |
| Resolution | Target size of the group lightmap | Use fixed resolution only when predictable output matters |
| Auto-resolution | Derives group resolution from global TPU | Good default when group quality should track the rest of the world |
| Atlas Packer | Packing algorithm | Use Default when override resolution matters, use xatlas when packing efficiency matters more |
| Bitmask | Which Bakery lights affect the group | Very useful for room/zone isolation in VRChat |
| Per-object adjustment | Fine control within the group | Use it before multiplying manual groups everywhere |
When VRChat Creators Should Make a Manual Group
| Use Case | Use a Manual Group? | Why |
|---|---|---|
| Hero room, stage, mirror zone, or social focal point | Yes | Keeps quality and iteration under control |
| One alley or street section being polished repeatedly | Yes | Reduces rebake scope and keeps the area predictable |
| Whole world with similar quality everywhere | Usually no | Auto-packing is often good enough |
| Tiny decorative prop cluster | Usually no | The extra group can fragment atlases and waste memory |
| SH-only hero area in a mostly MonoSH world | Yes | Good compatibility and memory boundary |
| Separate room lights from other rooms using bitmasks | Yes | Prevents unwanted cross-lighting |
| Trying to make every room its own lightmap | Usually no | Often increases atlas count without enough visual gain |
VRChat Best Practices
- Use groups intentionally, not everywhere.
- Group by visibility and player importance, not by arbitrary hierarchy.
- Reserve manual groups for hero spaces, repeated iteration zones, or memory-control boundaries.
- Keep group boundaries meaningful for the actual world layout.
- Test whether a manual group really reduces atlas waste or iteration time.
- Use group overrides when one zone has different shader compatibility or directional needs than the rest of the world.
- Check results in the VRChat client, not only Scene View.
Use manual groups for hero areas and controlled rebake zones first. Those are the cases where they usually pay for themselves.
VRChat Cautions
- Too many manual groups can fragment atlases and increase lightmap count.
- Tiny groups can make memory worse instead of better.
- SH or RNM compatibility can force group-based separation when some materials do not support those modes.
- Bitmask-heavy setups should be documented in project notes so future edits do not accidentally break the lighting logic.
- Vertex lightmaps should be treated as a specialized tool, not a default optimization move.
Do not split every room into its own group unless there is a real memory, compatibility, or workflow reason. More groups do not automatically mean a better bake.
Workflow Recommendation for VRChat Worlds
For most worlds, start with Bakery's automatic packing and get the lighting style working first. Then introduce manual groups only where one of these becomes true:
- a hero area needs more control
- atlas count needs better containment
- rebakes are too broad during iteration
- shader compatibility forces separation
- bitmask-based light isolation is necessary
If the problem is mostly local detail, adjust per-object scale first. If the problem is workflow or zone-level control, then reach for manual Lightmap Groups.
See Texel Density and Resolution Control for the other half of the equation.