Lumen GI is screen space?

I made a simple archviz scene, and whatever indirect light I have from my directional light goes away and GI goes dark when I look up and my direct lighting is out of screen. is this how it works?

It’s eye adaptation. From what I can tell eye adaptation does not take GI into account, only direct light. This means that you can’t have space that is only lit by GI, you need to have direct light. Consequently it means that the current Lumen solution is only viable outdoors unless this is addressed.

Does lumen require eye Adaptation? Turning it off made light stop flickering on and off when I get away from the direct light source and more into the GI spots. But lumen gives a lot less GI with it off.

Does it need Eye adaptation?

Watch today’s stream: Lumen | Inside Unreal - YouTube

They talk about that issue and how to fix it.

When? I didn’t catch any talk about eye adaptation.

I did not say it was because of eye adaptation. When certain “conditions” are not met on a surface, Lumen resorts to SSGI and essentially turns the bounce lighring off when light part of a surface is not in view.

You can view what surface will and will not bounce light even when off screen by turning on Visualization / Lumen Scene, then input the console command ‘r.Lumen.DirectLighting.ForceOffscreenShadowing 1’

He explained and demoed it during the stream right when the editor crashed on him. It’s also mentioned here at the very bottom of the page: “Mismatch Between Shadow Maps and Ray-Traced Shadows” Lumen Technical Details | Unreal Engine Documentation

Lumen solution is only viable outdoors unless this is addressed

Just turn off eye adaptation. You could even do it with a postprocessing volume that overrides the global volume, only for indoors.

In general, eye adaptation lets you get away with unnatural scene lighting levels/conditions, that may end up looking as artistically intended in normal conditions, but that responds poorly to any global or physical changes. I would look into setting up lighting based on “physical” parameters, without eye adaptation, and then controlling exposure using post process volumes, if I wanted control of lighting in a way that’s physically realistic.

Ok, so got some time at the PC. Here is en example of the issue:

First image with sun spot on plane. This is what we want consistently when moving the camera:

How it looks with Visualize | Lumen Scene:

Now with r.Lumen.DirectLighting.ForceOffscreenShadowing 1 :thinking:


Notice the floor is completley black here.

Result when looking up enough for sun spot on plane to go off screen:


Notice how room got darker and all bounce light from floor is gone.

Now fixing the issue, this is how the floor should look in Visualize | Lumen Scene with the console command active:

Now this is the result when looking up:

Now Lumen preserved the light bounces from the floor even when the Sun spot is off screen.

Video of me breaking and fixing the floor for Lumen: https://www.youtube.com/watch?v=pYIpFcahGo8

Hope this helps.

5 Likes

While i’m here, what’s up with auto exposure, sometimes called eye adaption? Why does it make such a difference in light? I thought it simply made it so when viewing light from a previously dark area, it slowly shows up, not completely change how light looks?

Exposure doesn’t really change the lighting. Look at it this way: 0 is complete dark while 1 is full white, the engine can only see within a range of 0.2 (for example) of that 0 to 1 range. So if your scene is light at 0.7 brightest and 0.3 darkest of that 0-1 scale, exposure moves to compensate showing 0.6-0.8, but everything from 0.81-1 is overexposed and everything from 0-0.59 is underexposed.

What you can do to work with the exposure is light up your scene within the range; this means your shadows lets say at the 0.4 range and light parts at the 0.6 range (again numbers totally made up to illustrate a point), this will allow you to set exposure to cover the entire range of 0.4-0.6. This is the same as how lighting is worked in films, which is measured in stops of light.

For this specifically it would be a dream come true if unreal had a False Color filter to help with exposure.

1 Like

thanks for your examples and video. really appreciate the bit of knowledge shared there. That being said, I still cannot find a solution to this. I have not scaled any of the mesh geo, which your video demonstrates to keep your mesh scale at 1.

I have also tried your command line, but that just disables everything you see in Visualize - Lumen Scene…so I can see how that affects the lighting. But then when I go to Visualize - Lumen Global Illumination, I still get dips in my exposure - even after I have input the console command you mentioned which Forces Offscreen Shadowing. I also tried to set the command line to 0 r.Lumen.DirectLighting.ForceOffscreenShadowing 0 in hopes it would help rectify the problem, no luck.

Not sure how to fix it as I’ve been scouring the forum and internet all day trying to fix it! Totally doing my head in and this point. I see in your video you’re still getting GI bounces from the ground even tho it’s not visible anymore. Totally not working for me.



1 Like

Setting this line to 1 does not disable lighting, what it does is remove what light is being emitted with screen space. So if in the debug view the SM seems to be"off", it means it’s actually not bouncing as it should and Lumen will resort to SS. It is not a dip in exposure.

Your goal should be have the floor or any SM bounce light with r.Lumen.DirectLighting.ForceOffscreenShadowing set to 1.

You can test this out by adding a regular cube in the sunlights path, the bounce light from the cube should be visible when you look away, and it would appear lit in the debug view.

To help you with this scene, I would need to see how big is your floor, if there is any other SM (possibly with flipped normals) in the way, if it was imported from a DCC without freezing transformations, etc.

I found a solution that might be applicable for others experiencing this issue.

I ran into this same issue and attempted the techniques described above. Like @ble3kaudio I had no luck with any of the described solutions. I could see that the light on my ground mesh was only visible when FoceOffscreenShadowing was set to 0. When set to 1, the light spot on the ground mesh was absent (it was entirely black) and thus did not contribute to GI.

I tried adjusting the scale and position of my ground mesh as recommended to no avail. I added a default cube on the ground. The issue persisted in all cases.

The notes in the documentation that @pezzott1 kindly linked gave a hint that helped me find the issue for my use case: “Lumen reuses the Renderer’s shadowmaps for shadowing the Lumen Scene. However, these are only available for on-screen positions. For off-screen surfaces, Lumen uses ray tracing for shadowing.”

If the surface receiving the light wasn’t the problem I wondered if there was some issue with meshes that might be casting shadows and occluding the light spot.

I had a ring-like mesh near the hole the light came through. Upon inspection, it appeared this mesh was positioned between the directional light source and the spot on the ground. With the angle of the directional light and the position of the opening, it should have been blocking the light altogether.

I wondered if this mesh wasn’t detected by the Renderer so its shadow didn’t show up in the Renderers shadowmap (used when the light spot on the ground was visible on-screen), but that it was detected by the Ray Tracer and therefore its shadow occluded the light spot on the ground completely when Lumen switched to the Ray Tracer (used when the light spot on the ground was off-screen).

I tested by hiding that mesh, and the issue was gone. The GI/reflected light was visible on surrounding surfaces even when the light spot was offscreen.

Reviewing the video posted by @ble3kaudio, it might be that they have the same issue. It could be that the windowpane mesh is occluding the directional light in the Ray Tracer for some reason, but not in the Renderer. They might test by deleting that mesh from the scene and ensuring there is no other mesh between the light source and the spot on the floor, and see if the issue persists.

I haven’t determined why this mesh is not visible to the Renderer but visible to the Ray Tracer in my case. It may have to do with my mesh’s thickness - it’s only a ring that is a single plane thick (with a two-sided material so it can be seen from inside the room and outside), so a thicker mesh may be needed. And while it’s thin, it’s also quite large, encompassing the entire room - which is a no-no for Lumen lighting. So I’ll be redoing it in any case.

Hope this helps!

3 Likes

Was this ever resolved?

I just started out with UE5, and to my eye it looks like the auto exposure is inverted?

Lumen relies on having good distance fields setup for most/large assets in your scene. Make sure you have distance fields enabled, and check the lumen views under the “Lit” menu options in the viewport.

You’re right my window mesh is too thin,even though it’s just a frame I fixed that and it’s work normaly,thanks!

1 Like

is there a proper fix for this already? turning off eye adaptation isn’t a possibility for me, I need to go from an exterior environment into a GI only lit interior and I’d like that to look natural.

1 Like