Better static lightning with BSP, why?

I’m trying to create a big room using 400x400x20 panels for floor, ceiling and walls. I noticed if I use static meshes then various artifacts appears, like seams. But with BSPs of same size it looks much cleaner and there is no seams at all. I use lightmap resolution of 128 for static meshes and of 8 for BPS (by the looks of lightmap density view it’s pretty similar). I also applied different tricks found on answerhub like stetting UV grid spacing for SM to 1/(128-2) etc. On the attached screenshot floor, ceiling and walls are made of 400x400 blocks, BSP on the right, SM on the left. I use 4.6.0 preview.

Can anybody explain this difference?

This is what I asked a few minutes ago, haha. :slight_smile:

Everybody does the same thing :))

I’ve just rebuilt my room with bsp only and it looks pretty good even with preview quality and default lightmass settings.

The issue is due to lightmass quality and smoothing settings, each object gets processed by itself so the smoothing can be a little different between objects. In your case, don’t model that way, it’s a huge waste of resources because each object ends up as a draw call, you can easily make that entire wall as a unique static mesh instead of building it out of pieces.
The only reason to use pieces is if they are pretty high poly and that would save memory or because you have some kind of code that builds things dynamically so you don’t know what the size of a thing might be.

> The issue is due to lightmass quality and smoothing settings, each object gets processed by itself so the smoothing can be a little different between objects

Why it’s not the case with BSPs? I didn’t use one big BSP, I have 400x400 BPS blocks, same size as SM.

My guess is that the BSP gets processed together. BSP is like carving an object rather than individual objects, so if it’s next to each other it is probably actually considered joined

Won’t I have low quality shadows in this case?

I’ve just tried that, and in this case the quality of shadows on this big wall modeled as unique static mesh is very bad. See attached screenshot for example. The SM floor on the left has resolution of 128 and the BSP floor on the right has resolution of 8, everything else is equal. See how shadows projected on the big SM are bad while shadows on small SMs and big BSP are good.


Is there something I can do to improve quality of shadows on big SM? I noticed that in Blueprint Office example the shadows on the same mesh becomes much better when you are closer. How is this achieved?

In the BP Office Demo the Directional light is set to Stationary for its mobility (This is the default setting when you place one in your scene). Stationary lights are a combination of static lightmaps that are baked and dynamic lighting when setup to do so (by default the dynamic side is set to 0 meaning it’s only going to bake static lighting and display that).

The transition you’re seeing with the shadows becoming better when you get closer is two-fold. The LM resolution for the static meshes in the level are mid-range to give decent looking shadows at a distance, enough so that the shadow detailing doesn’t look blocky and that it resembles the object. When you get closer the dynamic lighting will take over and provide crisper shadows. If you want crisper shadows from your static lighting bake you’ll need to increase the LM resolution. The floor mesh in question on the right. In the BP Office demo is set to 128. Increasing this LM resolution size will bake better looking shadows.


Hi Tim,

I managed to reproduce the same shadow effect by enabling the the Cascaded Shadow Maps on the Directional Light source in my little example. But in the scene I’m working on (the room you can see in the beginning of the thread) I only use stationary spots. There is no Directional light in the scene. I didn’t find anything like Cascaded maps in those Spot Lights, is there something else for the same effect?

I understand that the size of Light/Shadow Map pixels depends on the size of the mesh, am I right? So, for example, if I have a little 128x128 plane with LM resolution of 128 then I will have LM pixels of 1x1 centimeters. But if I have a big 1280x1280 plane with the same LM resolution I will have 10x10 pixels, am I right?

BTW, in the little example I made this morning I also increased LM resolution of the mesh on the left to 128. On the right side it’s a BSP, not a mesh.

128 is too small for a surface area of that size, it needs to have a higher resolution.