[Linux/Vulkan 5.4.4] Lumen diffuse indirect contributes exactly zero while the Surface Cache updates normally

Summary

Note: This report accompanies the crash report filed the same day (October 23, 2026), titled “[Linux/Vulkan 5.4.4] r.GlobalDistanceField.Debug.ShowStats asserts the editor in the Vulkan RHI”. Both defects were measured in the same sessions on the same setup described below.

Engine version: Unreal Engine 5.4.4 (launcher build, unmodified). Platform: Linux editor, running headless (no display attached) on a cloud host. Renderer: Vulkan. GPU: NVIDIA RTX A5000 (discrete). Project: an open world city blockout, 296 static mesh components built from 4 basic shapes (Cube, Cylinder, Cone, Sphere) scaled to building size, one master material. Captures are SceneCapture2D at 1920x1080, cross checked against a real game view capture, which matches; every number below is a true read of the rendered frame.

With every Lumen setting verified correct inside the same process that takes the measurement, switching the dynamic GI method between Lumen and None changes the rendered frame by exactly zero. Direct light works. The Lumen Surface Cache updates on level reload. The indirect contribution itself is absent in a full city level and in a minimal two mesh diagnostic level, under both the SM5 and SM6 shader platforms.

What Type of Bug are you experiencing?

Rendering (Graphics / Niagara)

Steps to Reproduce

  1. Create a level with two freshly imported static meshes (a box and a floor), a Movable directional light, a Movable skylight, and a plain nonmetal mid gray material. Lock exposure (manual, bias 0.0).
  2. Capture the frame with the dynamic GI method set to Lumen.
  3. Capture the same frame with the dynamic GI method set to None.
  4. Grade both frames. On this platform and build they are identical, although the receiver surface is placed to receive bounced light from the lit surface.

Expected Result

The two frames differ: with the dynamic GI method set to Lumen, the receiver surface receives bounced (indirect) light from the lit surface, so the Lumen frame shows indirect illumination that the frame with GI set to None lacks.

Observed Result

On this platform and build the two frames are identical, byte for byte: Lumen diffuse indirect contributes exactly zero. The diagnostic level is provably lit by direct light at 89.54 mean luminance (near black fraction 0.2812) and still reads 89.54 with Lumen on and with Lumen off, warm and after a cold restart. The Lumen Surface Cache updates on level reload, but the final frame receives nothing.

Affects Versions

5.4

Platform(s)

Linux

Additional Notes

Measured results:

  • Production day level: mean luminance 48.07 with Lumen, 48.05 with GI set to None. Near black fraction 46.7 percent both ways. The facade band is identical to two decimal places. (Our pass bar for the day frame is under 15 percent near black.)
  • Production night level: 78.3 percent near black.
  • Diagnostic level (fresh imported box and floor, Movable sun at intensity 3.0, Movable skylight at 1.0, plain mid gray material, exposure locked): provably lit by direct light at 89.54 mean luminance, near black fraction 0.2812, and still 89.54 with Lumen on and with Lumen off, warm and after a cold restart. Every frame in that session is byte identical to the next.
  • The same zero was measured under the SM6 shader platform, with the loaded platform verified in the boot log (Vulkan SM6 profile, VULKAN_SM6 shader names). Not a single pixel moved.
  • Lumen Surface Cache activity is present: on level reload the log shows Surface Cache Updates of 116, then 16, 16, 37. Meshes register and update; the final frame receives nothing.
  • The unlit base color of the production facades measures mid bright (95.64 luminance, 5.44 percent near black) while the lit frame’s facade band reads 40.9 luminance and 39.24 percent near black. The surfaces are fine; the light is not arriving.

Settings verified in the measuring process: sg.GlobalIlluminationQuality = 3; r.DynamicGlobalIlluminationMethod = 1; r.ReflectionMethod = 1; r.GenerateMeshDistanceFields = 1; r.DistanceFieldAO = 1; r.Lumen.DiffuseIndirect.Allow = 1; every Lumen intensity that exists on the post process volume reads 1.0; bAffectDistanceFieldLighting reads True on all sampled components. PostProcessSettings on this build has no lumen_diffuse_indirect_intensity property at all (checked directly).

Distance field state: Software tracing depends on mesh distance fields, and no distance field build has ever been observed on this setup. The project setting is on and the per mesh flags read True. The Distance Field Resolution Scale was written through the editor subsystem’s official LOD build settings calls, with readback proving the value landed (2.0999) on all four shape assets. Result across every log: zero distance field build lines, zero atlas lines. A genuine fresh import of new meshes also produced no build line and no bounce. ResavePackages does not force a build. Note: we are aware a resolution scale near 2 is reported to make meshes stop using their distance field; the diagnostic level’s fresh meshes carry the default scale and show the same zero, so the scale does not explain the diagnostic result. Whether any mesh distance field data exists at runtime is exactly what Defect A’s instrument would have told us.

Hardware ray tracing cannot be tested as the alternative path: On the SM5 platform the renderer logs that Vulkan ray tracing is disabled because the SM6 shader platform is required (r.RayTracing.RequireSM6=1). Under SM6, setting r.RayTracing to 1 in the project configuration takes at the configuration layer (the project setting echo reads 1), and the same boot enumerates the card’s ray tracing extensions as present and enabled, but at renderer init the engine answers, verbatim: “Ray tracing is disabled. Reason: disabled on current platform.”

Already ruled out, all measured: scalability settings, zeroed intensities, components opted out of distance field lighting, dark textures, stale skylight data, bad saves (four independent cold reloads reproduce every number exactly), shader compile failures (zero in any session log), stationary versus movable lights (both measured, both zero), and the capture path itself (a game view cross check agrees with the SceneCapture2D grades).

What a resolution would unblock: Either (1) a fix or a supported method to make Lumen diffuse indirect execute on UE 5.4.4 Linux/Vulkan, including a headless method to force and verify mesh distance field generation; or (2) a documented statement of the limitation: that Lumen indirect lighting, the global distance field debug tooling, or hardware ray tracing is not supported on Linux/Vulkan in 5.4.4, and in which later version each item is supported. Our project is gated on this. Indirect lighting is the last blocker before our first production phase can start, and every other explanation we could measure has been measured and ruled out. We can supply full editor logs, the diagnostic level, and session records on request.