Why Lumen Is Causing Pitch Black Shadows Inside Buildings With Windows

Update: I still haven’t found a solution…I tried several things…this is what I found

  1. You can Disable Distance Field Shadows on an object to fix it (Such as removing the window and frame then setting the scale to 0
  2. You can scale up the object and the holes will appear in the Lumen Scene. Seems Lumen is a bit too sensitive to small opening…so sensitive that if the window isn’t big enough no light will get in.

Ok so I started off not knowing what was really going on…

As You’ll see this is what I was getting…

I went through the trouble of setting up Interior Rect Lights in the Windows thinking Lumen just wasn’t bouncing Light around…It Was…The revelation came when I brought a building into the scene and got this.

I knew something was up and I remembered Distance Fields were used with Lumen.
So, I used the Lumen Scene Visualizer.

It wasn’t until after I checked the other building it all made sense.

Basically, I came to realize that Lumen was reflecting the light…Treating it as a solid wall since there wasn’t but tiny holes in the surface barely any light was getting through.

This isn’t a guide, basically me sharing this on the forum for others searching for an answer…Adjusting the Distance Fields on those meshes may fix it…but if anyone has any suggestions let me know because I’m kind of new to Lumen and Modifying Distance Fields.

Ok so I just looked into this, and you may be able to replace the Distance field with a Custom Mesh…It doesn’t appear that increasing resolution helps…which I didn’t really expect it would

If you really wanted, you could turn Distance Fields off by setting the Resolution to 0 but then you wouldn’t receive any shadows from that surface.

Note: You’ll have to increase Indirect Lighting on your Directional Light to get the Interiors brighter.

I talked to the Creator of the buildings, and he pointed out that Lumen works best with Nanite, since it currently doesn’t support Transparency, I can’t use it with the window meshes but this should be resolved once UE 5.1 is released.

Update: I don’t actually think 5.1 will support Transparency, I was thinking of Masked Materials.
I have been told though that 5.1 will improve Lumen…for what that’s worth.

I’ve found that the best way to handle this is to separate the window geometry into its own mesh and disable “Affects Distance Field Lighting” or as you discovered, set the distance field resolution to 0 to disable distance fields for the window mesh entirely.

This ensures you still get proper indirect lighting from the main wall, and only the window geometry is ignored (it will still be picked up by screen traces, which typically looks fine)

This is only an issue in software raytracing, as the rays have to traverse the global distance field which is really low resolution.

1 Like

Nanite supports translucency now? That’s news to my eyes, I knew it gained support for WPO, PDO, and masking, but not translucency.

If that’s true however, I am both bewildered as to how they made that happen, and extremely excited.

Yeah I don’t know why I said that, I was thinking Masked materials but Transparency is different. I played around with it more and realized that Lumen doesn’t like the Window frames…if I scale the mesh up the holes start appearing around them…it must have serious issue’s resolving window frames…I’m not really sure how to fix that either…I know disabling distance fields lets light through but it’s not feasible to do that and I now know you can also scale the mesh up and it seems to fix that as well…I would be interested if there were a way to tweak that so that it does a better job at forming around window frames without scaling them up.

Yeah for now this may actually be the only real solution

There are ways to tweak it, but unfortunately most of the scalability settings do require HWRT. FOR SWRT, you can increase the distance field voxel density to get better resolution, as thin geometry tends to be a problem. Scaling up the mesh means a lower-rest voxel grid is taking up more and more world-space volume, which often results in light-leaking. If you have visualization screenshots I might be able to understand better.

And ignoring distance field lighting may be acceptable, I also know there are ways of having something stop casting lighting but still receive it, not to mention SSGI and SSDO will still work, so you’ll never be completely without GI coverage.

Ah alright, appreciate the advice and insight. I did experiment with Hardware Ray Tracing but had a few issue’s with it. I did recently discover the voxel setting, I tried turning it up but it didn’t help…turning it down actually helped but had light leaking in through cracks in the walls.

I may use Hardware Ray Tracing for my Cinematics.

Now that is some interesting behavior, turning it down helped? That is baffling. What were your problems with HWRT?

I don’t recall honestly…I think I was just having really serious performance issue’s at the time…ended up figuring out that the lights weren’t turning off I had put in the windows of all the buildings…turns out they really tank performance lol…I thought I was turning them off…anyway in my attempts at figuring it out I disabled HWRT I don’t think I was having any real issue’s with it. Once I fixed the window light issue my performance doubled.

I was using rect lights in the windows because it looked far more natural…I didn’t yet grasp the actual problem. Even optimizing the turning on and off of the lights I was still getting a serious performance hit when the first level lights would turn on as the player approached the buildings…that’s when I realized it would work for Cinematics but not for gameplay so I started searching for a solution…still haven’t found a solid one yet but at least I know it has something to do with the Lumen Scene and how it Apparently Simplifies a Model of them for the lighting…

I should have taken a picture before deleting the compiled version but didn’t think of it…I tested this out and the reflections on the windows do look quite a bit better…I didn’t notice any improvement on the light vs window frames though…but Nanite is completely disabled in the 5.1 compiled version still…I guess it’s too sensitive to crashes while they are working on it.

I had a similar issue with interiors before realizing that lumen is pretty picky with how the geometry of the structure is set up. I had walls made up of one sided planes, and the same for exterior walls. For some reason, lumen doesn’t recognize this as an “interior” and is pretty finicky with one sided planes. Even setting the exterior walls to “shade as two sided” or making a two sided material didn’t fix this issue. Using the modelling tools, I duplicated the exterior wall mesh, flipped it, and recalculated normals so it was essentially a two sided mesh. This did the trick. I also had to extend and close off the floor with a two sided plane or the floor gets ignored by lumen. For some reason this also improved performance in my case.

In summary, basically close off the entire exterior with a two sided mesh, or use “solid” modular meshes to build the structure. This is how I got it to work. Hopefully this gets patched so lumen is more straight forward to use.

A few other notes. Epic games mentioned before that lumen prefers modular assets, so walls broken into pieces as opposed to one whole mesh, and also walls should be at least 10cm thick to avoid light bleed.

Thanks for the insight, The walls are paper thin but they are two sided like that, one side takes the outside material and the other takes a wall paper material the windows themselves are paper then but the frame isn’t it’s a fairly solid mesh and it’s connected to the walls but just removing the window didn’t help my case, I had to remove the window frame itself too…doing that and disabling distance field shadows on it actually helped but it still didn’t seem to let enough light in. The interior always looks unnaturally dark unless I disable distance field shadows on every wall with a window and then it looks natural but of course that leads to funny lighting on the mesh itself.