Back to Lighting

Part 7: AMBIENT LIGHTING SYSTEMS

~36 min7 sections

What you'll learn:

  • The different Sky Light Source Types and when to use each
  • Static vs Real-Time capture workflows
  • Sky Atmosphere — the physically-based alternative to HDRI
  • Sky-flagged materials for custom procedural skies
  • Cast Ray Traced Shadows for soft ambient shadowing

Section 25: Sky Light Systems Theory (3 min)

Sky Light has one fundamental question: Where does the environment data come from?

The answer determines your entire ambient lighting workflow:

Source TypeCaptureBest For
SLS Captured SceneCaptures visible environmentHDRI Backdrop, Sky Atmosphere, distant geometry
SLS Specified CubemapUses assigned cubemap directlyControlled lighting independent of visible sky

SLS = "Sky Light Source" — the prefix Unreal uses for Source Type enum values. You'll see this in Blueprints and C++ code as SLS_CapturedScene and SLS_SpecifiedCubemap.

Orthogonal to Source Type is the capture timing:

ModeWhen It CapturesCostUse Case
Static (Real Time Capture: Off)Once at level loadFree after initial captureMost scenes, static environments
Real-Time (Real Time Capture: On)Every frame~1-2ms GPUTime-of-day, dynamic skies

These two axes give you four combinations — we'll cover each.


Section 26: SLS Captured Scene — Static Capture (5 min)

With Source Type: SLS Captured Scene and Real Time Capture: Off, the Sky Light:

  1. Looks around at level load
  2. Captures whatever is visible (sky mesh, HDRI dome, distant geometry)
  3. Stores result as a cubemap
  4. Uses that cubemap for all ambient lighting until manually recaptured

This is the default and most common workflow.

  • HDRI Backdrop setup (Sky Light captures the HDRI dome)
  • Static outdoor scenes with Sky Atmosphere
  • Interior scenes with visible windows/skylights
  • Any scene where ambient lighting doesn't need to change
  1. Add Sky Light (Place Actors → Lights → Sky Light)
  2. Set Source Type: SLS Captured Scene
  3. Set Real Time Capture: Off (default)
  4. Ensure something is visible to capture (HDRI Backdrop, Sky Atmosphere, etc.)

When you change your sky or HDRI, the Sky Light doesn't automatically update. Click Recapture Scene in the Details panel to manually trigger a new capture.

TODO: Screenshot - Recapture Scene button in Sky Light Details panel

Why is my scene black? With SLS Captured Scene, if there's nothing visible to capture — no HDRI dome, no Sky Atmosphere, no distant geometry — the Sky Light captures black. That's correct behavior. Add a sky system or switch to SLS Specified Cubemap.

Controls the detail level of the captured environment:

ResolutionQualityUse Case
64–128LowQuick previews
256MediumDefault — good balance
512HighDetailed environments
1024–2048MaximumHero shots, cinematics

Higher resolution = sharper reflections and more color detail in ambient lighting, but more memory.


Section 27: SLS Specified Cubemap — Static Capture (5 min)

With Source Type: SLS Specified Cubemap, you assign a cubemap (HDRI) texture directly. The Sky Light uses that cubemap regardless of what's visible in your scene.

  • Lighting environment should differ from visible background
  • No visible sky in scene (interior with no windows)
  • Art-directed lighting that shouldn't match the backdrop
  • Quick iteration without setting up HDRI Backdrop
  1. Add Sky Light
  2. Set Source Type: SLS Specified Cubemap
  3. Assign your HDRI texture to Cubemap slot
  4. Adjust Source Cubemap Angle to rotate the lighting direction

Rotates the HDRI around the vertical axis. Useful for:

  • Aligning the bright sun area with your Directional Light
  • Adjusting where highlights appear on reflective surfaces
  • Fine-tuning the overall lighting direction
AspectSLS Captured SceneSLS Specified Cubemap
SourceWhatever is visibleAssigned texture
FlexibilityResponds to scene changesIndependent of scene
SetupNeeds visible sky/HDRIJust assign texture
Use caseMost outdoor scenesControlled/interior lighting

Tip: SLS Specified Cubemap is great for product visualization where you want specific HDRI lighting without showing the HDRI as a background.


Section 28: Real-Time Capture + Sky Atmosphere (8 min)

Sky Atmosphere is Unreal's physically-based atmospheric scattering system. Instead of using a photograph (HDRI), it simulates how sunlight scatters through Earth's atmosphere.

When combined with Real Time Capture, the Sky Light continuously updates to match the changing sky — enabling time-of-day systems.

  1. Directional Light — represents the sun
  2. Sky Atmosphere — generates the sky based on sun position
  3. Sky Light — captures the sky for ambient fill (Real Time Capture: On)
  1. Place Actors → Visual Effects → Sky Atmosphere
  2. Select your Directional Light → Details → Light → enable Atmosphere Sun Light
  3. Add a Sky Light (set to SLS Captured Scene, Real Time Capture: On)

Now rotate your Directional Light — the sky color changes automatically. Noon = blue sky. Sunset angle = orange/red. Below horizon = night. The Sky Light captures these changes every frame.

SettingWhat It Does
Rayleigh ScatteringBlue color at midday, red/orange at sunset
Mie ScatteringHaze/glow around the sun
AbsorptionAtmospheric thickness

Tip: The defaults are physically accurate for Earth. You rarely need to change these unless going for stylized or alien atmospheres.

With Real Time Capture: On, the Sky Light renders the environment to a cubemap every frame. This costs ~1-2ms GPU depending on resolution.

Only enable Real Time Capture when you need it:

  • Time-of-day systems
  • Dynamic weather
  • Sky that changes during gameplay

For static skies, use static capture and click Recapture Scene when needed.

ScenarioBest Choice
Dynamic time of daySky Atmosphere
Controlled studio/product shotsHDRI
Consistent, repeatable lightingHDRI
Realistic outdoor that reacts to sunSky Atmosphere
Quick outdoor prototypingSky Atmosphere (simpler)
Art-directed specific lookHDRI

HDRI Pros: Consistent, art-directed, real photograph reflections Sky Atmosphere Pros: Dynamic, physically accurate, no file management


Section 29: Real-Time Capture + Sky-Flagged Materials (5 min)

What if you want a dynamic sky but don't want Sky Atmosphere's realistic look? Maybe you want:

  • Stylized cartoon sky
  • Sci-fi procedural nebula
  • Fantasy gradient sky
  • Custom cloud system

Sky-flagged materials let you create custom sky visuals that the Sky Light will capture.

  1. Create a sky dome mesh (hemisphere or sphere)
  2. Create an Unlit material for your custom sky
  3. Enable Is Sky on the material
  4. Sky Light captures it like any other sky
  1. Create new Material
  2. Set Shading Model: Unlit
  3. Set Material Domain: Surface
  4. Enable Is Sky checkbox (under Material settings)
  5. Build your sky visuals using nodes (gradients, noise, procedural patterns)

TODO: Screenshot - Material editor showing Is Sky checkbox

The Is Sky flag tells Unreal:

  • This material represents the sky background
  • Include it when Sky Light captures the scene
  • Treat it as infinitely far (no parallax)

Without this flag, your sky dome would be captured as geometry at a specific distance, causing incorrect reflections and ambient lighting.

Material nodes:
1. Camera Position (World) → Normalize
2. Take Z component (sky direction)
3. Lerp between horizon color and zenith color
4. Plug into Emissive Color

This creates a basic gradient sky that the Sky Light will capture for ambient lighting.

With Real Time Capture: On, you can animate your sky material and the ambient lighting will update:

  • Animated cloud layers
  • Pulsing alien sky
  • Day/night color transitions
  • Weather effects

Section 30: Cast Ray Traced Shadows (5 min)

Sky Light can cast ray traced shadows — soft, omnidirectional shadows from ambient lighting. This creates subtle darkening in corners and where objects block the sky.

Without Sky Light shadows, ambient light reaches everywhere equally. With Cast Ray Traced Shadows enabled:

  • Objects block ambient light from certain directions
  • Creates soft, directionless shadowing
  • Different from directional light shadows (no clear direction)
  1. Select your Sky Light
  2. Details panel → Find Cast Ray Traced Shadows
  3. Enable it

Requirements:

  • Hardware Ray Tracing enabled in Project Settings
  • RTX/DXR compatible GPU

Cast Ray Traced Shadows and Ambient Occlusion both darken areas where ambient light is blocked. The difference:

MethodHow It WorksQualityCost
SSAOScreen-space approximationLimited to visible geometryCheap
DFAODistance field occlusionWorks with off-screen geometryModerate
RTAORay traced ambient occlusionAccurate but noisyExpensive
Cast RT ShadowsSky Light ray traced shadowsAccurate, integrates with Sky LightExpensive

Cast RT Shadows is essentially the Sky Light's own form of ambient occlusion — it's tracing rays from surfaces toward the sky to determine occlusion.

Note: We'll cover AO systems in detail in Part 9: Ambient Occlusion Systems. Cast RT Shadows can complement or replace traditional AO depending on your workflow.

Use Cast RT Shadows when:

  • You have RT hardware and frame budget
  • You want accurate sky occlusion
  • You're already using other RT features

Stick with traditional AO when:

  • Performance is critical
  • You need to support non-RT hardware
  • Approximate occlusion is acceptable

Section 31: Sky Light Quality Settings (5 min)

SettingPurposeTypical Value
Intensity ScaleBrightness multiplierDepends on HDRI/sky
Light ColorTint applied to captured environmentWhite (neutral)
Lower Hemisphere Is Solid ColorPrevents ground lighting upwardOn
Lower Hemisphere ColorColor used below horizonDark gray/black

Lower Hemisphere Is Solid Color prevents unrealistic light from "leaking" up from below the ground. If you see a black bar at the horizon with an HDRI, your HDRI may not have below-horizon data — try a full-sphere HDRI or disable this setting (with caution).

Every HDRI has its own baked intensity based on the exposure value (EV) at which it was captured. Some HDRIs are captured at +8 EV (very bright), others at +2 EV (much dimmer).

Intensity Scale 1.0 means "use the cubemap values as-is" — but those values might be wildly bright or dim depending on the source.

Coming up: This will be covered in more detail in Part 15: Exposure under Calibration and Physically Based Lighting.


IssueCauseFix
Black reflectionsSky Light missing or Size too smallAdd Sky Light, increase HDRI Backdrop Size
Horizon black barHDRI doesn't cover below horizonUse full-sphere HDRI or disable Lower Hemisphere Solid Color
Conflicting ambientMultiple Sky LightsDelete extras — only one Sky Light
Flat, washed-out lookAmbient overpowering direct lightReduce Sky Light Intensity
Sky not updatingReal Time Capture offEnable Real Time Capture or click Recapture Scene

Key Points:

  • SLS = Sky Light Source — the enum prefix for Source Type values
  • SLS Captured Scene captures visible environment — use with HDRI Backdrop or Sky Atmosphere
  • SLS Specified Cubemap uses assigned texture directly — for controlled/interior lighting
  • Real Time Capture updates every frame — enable for time-of-day systems
  • Sky Atmosphere provides physically-based dynamic sky
  • Is Sky material flag enables custom procedural skies
  • Cast Ray Traced Shadows provides accurate ambient shadowing (RT required)

You now have direct lighting (sources) and ambient lighting (fill). But ambient light doesn't reach everywhere equally — corners and crevices should be darker. In Part 8: Ambient Occlusion, we'll add the shadow side of ambient lighting.