[FEATURE REQUEST] Use Lightmap from highest LOD for other LODs

I think that occasionally you come across static meshes, where you would prefer to use lightmap from LOD0 for lower LODs, instead of having unique lightmap for each LOD.

Having a checkbox for each static mesh to enable that kind of behavior would be useful.

Heya Death :slight_smile:

I might be wrong, but afaik I dont think there is a separate lightmap for each LOD, it always uses the one generated for the main LOD, though that might be mipmapped depending on distance regardless of which LOD is active.

To quote another post: How do I disable lightmap mipping/streaming? - Rendering - Epic Developer Community Forums

You can go into the *.ini files under the TextureStreaming section and
make adjusts for lightmaps and
shadowmaps. More information can be
found here:

Texture Streaming in Unreal Engine | Unreal Engine 5.3 Documentation

Oh hello Luos! Thanks for responding!

I haven’t worked with static lighting in UE4 apart from some Arch Viz, that did not require LODs and for some reason I also had strong belief that LODs would use same light map, until I came to a case, where I deliberately wanted baked lighting data to propagate onto lower LODs.
That is where to my entire surprise I discovered that if LOD1 has totally different unwrap, as opposed to LOD0, it would still get lightmapped properly.

I briefly looked at the source, and there is a bLODsShareStaticLighting in MeshRenderData. Gotta take more time to investigate it, but for now i’m quite positive that lightmaps are unique for each LOD.

I also faintly recall Leszek Godlewski mentioning in his blog, that he implemented it for VoEC.

You sure you looked at the lightmap uv’s and not the texture map uv’s?

Aye! No doubt.

@Tim Hobson :diamonds::diamonds: Tim, my sincere excuses for disturbing , but could You kindly clarify how exactly lightmapping for LODs is performed?
While searching I’ve found two contradicting posts in this question, namely:

Right now every LOD is lightmapped
separately. Lightmaps can be anything
you want with these, as you’ve pointed
out, but this is not ideal for a
smooth LODs. This may be changed in
the future but there is no timeline
for this at the moment.

And:

I’ve responded on your other post.
Simple answer is no, you can only have
lightmap for LOD0 that gets applied to
lower LODs.

There is roughly 2 years time frame between them, but I don’t recall any changes regarding lightmapping of LODs

Hi ,

As far as I understood it was in-line with what Luos said. However, after doing a quick LOD test I was finding different results. Obviously, I’ll need to take a more in-depth look to give you a complete answer which I don’t have time to do before I’m done for today.

Here was my test. I had a box that is horizontal and a box that is vertical for the LOD1. I would have expected the base LOD0 to have the lightmap baked (they both have the same UV layout by the way, just mesh is rotated differently) for both as a single Lightmap and the light bake to appear on the vertical LOD1 be of that from LOD0, but that didn’t turn out to be the case.

112860-lodlightmap.gif

However, with that being said, I know you have no control over using a LODs lightmap as the default lightmap and you don’t have access to have very specific light bakes setup for each LOD in a controllable way from the users stance. Also, this test used the same mesh UV layout for each and didn’t have separate UV layouts, which may lead to other issues.

Looking at the Lightmap Texture atlas that is created and stored (World Settings > Lightmaps), I can see the LOD has a separate bake stored here that is smaller, since LOD typically wouldn’t need higher resolution bakes. The Lightmap Resolution originally used for the box mesh with LODs was set to 1024 just to get the higher detail. Using the default resolution of 64 shows the LOD1 having a much lower resolution as well when in comparison to the base LOD when checking that.

So, with my best guess and not researching this any further, I’d say, yes they get separate bakes for the LODs so that the build is correct. However, You don’t get complete control over this for your own personal settings.

Much obliged for your response, Tim. I just thought I was missing something.

Tim is awesome, more people should be like Tim :stuck_out_tongue:

What is best way to get smooth lod change. Only thing that make LOD changes visible is really visible static light changes. Is there anything that can be done?

@Kalle-H

You can enable Smooth LOD Transition in the Material assigned to the static mesh with the LOD. This works similar to the LOD transition you see with Foliage and HLODs.

If you’re using billboards for your lowest LOD, you can use the RenderToTexture_Level_BP to generate textures that have some pixel depth offset to get better shadowing so it doesn’t look like a flat card.