Download

Reflected light doesn't show properly?? Old guy needs advice please.....

The attached images are from a default 3rd person shooter raytrace project. The materials of the floor and cubes were changed to the shown colors, NOTHING else was done to lighting or anything else. Lighting is dynamic with Scalability Settings and Material Quality Level at Epic.

Common sense would say that there should be red/yellow light reflected on to both characters, however that isn’t exactly the case. The only surfaces that show are the zippers/buckles on Phase and the mannequin shows some oblique reflections. However, reflections are not necessarily reflected light per se as the expected result is not what I would imagine. Coming from a 40+ year background in photography/videography, this has thrown me for a loop as the expected ambient light reflections simply aren’t there.

Also, I’ve spent 3 weeks researching this, found a handful of forum posts here and on reddit that are similar but none of them had a solution. I understand the various lighting aspects fairly well, have experimented with material parameters, tried the various reflection capture widgets, static lighting, GPU lightmass, etc. but all fail.

All of the documentation, tutorials, forum posts, etc. deal with reflections, not reflected light. And I mean skylight sun based, not point, spot or other but even the other sources of light don’t reflect properly. If you shine a red spotlight onto any surface, it should throw light from the surface based on the surface material/color and then hit anything in the influenced radius of the light throw. As you can see from the attached, the expected return from this scene would be that the semi-glossy material from Phase and the glossy material from the mannequin would have a lot of yellow, such is not the case. The render of the girl with the green plane (from Daz Studio) is exactly what would be expected from such a setup with one key light in front and almost directly above. I also attached one showing the odd holes I’m getting from a spotlight shadow as it may help someone to see what is happening.

Any feedback on this would be greatly appreciated as I’m an old guy and getting wore out trying to troubelshoot this. I’m a retired MS/Apple dev and am proficient in Blender, iClone/Character Creator as well as Daz Studio but nothing makes any sense in UE4 with reflected light.

Thanx,
GI

The ‘holes’ in your spotlight shadow look like shadow preview warnings - if you switch it to ‘movable’, or ‘game view’ do the warnings disappear?

On your main question, it looks like you are only raytracing the specular reflection in your scene - but not global illumination (diffuse reflection).

Is ‘ray traced global illumination’ turned on (set to ‘brute force’ or ‘final gather’) in your postprocess volume? Each light you want to raytrace will need to be set to ‘movable’ (otherwise even baked lights would raytrace, and kill scene performance)

Could be some other stuff too, but that’s what I would check first if I had your scene to troubleshoot.

This is typically referred to as “bounce lighting” or “indirect lighting”, or “indirect bounce lighting”

Right now, bounce lighting from dynamic lights… sucks. There is no bounce lighting by default for dynamic lights but there are some options you can enable. None of which are great. Your best option is to enable screenspace global illumination, but it has the drawback of only bouncing light from the area visible in the screen. Your only other options are raytraced GI and light propagation volumes, both of which have more serious problems than SSGI (for realtime use anyway)

Thank you kindly and your answers makes me feel much better! I kept thinking I was missing something obvious. I’ll definitely try your suggestions to see what I come up with and post accordingly.

Ok guys, setting the spot to movable got rid of the preview overlay. Using ray tracing with the Post Process GI didn’t help and fooked my volumetrics and performance. I’ve attached a vid link showing the results.
https://1drv.ms/u/s!AuOpQ2qSvulKoUxPXlHRmXbxV5_l?e=33X3eX
I’ll work on a default project tomorrow to see what’s up and once again appreciate the replies.

I don’t think SSGI does anything when raytraced GI is enabled. Regardless you should definitely be seeing a difference. Here’s a comparison between no GI/raytraced gi/ssgi from a dynamic spotlight:

That is correct in that it works with a spot but it doesn’t work with any atmosphere only based lighting. I can’t find any combo of atmospheric lighting that generates such as you posted. The only way I could get any reflection from bounced lighting is to add a clear coat to materials and tweak roughness but that hoses SSS.
Thanx for taking the time to post the detailed caps.
Update! I did finally get some results on bounce with ray tracing but had to set the GI bounces up to 32 and 4 samples per pixel. And only in screen space reflections maxed out. However, the results are ■■■■ in performance and any character movement results in a mottling of the reflected light so just a slight breathing idle pose looks bad.
I’ve got a fairly decent system with (at the time) the fastest i7, 64GB memory and a 1080 Ti GPU with 11GB and dynamic lighting kicks 120fps but raytracing with GI brings it down to 16fps or so.

A 1080ti CAN do raytracing, but it’s not an RTX card, and lacks some of the architecture that makes raytracing efficient. Okay for testing or non-realtime rendering, but raytracing even on a cutting edge card is only just usable for an actual game. Not surprising you’re seeing a huge performance drop.

For your purposes, you could try LPV (light propogation volumes) instead, maybe in combination with SSGI. It’s a pretty old school technique, and it’s got very limited options, but it might be worth a test.

Also worth pointing out that (unlike lightmass) additional raytraced GI bounces are expensive. Keeping the bounce count to 2 or 3 is recommended for performance.

All of Unreal’s GI methods (except LPV, I think) should work for all lightsource types including sun (directional) lights. Raytraced GI from the skylight is disabled by default because it typically has very low impact on the scene unless you are lighting it exclusively with an HDRI.

In general, all (good) realtime GI methods are going to be slow, which is why for the most part we try to bake as much as possible using static and stationary lights and when we need bounce lighting from a dynamic light, we try to fake it. That being said, raytraced GI in particular has an extremely steep performance cost, which is why I feel SSGI is the best option currently in the engine for dynamic lights. It provides the best tradeoff of quality and performance.

If you need something with better performance and less noise then you may want to consider building NVidia’s branch of the engine with RTX GI. The performance of RTX GI is much more scalable but it is also a very sparse representation of GI and can’t provide things like detailed indirect shadowing.

The only other option is to basically wait for Lumen in UE5. But that is most likely going to be expensive too (though hopefully less so than raytracing)

Thanx guys and based on your responses and more heavy research it’s a case of UE4 simply can’t do what I need. I need fairly decent (15-20FPS on average system) performance and the lighting has to be able to bounce enough to show, not perfect, just enough to let someone understand how light works. The app I’m working on isn’t a game, it’s a lighting simulator and I was to the point of prototyping the environment and content when I came across this issue.

I can get a raytraced bounce light effect but had to bump bounces way up and it hoses too many other lighting scenarios, like godrays, volumetrics, skin SSS, etc. So in a nutshell, I’ll keep working on the other aspects of development on this project and put the lighting issue on hold until UE5 hits.

Thanx for taking the time to give lucid responses…the YT, Reddit and forum kiddie gamer posts were driving me insane!!

Then you might get away with the second option for raytraced GI: instead of using the Brute Force method, try Final Gather, and see, if this works better for you.

Also it´s important to know, that the raytracer cannot see all of the things, that SSGI can see, including some of the volumetric stuff. There was an interesting video, where you could see, what the raytracer saw (for reflections), and how the final image was on screen.

Found it, maybe this video helps you too:

The boxes with the blue chairs right behind the TV got reflected in the mirror in the second picture. Hopefully, they figure this out for UE5 or find a good solution to affect raytraced reflections too: