What you'll learn:
- How light bounces between surfaces (global illumination)
- How Lumen calculates indirect lighting in real-time
- How material Value affects light bounce
- Emissive materials and how they contribute light
Section 37: Demo Scene Setup (8 min)
To truly understand indirect lighting, we need a controlled environment where we can see exactly what's happening. We'll build a simple room with objects that demonstrate:
- How material brightness affects light bounce
- How color bleeds between surfaces
- How emissive materials interact with global illumination
Remember: Lumen is currently disabled from our Part 2: Project Setup — we set Dynamic Global Illumination Method: None. Right now you won't see any bounce lighting — that's expected. We'll enable Lumen later in this part to see the difference.
Throughout this course, we use a consistent naming convention for lighting assets:
- LHT = Lighting (our course prefix)
- GI = Global Illumination
| Prefix | Type | Example |
|---|---|---|
M_LHT_ | Master Material | M_LHT_01 |
MI_LHT_ | Material Instance | MI_LHT_GI_Walls |
BP_LHT_ | Blueprint | BP_LHT_GI_Room |
- Drag out cubes and scale them to create a 4-walled room (floor, ceiling, 4 walls)
- Leave an opening on one side for your light source
- Place a rectangle (scaled cube) near one of the walls — this will demonstrate color bleeding
- Place a sphere near the same wall — this will demonstrate emissive lighting later
TODO: Screenshot - Room geometry setup (4 walls, opening, rectangle, sphere)
Before we create materials, add a light so we can see our geometry:
- Add a Directional Light (or Spot Light) shining through the room's opening
- Angle it so it illuminates part of the interior
- Notice: Only surfaces directly hit by the light are visible — everything else is black
This is what a scene looks like without indirect lighting. The areas in shadow receive no light at all.
TODO: Screenshot - Room with light, Lumen OFF (harsh shadows, black areas)
We'll create one master material with parameters, then make 3 instances for different demonstrations.
- Create a new Material:
M_LHT_01 - Add the following parameters:
- BaseColor (Vector3 Parameter) — Default: (0.5, 0.5, 0.5)
- EmissiveColor (Vector3 Parameter) — Default: (1, 1, 1)
- EmissiveIntensity (Scalar Parameter) — Default: 0
- Connect BaseColor to the Base Color input
- Multiply EmissiveColor × EmissiveIntensity, connect to Emissive Color input
TODO: Screenshot - M_LHT_01 material graph showing node connections
| Instance | Purpose | Settings |
|---|---|---|
MI_LHT_GI_Walls | Demonstrates how Value affects bounce | BaseColor: Adjustable grey (start at 0.5) |
MI_LHT_GI_ColorBounce | Demonstrates color bleeding | BaseColor: Saturated color (e.g., blue 0.1, 0.2, 0.9) |
MI_LHT_GI_Emissive | Demonstrates emissive (inactive for now) | BaseColor: White, EmissiveIntensity: 0 (we'll enable later) |
- Assign
MI_LHT_GI_Wallsto all walls, floor, and ceiling - Assign
MI_LHT_GI_ColorBounceto the rectangle - Assign
MI_LHT_GI_Emissiveto the sphere
Now you have a scene ready to demonstrate indirect lighting concepts.
TODO: Screenshot - Complete setup with materials applied, Lumen still OFF
Tip: Once your setup is working, select all the meshes and convert them into a Blueprint (
Blueprints → Convert Selection to Blueprint Class). This gives you a portable indirect lighting test rig you can drop into any level. Name itBP_LHT_GI_Room.
Section 38: Indirect Lighting & Lumen (10 min)
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
Without indirect lighting, any surface not directly hit by a light would be completely black. That's not how the real world works — light bounces everywhere.
Lumen is Unreal Engine 5's Global Illumination (GI) system. It calculates how light bounces between surfaces in real-time.
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
Toggle via Project Settings:
Project Settings > Engine > Rendering > Global Illumination:
Dynamic Global Illumination Method: Lumen
Or set it to None to disable (which is our current Part 1 state).
Now let's enable Lumen and see the difference in our demo room.
Before (Lumen OFF):
- Interior walls are black except where direct light hits
- Harsh contrast between lit and unlit areas
- No light fills the shadowed corners
TODO: Screenshot - Demo room with Lumen OFF (reference from setup)
After (Lumen ON):
- Light bounces off the walls, filling the room with soft illumination
- Shadows are no longer pure black
- The room feels naturally lit
TODO: Screenshot - Same view with Lumen ON (soft bounce light visible)
| Lumen OFF | Lumen ON |
|---|---|
| TODO: Screenshot | TODO: Screenshot |
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)
Section 39: HSV Value & Color Bleeding (8 min)
With Lumen enabled, let's see how material Value affects bounce:
- Select the walls and open
MI_LHT_GI_Walls - Adjust the BaseColor Value and observe:
- Low Value (0.1): Very little bounce — room stays dark except direct light
- Mid Value (0.5): Moderate bounce — shadows are filled
- High Value (0.8): Strong bounce — room fills with soft light
TODO: Screenshot - Side-by-side comparison of wall Value 0.1 vs 0.5 vs 0.8
What you just observed is the relationship between material brightness and light bounce.
Base Color (also called Albedo) represents reflectance — what percentage of light bounces back. This is the Value in HSV (Hue, Saturation, Value).
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
- Look at the walls and floor near the colored rectangle (
MI_LHT_GI_ColorBounce) - You should see the rectangle's color tinting nearby surfaces
- This is color bleeding — the saturated color bounces onto adjacent surfaces
The more saturated the color, the more visible the bleeding effect.
TODO: Screenshot - Color bleeding from blue rectangle onto adjacent wall
Section 40: Emissive Materials (6 min)
An emissive material appears to glow — it outputs light values greater than 1.0.
Remember the sphere in our demo scene? It has the MI_LHT_GI_Emissive material instance with EmissiveIntensity = 0. Let's activate it.
- Select the sphere in the scene
- Open the
MI_LHT_GI_Emissivematerial instance - Set EmissiveColor to a warm orange: (1.0, 0.5, 0.1)
- Gradually increase EmissiveIntensity:
- 0 → No glow
- 10 → Subtle glow visible on the sphere
- 50 → Noticeable brightness
- 100+ → Bright, starts casting light on nearby surfaces (with Lumen)
| 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 or delete all lights in your scene
- With your emissive sphere active (EmissiveIntensity = 100+):
| Lumen OFF | Lumen ON |
|---|---|
| Only the sphere glows, surroundings are black | Emissive casts colored light on nearby surfaces |
| TODO: Screenshot | TODO: Screenshot |
TODO: Screenshot - Emissive sphere lighting nearby surfaces with Lumen ON
Key Points:
- Indirect lighting is light that bounces off surfaces before reaching the camera
- Lumen is UE5's real-time global illumination system
- Material Value (brightness) controls how much light bounces — dark absorbs, bright reflects
- Color bleeding occurs when saturated colors bounce onto nearby surfaces
- Emissive materials glow but only light the scene when Lumen is enabled
You now understand what indirect lighting is and how Lumen enables it. But how does Lumen actually calculate all this bounced light? In Part 11: Indirect Lighting Systems, we'll explore the different tracing methods Lumen uses — screen tracing, hardware ray tracing, and distance fields — and how to control quality and noise.