BRG GameObject Group
Converts a hierarchy of prefab instances into GPU-instanced rendering via BRG Instanced Renderer. Instances are spatially batched into chunks and serialized, so startup is instant with no runtime transform scanning.
For a step-by-step setup guide, see Getting Started: GameObjects.
Inspector Properties
| Property | Type | Default | Description |
|---|---|---|---|
| Chunk Mode | enum | Static | Controls how instances are spatially organized. See Chunk Modes below. |
| Chunk Size | float | 50m | World-space size of the spatial grid cells. Instances are grouped into chunks based on their position. Affects culling granularity — smaller chunks cull more precisely, larger chunks reduce overhead. Only applies to Static mode. |
| Cull Distance | float | 0 | Maximum render distance in meters. Instances in this group beyond this distance are not rendered. 0 means no distance limit. |
| Show Chunk Gizmos | bool | true | Draws wireframe bounding boxes in the Scene View for each chunk, color-coded by fill percentage. |
Inspector Actions
| Button | Description |
|---|---|
| Convert Children to Instances | Scans all direct children, groups them into spatial chunks, serializes the data, and disables their Mesh Renderers and LOD Groups. |
| Revert to GameObjects | Re-enables original Mesh Renderers and LOD Groups, returning to standard Unity rendering. |
| Refresh | Rebuilds chunk data from the current state of the source objects. Use after moving, adding, or removing instances. |
You can also convert arbitrary GameObjects (not just children) via the hierarchy context menu: GameObject > BRG > Convert to BRG Instances. This creates a new BRG GameObject Group and converts the selected objects into it.
Status Display
When converted, the inspector shows:
- Converted: Yes/No
- Chunk Count: Number of spatial chunks
- Prototype Count: Number of unique prefab types
- Instance Count: Total instances across all chunks
Chunk Modes
Static (Default)
Instances are placed into a spatial grid based on their world position and the Chunk Size setting. Each chunk has tight bounding boxes computed at edit time, giving the best culling precision. If a grid cell exceeds the maximum instance capacity (determined by Config pool settings), it is split into multiple chunks.
Best for instances that don't move at runtime.
Dynamic Global Chunk
All instances are placed into a single chunk with world-sized bounds. The Chunk Size setting is ignored. This mode is intended for instances that move frequently at runtime, since the chunk bounds don't need to encapsulate specific positions.
Best for instances that move frequently. Use with native transform tracking.
Native Transform Tracking
Each converted source object gets a BRG GameObject Link component. When a linked GameObject's transform changes, the corresponding BRG instance is automatically updated on the GPU — no manual API calls needed.
This uses Unity's native change tracking (ObjectDispatcher) to detect transform changes each frame, making it efficient even with large numbers of tracked objects. Only objects that actually moved are processed.
Tip
For instances that move at runtime, use Dynamic Global Chunk mode. Static mode computes tight chunk bounds at edit time, which won't account for runtime movement.
Clone Support
When a converted source object is cloned via Instantiate(), the BRG GameObject Link automatically detects the clone and registers it as a new BRG instance under the same group. The clone inherits the same prototype as the original. Destroying a clone removes its BRG instance automatically.
Notes
- Source GameObjects remain in the hierarchy after conversion. Their renderers are disabled but you can still select and move them.
- After editing source objects in the editor, click Refresh to update the serialized chunk data.
- Mixed prefab types under the same parent are fully supported. Each unique prefab becomes a separate prototype.