Lumen GI and Reflections feedback thread

That’s actually exactly what the old DFAO implementation did-

Here is a small video showing the effect via just removing all lumen cards. It also shows DFAO failing. SSR will not hold up in complex scenes and cubmaps take to long for giant worlds. Ofc still unperformant due to all other Lumen logic running but the look it definitely holds up with reference photos (real life rain). I just wonder what percentage of Lumen’s cost is tracing SDFs to this level.

If relatively small, it’s a win and I wonder how ROMA could speed it up since it’s faster to trace from(but also requires jittered rebuild per-frame to avoid voxel like aliasing).

what’s wrong with raytracing? it works playable on a ps5 level gpu (my 3060 is a lil lower in raster output actually). fps players don’t care about fx. in “cinematic” mode you end up above 30 (unless you torture the hardware). with all the goods. plain digital movie framerate. moblur smears the lil frame hitches. it’s decent performance wise for what actually is doing. and looks great in my lil testlab. hmmhmm :slight_smile:

captured in editor ofc. dunno how the package performs, rn.

1 Like

Started playing with Lumen today and I am unsure what I am doing wrong. (Unreal 5.3.2)

  • I created a basic oven inside blender and textured it inside substance painter before exporting the textures to unreal
  • I haven’t messed with the project settings apart from turning on hardware raytracing, and a few other tweaks which are meant to help
  • The oven looks correct in the mesh preview and it’s using lumen for reflections and lighting as far as I can tell
  • Placing the oven in game however looks awful (Default scene, no changes at all). The glass reflections looks good no matter the distance, but the chrome parts look hideous if you are more than 3 ft away.
  • All scalability options are on high, I have tried cinematic but it tanks my FPS with no visual difference
  • If I switch reflections from Lumen to SSR or Realtime Ray Tracing then it looks perfect
  • Nanite on/off has no effect
  • Using TSR with 4x MSAA, turning these off/changing them doesn’t help
  • Played around with the PostProcessVolume settings, even cranking them up to silly values doesn’t help

Mesh preview (Good reflections, using lumen for both GI and reflections):

In game object (Blurry grey/blue metal, using lumen for both GI and reflections):

  • I have attatched a video showing a close up shot, then pulling out. The reflections view correctly shows what I expect, but in the lit view the chrome turns a dull blue past a few feet.

I am also unsure why Lumen is so much worse than plain SSR, even close up (SSR is missing the reflections close up, but at least it looks like metal)

Close up lumen:

Close up SSR:

Close up raytracing:

Project settings:

Material settings: (I tried switching both metallic and roughness to constants with the values 1 and 0, didn’t help. The OcclusionRoughnessMetallic map has sRGB turned off, switching between Default compression setting and “masks (no sRGB)” has no effect.)

I also created a new scene using a HDRIBackdrop, downgraded to 5.2.1, etc. Nothing has made lumen reflections look good so far. Any help would be appreciated!

that’s too much details, imho. do you really need perfect reflections on those chrome knobs? in a game setting? or are you advertising chrome knobs. hmm

Are the handles and knobs supposed to be chrome or rough/brushed metal?
The legacy raytraced image is showing pin sharp reflections (roughness of 0) while the Lumen image appears to have a higher - but still low - roughness (maybe like 0.1). If both images are using the same roughness map, there should not be a noticeable difference between them.

Here are two images of metals with a roughness of 0.15, one has legacy RT on, the other has Lumen on… can you tell which is which?


Any raytracing on rough metallic surfaces is going to look worse that smooth, lumen or not. Here is an image of a 0 roughness metal with Lumen, looking sufficiently metallic.


Once you start to increase the roughness of raytraced metal, things get a little unstable and fuzzy - especially in motion.

Your project settings look fine. That’s about all I can say without actually inspecting the assets itself - Lumen should generally look exactly like the legacy RT, except with proper GI contribution.

Oh, and the 1st image was Lumen, 2nd was RT.

that’s too much details, imho. do you really need perfect reflections on those chrome knobs? in a game setting? or are you advertising chrome knobs. hmm

Unfortunately, kinda. This is also ignoring the point it’s not functioning as I see it working in all the demos and tutorials. I have followed multiple youtube tutorials to the T, and theirs looks like metal whereas mine does not.

Are the handles and knobs supposed to be chrome or rough/brushed metal?

They are meant to be chrome

The legacy raytraced image is showing pin sharp reflections (roughness of 0) while the Lumen image appears to have a higher - but still low - roughness (maybe like 0.1)

In the screenshots I changed the material constants so the metallic was 1 and the roughness was 0. I also disconnected the A̶l̶b̶e̶d̶o̶ (EDIT: Meant to say ambient occlusion) and normal. This means it was just the colour, and two constants. The only thing changed between screenshots was the reflection type (Lumen>Raytracing) and they look completely different, hence the post.

Any raytracing on rough metallic surfaces is going to look worse that smooth, lumen or not. Here is an image of a 0 roughness metal with Lumen, looking sufficiently metallic.

How have you done this? I switched from the oven model to spheres and no matter what I do it’s a fuzzy mess. Even the materials inside the Unreal content demo look terrible on my computer and I don’t know why. I have a RTX 2060 which I think should be able to handle this completely fine?

The material applied to the sphere:

Lumen:

Raytracing:

This is the exact same sphere, same material, only the reflection method changed. This is the best the Lumen sphere looks, the more you pull away the worse it becomes. Lumen reflection settings (I went through like 10 different combinations of values, I couldn’t tell any visual differences apart)
image

I have reinstalled the engine twice, downgraded, etc. Would it be possible for you to send me the project with the metal sphere you have?

Oh, and the 1st image was Lumen, 2nd was RT.

I really wished mine worked like that lmao

EDIT: Also updated graphic drivers to latest with no change

Another photo of the Lumen sphere from further away, can’t even see the cube in it’s surface
image

Raytracing:
image

What is the reflection quality set to? Found in the PPV.

If that is set to something very low (like 0.25) then it will look terrible. Pretty sure it should be 1 by default, but maybe your project is weird.

1 Like

@billyjoetyler

r.Lumen.Reflections.Temporal 0

Also worth noting that the lower the screen percentage is, the worse your reflections will be, especially at a distance. So you should ensure that your screen percentage is set to 80 or higher.

Lumen reflections are temporally upscaled(without TAA) in the reflection channel which is why it’s blurrier and more performant than your RT reference.
r.Lumen.Reflections.DownsampleFactor is put on 2 to save massive perf.

If you put it to 1 or 0, you will get full res reflections. But I imagine your and your customer won’t like the performance you’ll receive.

EDIT:

Another photo of the Lumen sphere from further away, can’t even see the cube in it’s surface

If the cube is small or far away then lumen with cull it to save trace performance.

1 Like

What is the reflection quality set to? Found in the PPV.

It’s set to 10
image

r.Lumen.Reflections.Temporal 0

I entered this but I didn’t see any changes

Also worth noting that the lower the screen percentage is, the worse your reflections will be, especially at a distance. So you should ensure that your screen percentage is set to 80 or higher.

This has been the first thing that has changed the quality!

  • Setting it to 80 is super blurry
  • Setting it to 100 is super blurry
  • Setting to 120 is moderately blurry
  • Setting it to 150 is okay
  • Setting it to 200 makes it look like raytracing

Unfortunately, I can’t really justify running the game at 200% and scaling it down.

r.Lumen.Reflections.DownsampleFactor

You legend, this was it. This makes the metal look like metal even at 50% screen percentage. I have filled the area with the rough amount of reflective materials I would have, and it runs at 60fps at 1440p. I think this should work? I will add it as a game option, but the reflections are tied to the gameplay.

Oven now with correct reflections:

One last question regarding:

If that is set to something very low (like 0.25) then it will look terrible

Having spent far too long looking at spheres, going from 0.25 to 100 quality changes absolutely nothing.

0.25 quality:

100 quality:

Same for Max Reflections Bounces, changing this number makes no difference. 1 looks the same as 100. Both these settings barely make a dent in my FPS either. Setting both to 1000000.0 leads to a 2fps drop and no change in reflection quality from the lowest values.

Ray lighting mode makes a huge difference, surface cache is terrible and HIT looks great. (Exactly what I expected). High quality Translucents also work correctly, so only two of the options are maybe bugged? (For me)

(EDIT: Just the quality slider now, the max reflections does have an impact, just less than I thought)

Found someone with a 750ti and sent them the game, with a lot of tweaking and settings altering we were able to get a ~50fps at 1080p while keeping the reflections/game looking great. ( r.Lumen.Reflections.DownsampleFactor set to 0). This mainly included changing TSR to TAA, screen percentage, etc. Lumen is blowing my mind, being able to run this quality of reflections on a 10 year old card is amazing!

Thanks everyone for your help figuring this out

2 Likes

In a 750ti, it must be using software raytracing for Lumen, wich should look slightly (because a great development work) different.

Anyway, your shown scene is so simple that you shouldn’t use it to try to notice performance drops nor visual differences between different methods and/or settings.

You should make a quite more complex scene, even if done with simple blocks, but creating different “ambiences” and situations.

In a 750ti, it must be using software raytracing for Lumen, wich should look slightly (because a great development work) different.

It looked slightly different, but I wouldn’t notice unless I was really trying to pick out details. Phenomenal job by the lumen team.

Anyway, your shown scene is so simple that you shouldn’t use it to try to notice performance drops nor visual differences between different methods and/or settings.

So with r.Lumen.Reflections.DownsampleFactor at 0, I notice no difference between Lumen and raytracing. With r.Lumen.Reflections.DownsampleFactor at it’s default value, it’s super clear the difference between Lumen and raytracing.

You should make a quite more complex scene, even if done with simple blocks, but creating different “ambiences” and situations.

I did this after and was how I realised the max reflections slider was working. Even with lots of dynamic lights, different colour blocks, different areas with different lighting, a lot of reflective materials, etc, I couldn’t get the quality slider to do anything. It always looked perfectly raytraced unless I increased r.Lumen.Reflections.DownsampleFactor again. I am not too worried about this because my performance didn’t decrease either.

Pretty sure the quality slider is the downsample factor. Setting r.Lumen.Reflections.DownsampleFactor off just turns off downsampling, which is why your quality slider does nothing.
Quality .25 (aka downsampled)


Quality 1 (same as downsample factor 0 I believe)

I can’t tell the difference between any other level though, so it may actually be somewhat broken. 0.5, 1 and 2 all look the same to me. Only 0.25 is clealy downsampled…

This only has an effect if two reflective surfaces are next to each-other, and are not covered by screen traces.
Max bounce: 1 (screen traces off)
image
Max bounce: 8 (screen traces off)
image

In this test scene, a downsample factor of 0.25 saved about 0.50-0.70 ms. In scenes where all of the metal is rough, this is a worthwhile optimization, because the downsampling is not really noticeable once the metal is sufficiently rough anyway.But in cases where you need a high quality mirror/chrome finish it is worth paying.
Increasing max reflection bounces only cost like 0.1 ms, this is probably because only relatively fewer pixels are included in each bounce, as the reflection gets smaller and smaller.

2 Likes

Hello folks,
I have a problem rendering chrome and highly reflective materials, especially small objects. Please watch the video.
Video
The first scene is the render output. The handrails and stairs in the background flicker.
Strangely enough, not or significantly less when I move around in the editor (second scene as a screen capture). At the end of the video are my settings.
I’ve tried a lot of things but can’t find the error.
What could be the reason?
Thanks for hints.
Chris

Bloom is the main issue looks like. Bloom in unreal is completely broken without strong TAA/TSR frame blending even with positive roughness mipmaps. Looks like the first render was missing frame blending.

EDIT (after seeing video settings): Yep, you had AA set to none.

You can try r.BloomQuality 4 with FXAA(should have SMAA but Epic doesn’t like morphological AA) but it still might have issues if you haven’t managed the specular aliasing. (Positive mip bias for roughness maps included)

1 Like

Yup, it’s specular aliasing from insufficient resolution and/or lack of anti-aliasing.

Pretty sure the quality slider is the downsample factor. Setting r.Lumen.Reflections.DownsampleFactor off just turns off downsampling, which is why your quality slider does nothing.

That makes sense, unsure why the slider wasn’t changing the value for me though. Not too bothered as it seems to work okay using the command

I can’t tell the difference between any other level though, so it may actually be somewhat broken. 0.5, 1 and 2 all look the same to me. Only 0.25 is clealy downsampled…

Kinda glad I wasn’t completely crazy lmao

This only has an effect if two reflective surfaces are next to each-other, and are not covered by screen traces.

Yeah, realised that once I filled a scene with reflective objects and started playing with all the settings. Kinda obvious in hindsight, but we live and we learn I guess

In this test scene, a downsample factor of 0.25 saved about 0.50-0.70 ms. In scenes where all of the metal is rough, this is a worthwhile optimization, because the downsampling is not really noticeable once the metal is sufficiently rough anyway.But in cases where you need a high quality mirror/chrome finish it is worth paying.

Sweet, thanks for the tips!

I have used and tested the Unreal Engine 5.21 and 5.31 RTX-DI branches. It is only Direct Lighting (RTXDI/ReSTIR DI) and not ReSTIR GI. You can enable Sampled Lighting (RTXDI) for Lumen Surface Cache and Sampled Lighting (RTXDI) for Lumen Reflections. GI is still Lumen, but it is still not ReSTIR GI. There is another branch Unreal Engine 5.21 caustics, NV Enhanced Restir GI including Diffuse GI, Reflection GI, and Translucency Refraction GI in this version. It is similar to Cyberpunk 2077-2.1O-verdrive

3 Likes

UE5.4 branch is already in the GitHub. I think 5.4 preview must be coming, finally!

I have compiled it, but some features, like the cvars to enable stochastic shadows (if I’m not wrong), are not available anymore :frowning: . Maybe it’s still there in the Main branch only (I won’t compile it), for an upcoming, farer, future release. But I was happy even with its current early state, it’s a pitty to loose it in 5.4.