Unreal 4 Lighting

These settings were copied from a reddit post, posted by user u/mariuz – all credit goes to him for the collected information. Any modifications or changes per UE4 version changes are added below that I’ve come to learn.


“I will leave my lighting cheat sheet here. These are the settings brewed from best-looking UE4 scenes on the internet.”

Stationary Light vs Static vs Movable:

  • Static bakes lights and shadows of static objects into lightmaps. Don’t cast light or shadows on Movable objects.
  • Stationary are baked too but allow intensity/color change in real-time (only direct lighting), as it bakes shadows to shadowmaps instead of lightmaps. Cast light on all objects. Do not exceed 4 count!
  • Movable are 100% real-time. Not baked. Cast light on all objects. A fully dynamic light with shadows will often cost twenty times (20x) as much to render than a dynamic light without shadows.

SkyLight vs SkySphereBlueprint:

  • SkyLight is the most important image-based light source projected from the captured scene or from a HDRI cubemap onto all objects and it can cast shadows too. In offline renderers, SkyLight is Dome Light. Movable SkyLight casts dynamic distance-field ambient occlusion on all objects.
  • SkySphereBlueprint makes background panoramic image for SkyLight to capture, as it is a skybox which shows sky color, weather effects, stars and the sun. Without SkySphere, a cubemap must be provided to SkyLight.

SkyLight vs DirectionalLight: DirectionalLight is a light source infinitely far-away like the sun. DirectionalLight is not affected by the SkyLight.

SkyLight Settings::

  • When SkyLight > Mobility = Movable, set Source Type = SLS Captured Scene to see the skylight influence.
  • When SkyLight > Mobility = Stationary, set Source Type = SLS Specified Cubemap then bake the lighting to see the effects.
  • When SkyLight > Mobility = Stationary, to avoid indoor skymap reflection leak, a SphereReflectionCapture must be placed indoor and its Influence Radius cover just the indoor area.
  • SkyLight > Occlusion Max Distance = 100 (No idea why default value of 1000 would disable reflection captures).
  • SkyLight > Occlusion Contrast = 0.5
  • SkyLight > Occlusion Exponent = 1
  • SkyLight > Occlusion Combine Mode = OCM Multiply
  • Distance field ambient occlusion is enabled only when SkyLight > Mobility = Movable.
  • Distance field ambient occlusion may show blotched white pattern at seams!
  • Use LightmassPortals to channel more SkyLight into the interior.

Exponential Height Fog: Drag the Exponential Height Fog up higher to make thickier fog or drag down below the ground to make lighter fog.

Baked Lighting Settings:

  • World Settings > Num Indirect Lightning Bounces = 100 (Increase indirect lightning sampling. Increase light baking time quite a bit)
  • World Settings > Num Sky Lighting Bounces = 7 (For static skylight. Increase skylight sampling but also increase light baking time by much)
  • World Settings > Static Lighting Level Scale = 0.1, and Indirect Lightning Quality = 10 (Best formula: Scale * Quality = 1. High impact on build time!)
  • World Settings > World Settings > Indirect Lighting Smoothness = 1
  • World Settings > Use Ambient Occlusion = YES (Bake AO)
  • World Settings > Compress Lightmaps = NO (Consume 4x more VRAM and disk space! Small scene only! Compressed lightmaps may show artifacts)
  • Build icon > Lighting Quality = Production (Better quality but slower baking)
  • LightmassImportanceVolume object > Make sure it covers whole scene with twice extra padding of the volume.
  • Light object > Cast Shadows: YES (Only a few shadow-casting lights are optimal).
  • Light object > Use Area Shadows for Stationary = NO (Area shadows are too fuzzy)

Ultra-high Quality Baked Lighting for Archviz

  • Production baked lighting is not enough to make best looking interior Archviz scenes. These BaseLightmass.ini tweaks will prolong light building by 5 to 10 times. Useful for Archviz and let it bake overnight.
  • In Engine\BaseLightmass.ini > NumHemisphereSamples = 256 (This will clean up skylight shadow splotches caused by setting Static Lighting Level Scale = 0.1. Default=16).
  • In Engine\BaseLightmass.ini > NumIrradianceCalculationPhotons=2048 (Default=400)
  • In Engine\BaseLightmass.ini > DirectIrradiancePhotonDensity=1024 (Default=350)
  • In Engine\BaseLightmass.ini > IndirectPhotonDensity=8000 (To prevent light leak. Default value=600)
  • In Engine\BaseLightmass.ini > IndirectIrradiancePhotonDensity=4000 (To prevent light leak. Default=300)

Real-time Light Settings:

  • Blueprints icon > Open Level Blueprint > create “Event BeginPlay” to Execute Console Command: Command r.SSR.Quality 4 and r.PostProcessAAQuality 6
  • World Settings > Force No Precomputed Lighting = NO (or YES to preview real-time lighting only)
  • Project Settings > Rendering > Generate Mesh Distance Fields = YES. (Enabling real-time ray-traced shadows and distance-field AO)
  • Project Settings > Rendering > Support global clip plane for Planar Reflections = YES (or NO if you don’t use Planar Reflection).
  • Project Settings > Target Hardware > Desktop/Console + Maximum Quality
  • Project Settings > Platforms > Windows > DirectX 11 = YES, and others to NO.
  • Settings icon > Engine Scalability > Cinematic
  • Point Light object> Source Radius & Length allows point light to have a shape.
  • Light object > Cast Shadows: YES (Just a few lights are needed)
  • Light object > Raytraced DistanceField Shadows = YES (Distance-field shadows create fast soft shadows instead of the traditional slow shadows)
  • Light object > Mobility = Stationary (if fixed at one place but can change intensity/color) or Movable (fully real-time, not baked into lightmass)
  • Directional Light object > Dynamic Shadows Cascade = 20000
  • Directional Light object > Num Dynamic Shadows Cascade = 4
  • Directional Light object > Dynamic Shadow Distance Movable = 0 to always show Distance Field Soft Shadows but no more trees shadows.
  • Directional Light object > Light Shaft Bloom = TRUE, Bloom Scale = 0.05, Bloom Threshold = 1.
  • For day-night cycle, Main PostProcessVolume object > Min Brightness = 1.5, and Max Brightness = 2 (Day-night looks not too bright, not too dark)
  • For day-only cycle, Main PostProcessVolume object > Min Brightness = 0.03, and Max Brightness = 2 (Dark interior can be seen)
  • Main PostProcessVolume object > Unbound = YES
  • Main PostProcessVolume object > Screen Space Reflections > Intensity = 100
  • Main PostProcessVolume object > Screen Space Reflections > Quality = 50 (Very expensive when > 50)
  • Main PostProcessVolume object > Screen Space Reflections > Max Roughness = 0.99 (Increase cleaness/glossiness)
  • Main PostProcessVolume object > Ambient Occlusion > Bias = 1 (Increase small details)
  • Main PostProcessVolume object > Ambient Occlusion > Quality = 99 (This decreases 5 to 10 fps but worth it for ArchViz)
  • Main PostProcessVolume object > Vignette > Intensity = 0 (Disable vignetting)
  • Main PostProcessVolume object > Blend Weight = 1 (1 shows 100% effects, 0 shows 0%).
  • Secondary PostProcessVolume object > Unbound = NO and make sure it covers only a small area.
  • Large objects (such as walls) > Static Mesh > Distance Field Resolution Scale = higher for better Distance Field resolution.
  • Large objects (such as walls) > Static Mesh > Two-Sided Distance Field = YES

Dynamic Global Illumination (LPV):

  • LPV is a real-time Global Illumination built into UE4 but disabled by default. For outdoor scenes, LPV rocks!
  • In Config/DefaultEngine.ini > Under [Startup] section (create if doesn’t exist) > r.LightPropagationVolume = 1
  • Directional Light > Mobility = Movable
  • Directional Light > Dynamic Indirecting Lighting = YES
  • Unbound PostProcessVolume object > Light Propagation Volume > Intensity = 2 (Tweak it between 1 and 10)

Reflection Capture:

  • All Reflection Captures > Brightness = Individually Tweaked Values (try sliding it up to 3 or more to see)
  • Any Reflection Capture > click Update Captures after making any change to reflection captures.

Area Lights: Place Lightmass Portal actor on every door and window opening, slightly larger than the opening. This will allow GI light to pass through the wall/window mesh and light up the interiors.

Leave a comment