What you'll learn:
- How light bounces between surfaces (global illumination)
- How Lumen calculates indirect lighting in real-time
- Emissive materials and how they contribute light
Section 13: Indirect Lighting & Lumen (8 min)
🖼️Image placeholder: Indirect Lighting with Lumen
To see how indirect lighting (bounce light) works, we need reference materials that demonstrate the effect:
BP_LHT_RefLightingIndirect Blueprint: Create a Blueprint with spheres showing HSV Value effects on bounce:
- White (V = 0.85) — High bounce, brightens nearby surfaces
- Mid Grey (V = 0.5) — Medium bounce
- Dark Grey (V = 0.18) — Low bounce
- Black (V = 0.04) — Minimal bounce, absorbs most light
Add a white wall or floor nearby to see how each sphere's color bleeds onto adjacent surfaces.
Direct lighting: Light travels from source → surface → camera
Indirect lighting: Light bounces off surfaces before reaching camera
Indirect light is why:
- Shadows aren't pure black (light bounces into them)
- Rooms feel "filled" even with one window
- Colors bleed between nearby surfaces
Base Color (also called Albedo) represents reflectance — what percentage of light bounces back. This is the Value in HSV (Hue, Saturation, Value).
Here's why this matters for indirect lighting:
The Value (brightness) of your materials determines how much light bounces.
| Material Value | Bounce Behavior |
|---|---|
| 0.1 (dark) | Absorbs 90% of light, only 10% bounces |
| 0.5 (mid) | Absorbs 50%, bounces 50% |
| 0.8 (bright) | Absorbs 20%, bounces 80% |
| 1.0 (white) | Absorbs nothing, 100% bounces forever |
This is why realistic material values matter:
- Too-dark materials = dead, flat shadows (no bounce)
- Too-bright materials = washed out, no contrast (infinite bounce)
- Correct values (0.04 - 0.85) = natural light falloff
Practical example:
- A room with dark walls (0.1 Value) will have very little bounce light — shadows will be harsh
- The same room with light walls (0.7 Value) will have soft, filled shadows from all the bounced light
Lumen is Unreal Engine 5's Global Illumination (GI) system.
What Lumen Does:
- Calculates light bouncing between surfaces
- Provides ambient fill in shadows
- Makes emissive materials "light" the scene
- Updates dynamically as lights/objects move
Lumen uses different ray tracing methods to gather indirect lighting information:
| Method | How It Works | Best For |
|---|---|---|
| Screen Tracing | Traces against screen-space data (what's visible) | Fast, default fallback |
| Hardware Ray Tracing | Uses RTX/DXR hardware to trace actual geometry | Highest accuracy, requires RT GPU |
| Software Ray Tracing (Distance Fields) | Uses pre-computed mesh distance fields | Works without RT hardware, handles global scale |
Note: Distance Fields work when Hardware RT is off — they're Lumen's fallback for indirect lighting on non-RTX hardware.
Screen traces use the rendered image to approximate indirect lighting. This is fast but has limitations:
Screen Tracing Source — What data screen traces use:
Project Settings → Rendering → Lumen → Screen Tracing Source
| Source | Description |
|---|---|
| Scene | Standard scene color |
| Scene Color with Translucency | Includes translucent surfaces (best option for accuracy) |
Post Process Controls:
| Setting | Location | What It Does |
|---|---|---|
| Screen Traces | Post Process → Lumen GI → Screen Traces | On/Off toggle for screen-space contribution |
| Final Gather Quality | Post Process → Lumen GI | Increase sample count for GI (performance hit) |
| Lumen Scene Lighting Quality | Post Process → Lumen GI | Improve lighting representation fidelity |
| Lumen Scene Detail | Post Process → Lumen GI | Improve geometry representation fidelity |
Important: Screen traces are view-dependent — if you look away from a surface, it can't contribute to GI via screen traces. Hardware RT and Distance Fields provide more stable results.
For highest accuracy, enable Hit Lighting mode:
Project Settings → Rendering → Lumen → Ray Lighting Mode → Hit Lighting
This uses hardware ray tracing to evaluate lighting at each ray hit rather than using the surface cache.
Note: Hit Lighting is more expensive but produces more accurate results, especially for complex lighting scenarios.
- Create an enclosed room with a window opening
- Add a single light outside the window — convert this setup into a Blueprint for reuse. This gives you a portable indirect lighting test rig you can drop into any level.
- Lumen OFF: Interior is black except direct light path
- Lumen ON: Light bounces inside, fills the room
Quick toggle via Project Settings:
Project Settings > Engine > Rendering > Global Illumination:
Dynamic Global Illumination Method: Lumen / None
Each light has an Indirect Lighting Intensity property:
- 1.0 = Normal bounce contribution
- 0.0 = This light doesn't contribute to bounces
-
1.0 = Exaggerated bounce (artistic choice)
See Part 6: Exposure for Lumen quality settings and Post Process overrides.
Section 14: Emissive Materials (6 min)
An emissive material appears to glow — it outputs light values greater than 1.0.
Creating an Emissive Material:
- Create new material
- Add Emissive Color input
- Multiply base color by intensity value
Emissive Color = Light Color × Intensity
Example: Orange × 100 = Bright orange glow
| Value | Result |
|---|---|
| 0 - 1 | No visible glow |
| 1 - 10 | Subtle glow |
| 10 - 100 | Noticeable brightness |
| 100+ | Intense, like looking at light source |
By itself: NO.
Emissive materials appear bright but don't cast light on other objects.
With Lumen: YES.
Lumen can make emissive surfaces contribute to indirect lighting.
Demonstration:
- Hide all lights
- Place emissive material in scene
- Lumen OFF: Only the material glows, surroundings are black
- Lumen ON: Emissive casts colored light on nearby surfaces
Emissive lighting via Lumen has the same issues as other indirect lighting:
- Noisy
- Inconsistent frame-to-frame
- Not reliable when consistency matters
Why Emissive Can Be Noisy:
- Mesh size and emissive intensity — Small meshes with high intensity are harder to sample accurately
- Related to Screen Traces — Screen-space limitations affect emissive contribution
- Sample count — Default sampling may not be enough for complex emissive setups
Solutions:
- Reduce intensity of emissive and increase exposure instead
- Use larger emissive surfaces rather than small bright ones
- Add support lights (actual light actors) near emissive surfaces for consistent results
- Increase Final Gather Quality (performance cost)
Don't rely on emissive as primary lighting when you need predictable, repeatable results.
Section 15: Lumen Quality & Noise Control (8 min)
Lumen uses temporal accumulation — it builds quality over multiple frames. Noise appears when:
- Camera or objects move quickly
- Lighting changes rapidly
- Sample counts are too low
These console variables control Lumen's spatial filtering and denoising:
| Console Variable | Default | What It Does |
|---|---|---|
r.Lumen.ScreenProbeGather.SpatialFilterNumPasses | 3 | Number of spatial filter passes — increase to smooth noisy samples spatially |
r.Lumen.ScreenProbeGather.SpatialFilterHalfKernelSize | 1 | Kernel size — increase to widen the filter for stronger denoising |
Temporal Stability Settings:
| Setting | Location | What It Does |
|---|---|---|
| Lumen Scene Lighting Update Speed | Post Process → Lumen GI | How fast lighting updates (lower = more stable, slower response) |
| Final Gather Lighting Update Speed | Post Process → Lumen GI | How fast final gather updates (lower = more stable) |
Trade-off: Reducing update speed makes lighting more stable but slower to respond to changes. For cinematics, slower speeds reduce noise; for gameplay, faster speeds keep lighting responsive.
- Start with default settings — Often good enough
- If noisy: Increase
SpatialFilterNumPassesto 5-6 - If still noisy: Increase
SpatialFilterHalfKernelSizeto 2 - For cinematics: Reduce update speeds in Post Process settings
- For problem emissives: Add support lights or reduce emissive intensity