The primary goal is to shift the heavy Lumen tracing tasks to asynchronous threads and optimize the Surface Cache, which is responsible for how light bounces off your machines.
File Path & Setup
- Navigate to:
%LocalAppData%\FactoryGame\Saved\Config\Windows\ - Locate:
Engine.ini - Pro Tip: After applying these, if you have an RTX card, ensure DLSS Ray Reconstruction is enabled in-game. It replaces the heavy software denoiser with an AI-driven one, offering a cleaner image at a lower cost.
Optimized “Lumen-Stable” Configuration Table
| Parameter | Recommended Value | Technical Purpose |
r.Lumen.DiffuseIndirect.AsyncCompute | 1 | The FPS Booster. Moves GI calculations to idle GPU cycles. |
r.Lumen.SceneLighting.UpdateSpeed | 0.5 | Slows down light transition updates to save CPU overhead. |
r.AOGlobalDistanceField.MinMeshSDFRadius | 14 | Fixes the “Sign Light” bug, making emissive signs cast light more efficiently. |
r.Lumen.ScreenProbeGather.Temporal.MaxFrames | 64 | Increases frame accumulation to remove “graininess” in dark factories. |
r.Lumen.HardwareRayTracing | 0 | Forces Software Lumen (much faster for 90% of players). |
[SystemSettings]
r.Lumen.DiffuseIndirect.AsyncCompute=1
r.Lumen.Reflections.AsyncCompute=1
r.Lumen.SceneLighting.UpdateSpeed=0.5
r.Lumen.SceneLighting.HardwareRayTracing=0
r.AOGlobalDistanceField.MinMeshSDFRadius=14
r.Lumen.ScreenProbeGather.Temporal.MaxFramesAccumulated=64
r.Lumen.Reflections.Temporal.MaxFramesAccumulated=64
r.Lumen.Reflections.MaxRoughnessToTrace=0.2
r.LumenScene.SurfaceCache.CardTexelDensityScale=0.5
HowTo: Engineering the Ultimate Factory Lighting
Follow these GameEngineer.net technical steps to balance aesthetics with efficiency:
- Async Compute Toggle: By setting
r.Lumen.DiffuseIndirect.AsyncCompute=1, you allow the GPU to calculate Global Illumination in the background while it’s busy rendering geometry. This can stabilize 1% low framerates in dense factory areas. - Fixing the “Sign Noise”: Emissive signs are often used as lights in 2026. The command
r.AOGlobalDistanceField.MinMeshSDFRadius=14(the “sweet spot”) reduces the visual noise and flickering that occurs when signs are the primary light source. - Temporal Accumulation: If your factory looks “sparkly” or grainy in the shadows,
r.Lumen.ScreenProbeGather.Temporal.MaxFramesAccumulated=64is your fix. It blends more previous frames into the current one, smoothing out the light at the cost of slight “ghosting” when you move very fast. - Surface Cache Optimization:
r.LumenScene.SurfaceCache.CardTexelDensityScale=0.5reduces the resolution of the internal “hidden” version of the world that Lumen uses to calculate light. This drastically reduces VRAM usage without a noticeable change in visual quality. - Reflections vs. GI: If you still struggle with performance, keep Global Illumination on High but set
r.Lumen.Reflections.Allow=0. This falls back to Screen Space Reflections (SSR) while keeping the beautiful global bounces of light.
Technical Explanation: Trace Overhead ($T_{trace}$)
In Satisfactory, Lumen uses Software Ray Tracing by default, which relies on Mesh Distance Fields ($MDF$). When you have thousands of constructors and belts, the “Trace Budget” ($T_{budget}$) is easily exceeded.
By adjusting the UpdateSpeed and CardTexelDensityScale, we reduce the number of rays the engine has to fire per second. Instead of updating every light bounce instantly, the engine spreads the work over a few milliseconds longer. In a factory simulation where the environment is mostly static, this “slow” update is invisible to the eye but grants a massive 15-20% performance uplift ($P_{gain}$).