Lumen GI and Reflections feedback thread

VERY VERY BAD BUG IN LUMEN
how we can disable skylight cubemap reflection in lumen ?

skylight intensity 1 = good water


skylight intensity 10 = bad reflection on water

blocked all windows
again skylight reflection ?
how we can have skylight reflection in the interior without windows ?

there is not specular parameter in skylight setting

You’re right, it’s not hooked up for some reason. I’ll add that to the list.

Some issues seem to have returned with the UE5.0 full version. @
Very dark undersides of the leaves. You can also see the lumen view.

Sorry for late reply. Unfortunately I introduced some serious artifacts when I added proper support for Two Sided Foliage shading to Lumen (gathering lighting from both sides of the leaf), and I realized it was going to be a large undertaking to fix, and way too risky to try to slip in two days before 5.0 release, so I had to revert it.

That’s what I get for showing results too early =( It’s on the list

I had to revert Lumen supporting Two Sided Foliage as there was a fundamental flaw to my approach that I couldn’t safely fix right before 5.0 release. Sorry for the tease, I should have tested better before showing results.

Hi, this looks like a difference between Virtual Shadow Maps (new default in UE5) and regular Shadow Maps (default in UE4). You can switch back to regular Shadow Maps in the project settings - search Shadow Map Method.

That’s not related to Lumen though, best to ask shadowing questions in another thread.

1 Like

This is a bug that made it into release, you can work around with ‘r.Lumen.ScreenProbeGather.IrradianceFormat 0’

5 Likes

Hi , when I investigated your scenes before this was due to the meshes not being modular enough for Lumen’s Surface Cache to unwrap. Check the Lumen Surface Cache viewmode, if it’s all pink then that’s your problem. From the doc:

Only meshes with simple interiors can be supported — walls, floors, and ceilings should all be separate meshes. Importing an entire room, which includes furniture, in a single mesh is not expected to work with Lumen.

Even if that particular case worked better in Early Access, we’re moving forward with what we have now, which works much better on scenes that were built to Lumen’s content requirements (modularly built).

1 Like

No, the distance field implementation in UE5 is improved in a lot of ways:
sparse (only stored around geometry), streamed (with mipmaps), 2x higher resolution by default, 10x faster generation (although mostly canceled out by resolution increase). Better biasing (avoid self intersection on large objects), better representation of thin objects.

DFAO works for large scale occlusion, and with ‘r.AOQuality 1’ you can get the super fast mode that only uses the Global Distance Field. Quality is limited though, as it was targeting last generation consoles.

This looks like a precision problem, does it go away if you move closer to the world origin? If so, that will give us a clue on how to fix it.

The increased noise on High scalability is due to a faster setting Lumen uses on High:
r.Lumen.ScreenProbeGather.StochasticInterpolation=1

You can override that to 0 in your DefaultScalability.ini to reduce the noise, at a slight cost.

1 Like

Yes that’s definitely something we can implement, and want to improve. We already have automatic change detection for the direction light and skylight intensities (like if you switch from day to night) but not on any local lights.

  1. Lumen only uses Radiosity for lighting the Surface Cache, which is only seen indirectly through reflection or final gather rays. Lumen uses radiance caching for the main final gather (solving the first diffuse bounce) which is resampled for rough specular, as well as additional reflection rays for smoother reflections when roughness is below .4.

Check my Siggraph talk on Lumen’s Final Gather for more details:

  1. Yes Radiosity requires finite elements, for Lumen these are the Surface Cache texels. We trace from Surface Cache texels against the Global SDF, then sample last frame’s lighting at the hit, that gives infinite diffuse bounces through feedback. However if you do that naively you get a bunch of noise artifacts, so the Radiosity gather has some techniques to make the best use of a small number of rays (caching, probe interpolation and occlusion, spatial filtering, temporal accumulation).

  2. Screen and world space radiance probes are tracing rays which hit the Lumen Scene and sample its lighting (direct + indirect from Radiosity). When you set Ray Lighting Mode to Hit Lighting, it instead recalculates direct lighting at the hit point (tracing new shadow rays to each light), but still uses the Surface Cache at the hit point for indirect.

Basically Lumen Scene is only used for multi-bounce (and GI seen in reflections) while the Final Gather (using screen + world space radiance caches) is solving the first diffuse bounce with way higher quality, and solving rough reflections.

Try cranking up Final Gather Quality in the PPVolume

That’s probably from Lumen’s optimization for rough specular - it reuses the diffuse rays for any roughness values greater than .3. You can try raising r.Lumen.Reflections.MaxRoughnessToTrace, however Lumen Reflections can’t really handle denoising such rough reflections (nor is it performant).

There were two improvements for foliage over-occlusion:

  1. Two Sided shading mode, which I had to revert
  2. Reduced Global SDF over-occlusion, which made it in

I’m not aware of any changes that would have made foliage darker in 5.0 release compared to preview 2, other than the two sided shading model thing.

That said, you can tweak just how much the Global SDF over-occludes with:
r.LumenScene.GlobalSDF.UncoveredExpandSurfaceScale
r.LumenScene.GlobalSDF.UncoveredMinStepScale

Those aren’t enough though, there will still be black spots where the Global SDF says ‘fully occluded’ incorrectly. It’s something we have to fix.

2 Likes

Lumen Surface Cache does use the Ray Tracing Quality Switch, however the problem is Lumen Screen Traces are just reusing what’s on the screen so these kind of ‘different Lumen Scene than main view’ techniques just cause view dependent lighting due to Screen Traces.

Lumen doesn’t support tiled rendering yet, and it will likely be very difficult to support due to heavy use of screen space operations that will introduce seams at tile boundaries.

Yes that’s a problem. We do want to add Hit lighting to every method and eventually a full Hit Lighting path that doesn’t use any Surface Cache, but that’s pretty far out. We can probably fix most of the foliage over-occlusion while using HWRT by just evaluating the opacity mask during traversal, without full Hit Lighting. I’ll add that to the list.

I’ll add to the list. We should be able to handle source length, however shadowing from a long line light is still going to operate on the center.

1 Like

Lumen reflections on translucency are lower quality and leak, although usually the leaking is limited to ~2m. This is more leaking than I expected. The new (5.1) High Quality Translucency Reflections fix this, at least for the frontmost layer.

1 Like