Nanite rules! lumen... not so much

no? why would I be a bot

I just solely develop for mobile and it improved performance in the editor for me compared to my old dynamic lighting by about 2fps, just it doesn’t run on mobile so its useless to me. I dont get it why would I be a bot

sorry, the wording seemed suspicious to me. maybe i hang around too much on other forums…

From what I understand, Lumen works with distance field, so it has the same issues as every other distance field related features, like DFAO, based on the quality of the distance field of the meshes.

  • Thin meshes don’t works well because they don’t take enough space and will have bad distance field representation. Walls needs to be made of two planes, not just one, and thickness has to be more than 10cm
  • Large meshes needs to get higher distance field resolution to get a good distance field representation.
  • Complex meshes (like a big house made of only one mesh) have low distance field representation, even with high resolution so you have to cut it in smaller parts.

correct, except it can work also with raytracing. so distance field is the so called software raytracing for systems that do not have hardware raytracing capabilities.

Interesting!! Are you using vertex paint for the static mesh terrain converted to nanite? Is the terrain broken into smaller pieces or you imported the full mesh? If I recall large meshes does not work well with nanite?

But if it is cut into smaller pieces, the pieces would be unique when imported especially if it is not modular pieces. I am curious how importing many unique meshes will affect performance. How much of unique high poly meshes is too much? I have seen a lot of videos of ue5 importing several instances of one mesh. What about a scene comprised of 33 million unique meshes, no instances?

i used a texture but will definitely try to import the splatmaps as vertex colors.
its one single static mesh that is not very large - i think i exported in meters and when importing its in centimeters - then resized it

Disabling Eye Adaption fixed the Lumen issue you are showing for me.

Add Post Process Volume, set max and min brightness to same value ( I used 0.1)

what i changed:

  • increased mesh distance field resolution
  • turned on double sided distance fields
  • enabled raytracing shadows
  • disabled hardware raytracing (software RT for lumen)
  • enabled realtime capture on the skylight

its not perfect but its pretty good

So this is similar to lightmap resolution, i knew that meshes shuld be modular, but never thought of distance field resolution in relation to size, interesting!

1 Like

Are your rooms basically inverted-normal cubes with paper thin walls imported as a single mesh?

If so, that’s completely against the way epic suggests you build environments in the engine. Each wall should ideally be a separate mesh that’s water tight and as thick as a wall really would be. Yes this means that you don’t see a bunch of the sides but that’s not going to affect performance in the slightest. On top of that, you’ll get better mesh distance fields, better occlusion and better frustrum culling. It’s also a better work flow since you don’t need to reimport the entire room if you just want to change one wall in the editor. Oh, and it will be way better when it comes to making collision.

You will always get better results if you work with the tech rather than in spite of it.

This fixed it for me. Thanks.

Hi everyone it’s nice to see this post. I had a similar issue and was quite dissatisfied initially. Then after some more tests I realized that the blocking geometry for the walls in the room that I was testing was single sided planes (the default ones that you can create) and I had a double sided shader on them to cast proper shadow.

The issue was that the geo was ‘thin’ so lumen was having a hard time. As soon as I converted all the planes into planes with thickness (just scaling some boxes) the GI started working like you’ve seen in all videos that show it working.

Give it a try and hopefully that helps!

I know it baffled me for a whole day of testing so hopefully this sorts it out.

thanks but i already sorted it out

That happens when you enable nanite on assets with unsupported materials functions. Materials of nanite assets need to be pretty plain.

The material i am using have a simpke material only using multiply, overlay in color and a lerp. I made a thread showing all i am doing, and the doumentation never say any of those are unsuported.

Here is described how lumen works and why is this happening and what to do to prevent it. Some improvements were promised, so I would wait for full 5.0 release, before refactoring assets: Lumen | Inside Unreal - YouTube