Spring Sale: 30% off bundles with SPRINGBUNDLE or 15% off individual products with SPRING15 — ends Apr 15

StraySparkStraySpark
ProductsFree AssetsDocsBlogGamesAbout
StraySparkStraySpark

Game Studio & UE5 Tool Developers. Building professional-grade tools for the Unreal Engine community.

Products

  • Complete Toolkit (Bundle)
  • Procedural Placement Tool
  • Cinematic Spline Tool
  • Blueprint Template Library
  • DetailForge
  • UltraWire
  • Unreal MCP Server
  • Blender MCP Server
  • Godot MCP Server

Resources

  • Free Assets
  • Documentation
  • Blog
  • Changelog
  • Roadmap
  • FAQ
  • Contact

Legal

  • Privacy Policy
  • Terms of Service

© 2026 StraySpark. All rights reserved.

Back to Blog
tutorial
StraySparkApril 6, 20265 min read
UE5 Lumen Optimization Guide: Achieving 60fps with Dynamic Global Illumination 
Unreal EngineLumenOptimizationLightingPerformance

The Lumen Performance Challenge

Lumen gives you fully dynamic global illumination and reflections — no more baking lightmaps, no more waiting hours for light builds. But that dynamism comes at a GPU cost, and hitting 60fps with Lumen enabled requires deliberate optimization.

The good news: with the right settings, Lumen can run at 60fps on mid-range hardware. The key is understanding which settings have the biggest performance impact and where you can trade visual quality for frames.

Understanding Lumen's Two Rendering Paths

Lumen offers two main ray tracing methods:

Software Ray Tracing (Default in older versions)

  • Uses screen-space traces + signed distance fields
  • Works on all hardware (no RT cores required)
  • Lower quality, especially for off-screen reflections
  • Cheaper per-ray but needs more rays for quality

Hardware Ray Tracing (Recommended, Default in UE 5.5+)

  • Uses GPU RT cores for acceleration
  • Higher quality traces with fewer rays needed
  • Requires RTX 2000+ or RX 6000+ series GPU
  • Better for reflections and complex geometry

Starting with UE 5.5, Hardware Ray Tracing is the default and recommended path. If your target hardware supports it, use it — you'll get better quality at comparable or better performance.

Essential CVars for Performance Tuning

These console variables have the most impact on Lumen performance. Add them to DefaultEngine.ini under [/Script/Engine.RendererSettings] or adjust via scalability settings.

Global Illumination Quality

; GI quality - lower means fewer traces per pixel
r.Lumen.DiffuseIndirect.Allow=1
r.Lumen.TraceMeshSDFs=1

; Trace quality (1=low, 4=epic). 2 is the sweet spot for 60fps
r.Lumen.ScreenProbeGather.TracingOctahedronResolution=2

; Temporal accumulation - higher means smoother GI but more ghosting
r.Lumen.ScreenProbeGather.TemporalFilterProbes=1

Reflection Quality

; Reflection quality (0=off, 1=low, 4=epic)
r.Lumen.Reflections.Allow=1

; Max roughness for reflections - lower saves performance
r.Lumen.Reflections.MaxRoughnessToTrace=0.4

; Reflection downscale factor (2=half res, saves significant GPU time)
r.Lumen.Reflections.DownsampleFactor=2

Hardware Ray Tracing Specific

; Enable HWRT for Lumen
r.Lumen.HardwareRayTracing=1

; Hit lighting mode (0=surface cache, 1=hit lighting for reflections)
; Surface cache is cheaper, hit lighting is higher quality
r.Lumen.HardwareRayTracing.Reflections.HitLighting=0

; Max ray distance - shorter saves performance in interior scenes
r.Lumen.HardwareRayTracing.MaxTraceDistance=10000

Resolution Scaling

; Lumen scene resolution (0.5=half, 1.0=full). 0.5-0.75 is good for 60fps
r.Lumen.SceneUpdateRayTracingBudget=0.5

; Final gather resolution scale
r.Lumen.ScreenProbeGather.ScreenProbeDownsampleFactor=16

Scene-Level Optimization

CVars are only part of the equation. How you build your scene matters just as much.

Light Complexity

Every light source adds tracing cost. Optimize by:

  • Limiting overlapping lights: Keep no more than 4 dynamic lights affecting any single surface
  • Using attenuation radius: Set tight radius bounds on point and spot lights
  • Disabling "Affect Global Illumination" on small accent lights that don't need to bounce
  • Using static lights where appropriate: Lumen works alongside baked lighting — use static lights for unchanging fixtures

Mesh Complexity and Distance Fields

Lumen's software path relies on Mesh Distance Fields. Optimize them:

  • Enable Generate Mesh Distance Field only on meshes that matter for GI (walls, floors, large objects)
  • Disable it on small props, particles, and highly detailed meshes
  • Set Distance Field Resolution Scale to 0.5 on less important meshes
  • Use simpler collision meshes for distance field generation

Material Considerations

Certain material properties affect Lumen performance:

  • Emissive materials: Keep emissive surface area reasonable — large emissive surfaces increase tracing cost
  • Translucent materials: Lumen doesn't trace through translucent surfaces — design accordingly
  • Two-sided foliage: More expensive for Lumen — use single-sided where possible
  • Surface cache: Ensure important surfaces have good UV coverage for the Lumen surface cache

Profiling Workflow

Never optimize blind. Use these tools to identify your actual bottlenecks:

GPU Profiler

profilegpu

Look for these Lumen-specific passes:

  • Lumen Scene Update: Time spent updating the scene representation
  • Lumen Screen Probe Gather: Main GI computation
  • Lumen Reflections: Reflection trace cost
  • Lumen Radiosity: Indirect bounce computation

Unreal Insights

For detailed per-frame analysis:

  1. Launch with -trace=default,gpu
  2. Open the Timing Insights panel
  3. Filter for "Lumen" to see all related passes
  4. Compare frame times across different camera positions

Stat Commands

stat GPU           // Overall GPU timing breakdown
stat LumenScene    // Lumen-specific statistics
stat RHI           // Memory and resource usage

The 60fps Budget

At 60fps, you have 16.67ms per frame total. A typical budget allocation:

PassBudget
Lumen GI3-4ms
Lumen Reflections1-2ms
Lumen Scene Update1ms
Nanite Rasterization2-3ms
Shadow Rendering2ms
Post Processing1-2ms
Game Logic + CPU3-4ms
Total~16ms

If Lumen is taking more than 5-6ms combined, you need to reduce quality settings or simplify your scene.

Scalability Profiles

Set up proper scalability so players can adjust Lumen quality:

Low (Integrated GPU / Steam Deck)

  • Lumen GI: Disabled (fall back to SSGI or baked)
  • Lumen Reflections: Disabled (fall back to SSR)
  • Use Screen Space Global Illumination as fallback

Medium (GTX 1660 / RX 580)

  • Lumen GI: Software, reduced resolution
  • Lumen Reflections: Disabled or minimal
  • r.Lumen.ScreenProbeGather.TracingOctahedronResolution=1

High (RTX 3060 / RX 6700)

  • Lumen GI: Hardware RT, standard resolution
  • Lumen Reflections: Enabled, half resolution
  • r.Lumen.ScreenProbeGather.TracingOctahedronResolution=2

Epic (RTX 4070+ / RX 7800+)

  • Lumen GI: Hardware RT, full resolution
  • Lumen Reflections: Enabled, full resolution
  • r.Lumen.ScreenProbeGather.TracingOctahedronResolution=4

Common Performance Traps

The Large Open World Trap

Lumen traces are more expensive in open environments with long view distances. Mitigation:

  • Use Far Field settings to reduce trace quality at distance
  • Set shorter max trace distances for outdoor scenes
  • Consider hybrid approaches: Lumen indoors, simpler GI outdoors

The Emissive Surface Trap

Large emissive surfaces (TV screens, lava pools, neon signs) force Lumen to trace from many directions. Keep emissive surfaces reasonably sized and use the Emissive Boost carefully.

The Mirror Trap

Highly reflective surfaces (mirrors, polished metal) require high-quality reflection traces. Limit the number of mirror-like surfaces in any single view, or reduce their reflection quality individually.

The Small Object Trap

Tiny objects with high geometric detail create expensive distance fields. Use LODs or disable distance field generation on small props.

Quick Wins for Immediate Performance Gains

If you're over budget, try these in order of impact:

  1. Reduce reflection quality: r.Lumen.Reflections.DownsampleFactor=2 — often saves 1-2ms
  2. Lower trace resolution: r.Lumen.ScreenProbeGather.TracingOctahedronResolution=2 — saves 1-3ms
  3. Disable hit lighting on reflections: r.Lumen.HardwareRayTracing.Reflections.HitLighting=0 — saves 0.5-1ms
  4. Reduce max roughness for reflections: Only trace reflections on smooth surfaces — saves based on scene content
  5. Tighten light attenuation radii: Reduces the volume Lumen needs to trace
  6. Enable upscaling: Use TSR, FSR, or DLSS to render at lower internal resolution

Lumen + Nanite: The Power Combo

Lumen and Nanite are designed to work together. Nanite's virtualized geometry provides accurate surface cache data for Lumen, while Lumen's hardware RT traces benefit from Nanite's BVH acceleration structure.

For the best results:

  • Enable both Nanite and Lumen on the same meshes
  • Ensure Nanite meshes have good UV layouts for the surface cache
  • Use Nanite's automatic LOD to keep geometric complexity manageable for Lumen traces

Dynamic global illumination at 60fps is achievable — it just requires understanding the system and making informed tradeoffs. Profile, iterate, and don't be afraid to reduce quality where players won't notice the difference.

Tags

Unreal EngineLumenOptimizationLightingPerformance

Continue Reading

tutorial

Getting Started with UE5 PCG Framework: Build Your First Procedural World

Read more
tutorial

Nanite Foliage in UE5: The Complete Guide to High-Performance Vegetation

Read more
tutorial

How to Set Up an MCP Server for Unreal Engine 5: AI-Powered Editor Automation

Read more
All posts