menu_bookDocumentation
Indirect Light Volumes (DDGI) — dynamic global illumination probe grid
Indirect Light Volumes (DDGI)
IndirectLightVolume places a probe grid for dynamic global illumination — light bouncing off surfaces tints nearby objects, and sunlight fades naturally into rooms. It is currently in Feedback Preview.Setup
Add an IndirectLightVolume component to a GameObject and size it to cover the area you want lit:
CSHARP
var go = Scene.CreateObject();
go.Name = "GI Volume";
var ddgi = go.Components.Create<IndirectLightVolume>();
ddgi.Size = new Vector3( 1024, 1024, 512 );
ddgi.ProbeDensity = 8f; // units between probes — lower = more detail
ddgi.NormalBias = 5f; // push samples off surfaces to reduce artifacts
ddgi.Contrast = 1f; // higher = punchier, more stylized bouncesProperties
| Property | Description |
|---|---|
| ProbeDensity | Distance between probes. Lower = finer detail, higher VRAM cost |
| NormalBias | Offset samples from surfaces. Increase if you see dark speckles |
| Contrast | Crushes darks for a more dramatic look |
| InsideGeometryBehaviour | Deactivate (remove probes inside geometry) or Relocate (move them) |
Best Practices
- Cover key areas without overlapping volumes unnecessarily
- Re-bake after major scene changes
- Use low density for large open areas; add a second smaller volume for detail in tight spaces
- Use thick wall geometry — probes can't see walls thinner than the probe spacing, causing light leaks
- Prefer Deactivate for InsideGeometryBehaviour — Relocate can cause interpolation artifacts
Limitations
- Thin walls leak light — thicken geometry or increase probe density near walls
- Not real-time — baking happens in the editor; no dynamic updates at runtime
- Re-bake whenever lights or large geometry change
Was this helpful?