Documentation

Enable the plugin, then open Window > Voxel GI Settings to access all controls. Toggle Enable Voxel GI to turn the effect on or off.

Stage B – Trace & composite (BeforeDOF post-process)

The final composite is, per pixel:

Disable Sparse Voxels to fall back to dense volumes (every affected shader is a compile-time permutation, so behavior is identical apart from memory and speed). A faint one-voxel filtering seam can appear at brick boundaries; it is hidden by the cone average

Debug View Mode replaces the composite with a diagnostic overlay. Use these to verify each stage in isolation, especially mode 1 and 4 to confirm the scene is voxelizing with color.

Mode IDDebug View NameDiagnostic Description
0OffNormal composite view.
1Radiance VoxelsCamera raymarch of the lit voxel volume. Crisp voxel cubes; colored surfaces should appear colored.
2Diffuse GIThe upsampled diffuse indirect (albedo applied), tone-mapped. Color bleeding should be visible here.
3AOThe cone-traced ambient occlusion / visibility term.
4Albedo VoxelsCamera raymarch of the learned material-color volume. Verifies albedo capture.
5SpecularCone specular plus ray-traced reflections, tone-mapped.

Show Debug Text: Draws a performance/status overlay in the viewport: frame time, volume resolution and mode (sparse/dense), bounce count, voxelization slices per frame, the active debug view, and the diffuse and specular trace resolutions (with megapixel counts), and whether ray-traced specular is on. For the authoritative GPU cost of the passes, use the engine’s

SettingDefaultRangeDescription
Enable Voxel GIOnon/offMaster toggle for the viewport pass.
Debug View Mode00–5Diagnostic overlays (see section 5).
Show Debug TextOffon/offViewport performance/status overlay.
SettingDefaultRangeDescription
Volume Resolution25632–512Voxels per axis (rounded to a power of two). Cost scales cubically; prefer lowering Volume Extent over raising this for smaller voxels.
Volume Extent2000500–100000World size covered by the volume, in centimeters. Along with resolution, this sets voxel size.
Voxelize Slices Per Frame160–512Z-slices re-voxelized per frame (amortized). A full refresh takes Resolution/Slices frames. 0 = whole volume each frame.
Sparse VoxelsOnon/offSparse node-grid + brick-atlas storage with empty-space skipping. Off = dense volumes.
Sparse Brick Capacity163841024–65536Maximum allocated 8x8x8 bricks. Raise if GI stops filling new areas in large scenes.
SettingDefaultRangeDescription
Inject Sun LightOnon/offDirect sunlight into occupied voxels via shadow ray.
Inject Local LightsOnon/offNearest point/spot lights (up to 16) with shadow rays.
Inject Sky LightOnon/offSky light into voxels via an upward visibility ray.
Inject Scene ColorOnon/offSplat lit scene color + material albedo from screen (highest-quality bounce source for on-screen surfaces).
Scene Color Blend0.250.01–1.0Temporal blend of screen injection. Higher reacts faster, flickers more.
Injection Radiance Clamp640–100000Max injected luminance (kills specular/emissive fireflies). 0 = off. Raise for physically calibrated sun, or the bounce is silently capped.
Voxel Base Color0.7 greycolorFallback albedo for voxels the camera has never seen.
SettingDefaultRangeDescription
Num Bounces41–4Diffuse light bounces. 1 = direct only; each extra bounce adds one in-frame gather iteration.
Secondary Bounce Intensity1.00.0–1.0Strength of the 2nd and later bounces. Keep $\le 1.0$ for energy-conserving falloff.
SettingDefaultRangeDescription
Color Bleed Saturation1.00.0–8.0Saturation of the gathered indirect. 1 = physical; >1 exaggerates the bleed color; 0 = monochrome.
Color Bleed Intensity2.00.0–8.0How strongly voxel albedo tints bounced light. 0 = grey bounce; 1 = full material color; >1 exaggerates.
SettingDefaultRangeDescription
Cone Aperture Degrees6020–120Diffuse cone half-angle spread. Narrower = sharper, more directional gather.
Cone Step Factor0.50.25–2.0Step length as a fraction of cone diameter. Lower = higher quality, slower.
Cone Initial Offset Voxels2.00.5–8.0Start distance along the cone, in voxels (avoids self-occlusion). Lower to catch near-field bleed.
Cone Normal Offset Voxels1.00.0–8.0Trace-origin offset along the surface normal, in voxels.
Cone Max Distance00–100000Max cone distance in cm. 0 = half the volume extent.
Occlusion Strength1.00.0–4.0Scales voxel opacity during accumulation. Higher = darker occlusion.
SettingDefaultRangeDescription
Half Res TraceOnon/offTrace diffuse cones at half resolution and bilaterally upscale. Large speedup, slight softening.
Temporal FilterOnon/offReprojected temporal accumulation on the traced GI.
Temporal Weight0.850.0–0.97History blend weight. Higher = smoother/stabler, slower to react (more smearing on motion).
Update GI Every FrameOffon/offContinuously refresh instead of only on invalidation. More expensive; for fully dynamic scenes.
SettingDefaultRangeDescription
Specular GIOnon/offRough voxel specular reflection cone.
Half Res Specular TraceOnon/offTrace specular (cone + RT requests) at half resolution. Disable for full-res specular while diffuse stays half-res.
Specular Intensity1.00.0–8.0Brightness of the rough voxel specular cone.
Ray Traced SpecularOnon/offMaterial-pipeline reflection rays for smooth surfaces (mirror reflections).
Ray Traced Specular Intensity2.00.0–8.0Brightness of ray-traced mirror reflections (tuned separately from the cone).
Ray Traced Roughness Threshold0.30.05–1.0Roughness below this uses ray-traced reflections; above it the voxel cone takes over (they cross-fade).
SettingDefaultRangeDescription
GI Intensity1.00.0–20.0Overall multiplier on the added diffuse indirect.
AO Strength1.00.0–1.0How strongly cone occlusion darkens the added indirect light.
AO Min Visibility0.350.0–1.0Darkest allowed AO multiplier — lifts creases/folds out of pure black.
AO Power0.50.1–4.0AO response curve. Below 1 softens high-contrast contact occlusion.
Sky Light Intensity1.00.0–20.0Sky ambient added where cones leave the volume unoccluded.

This is the single most important tuning step. Cones start a voxel or two away from the surface, so if voxels are large relative to your geometry, the near field (contact bleeding, small objects, arch undersides) is skipped and GI looks like uniform fog. For an interior on the order of tens of meters, aim for voxels around 3–8 cm: lower Volume Extent (e.g., 2000 cm) or raise Volume Resolution (256). Lowering extent is free; raising resolution costs cubically.

A post-process plugin cannot subtract light already in scene color. If the level’s SkyLight floods everything with flat ambient, it washes out the voxel bounce and AO. Turn the level SkyLight down (or off) and let the plugin’s Sky Light Intensity supply occluded sky ambient instead—that is what produces the corner darkening and the open-to-covered gradient.

Confirm with debug view 4 that colored surfaces store colored albedo, and view 2 that the indirect carries their tint. To strengthen it, raise Color Bleed Saturation (1.5–2) and use several bounces. Verify the direct light hitting the colored surface is bright enough—bleed is proportional to it.

If interiors slowly brighten or blow out, check that Injection Radiance Clamp is not capping (physically calibrated suns need a high or zero clamp), keep Secondary Bounce Intensity at or below 1, and moderate GI Intensity. If interiors are too dark after matching voxel size, raise Sky Light Intensity or lower Occlusion Strength.

Smearing while moving the camera is caused by the temporal filter: lower Temporal Weight toward 0.7. Light ‘swimming’ as slabs revoxelize means raising Voxelize Slices Per Frame. Thin bright streaks that persist across angles are usually thin geometry caught in coarse mips: raise resolution or lower Occlusion Strength.

  • Interior (Sponza-like): Extent 2000, Resolution 256, Aperture 40-45, Initial Offset 1.0, Bounces 3-4, low level SkyLight, Sky Light Intensity ~0.5.
  • Large Exterior: Extent 8000-20000, Resolution 256-512, Bounces 1-2, higher Voxelize Slices Per Frame for faster light response.
  • Sharp Reflections: Ray Traced Specular on, Half Res Specular Trace off, Ray Traced Specular Intensity to taste; Roughness Threshold ~0.3.
  • Performance First: Half Res Trace on, Half Res Specular Trace on, Bounces 2, Resolution 128-256, Sparse Voxels on.

Cost is dominated by three things: the volume size (memory and every whole-volume pass), the number of bounces (one gather + pyramid rebuild each), and the trace resolution (diffuse and specular). Voxelization is amortized over frames, so it is usually cheap.

  • Volume memory scales cubically with resolution. Sparse storage removes empty space; the albedo volume is a compact 8-bit buffer. Dense 512 is expensive in both memory and per-pass time—prefer smaller extent over higher resolution.
  • Bounces each add a full-volume (sparse: per-brick) gather and a pyramid rebuild. For high resolutions, consider 2 bounces rather than 4.
  • Trace resolution: keep diffuse at half res; give specular full res only when you need crisp mirrors.
  • Ray-traced reflections cost one ray per specular-resolution pixel (plus a shadow ray and a short gather per hit). Half-res specular roughly quarters that.

Tip: Use Show Debug Text for frame time and the active workload (resolution, bounces, trace sizes), and the console command stat gpu for the exact GPU cost of the VoxelGI passes.