Lightmass: multi-bounced sky lighting

Edit: Fixed a bug that causes all lights to lose their first bounce (second and later on is preserved). The binary and GitHub repository are updated.

Binaries, replace Engine/Binaries/Win64/UnrealLightmass.exe directly:

4.15: Dropbox - MultibouncedSkyLighting-UnrealLightmass.zip - Simplify your life

4.16: Dropbox - MultibouncedSkyLighting-UnrealLightmass-4.16.zip - Simplify your life

GitHub source: https://github.com/AlanIWBFT/UnrealEngine/tree/MultibouncedSkyLighting-4.16

Hint: This mod can be used together with a modified BaseLightmass.ini to get a better result. (especially the CachedIrradiancePhotonDownsampleFactor parameter, default is 2, highest is 1. If you have troubles with small features of the lighting, you can set it to 1, together with a smaller Static Lighting Level Scale)

Single bounce vs 10 bounces:

Brighter in deep space:

Much better color bleeding effect: (Colors are also more vivid)

01794c8cd39ff02bc915c68f1830b757a8cf2d5a.jpeg

c53b78a85f1c9bc46f63e5e7791fb2baf80e3def.jpeg

Removes overdarken corners:
564e0c63b2e4049a02b7077747a194d5bbc09a5e.jpeg

Helps to wash out artifacts:
e41e6751d09f429da4def116833614b72a85a30c.jpeg

RealisticRendering demo, single bounce vs 7 bounces:

Lit by a single skylight:
bd422fb3adde217336a3dc93d7541887352e60f9.jpeg

With sun (a directional light) and other spot lights:

Notes:

This feature is implemented with a radiosity-like technique. The drawback is that the time of “Caching Irradiance Photons” (orange bars in SwarmAgent) will scale linearly with bounce number.

However, this technique allows even the deepest object to get a solid bounce, which is what we want from a multi-bounced sky light:

My own test shows that 5~10 bounces can get very nice results, so it may not be a good idea to raise the bounce number to some crazy things like 50 or 100.

I thought bounces after 10 were much quicker than the first 10.

Well, it is true for photon mapping, but sky lights are not handled with PM in the official Lightmass, so is it here.

Edit: it may be better to use PM for sky lights, but that is a little bit complicated for me to implement… :frowning:

Out of curiosity, I’d love to see some comparisons with some finished scenes, like the community stuff on the market place or even the Robo Recall starting level. I’ll probably try it myself at some point, but more comparison shots are always nice.

From my own experience, the difference between single and multiple bounces will become less significant in a level finished with detailed textures; This feature is mainly intended for ArchViz where you have things like clean white walls. On the other hand I haven’t compared it to Koola’s bounce-card technique, which gives you more control about lighting.

Koola updated his scene in 4.13(?) to only use portal lights. But I did notice Epic did use bounce cards for the Robo Recall starting level. Most people have said you don’t need bounce cards anymore.

I did some quick tests with the RealisticRendering demo:

[Images moved to main post]

This looks fantastic. Do you have any clue why this isn’t a native feature?

How long did it take you to implement if you don’t mind my asking, and are there any limitations or drawbacks to multiple bounces for SkyLights?

I’m trying to understand why Epic wouldn’t have added this feature themselves already.

Currently skylights are not handled with photon mapping in official Lightmass.

It should be better to handle them with PM, I think they simply haven’t got there yet.

I tested it on one of my test scenes and the color bouncing, even in not direct light, seems to be much better and more pronounced. Looks great.

Glad to hear that :slight_smile:

Some more results about the color bleeding effect:

[Images moved to main post]

You should definitely post this in Architectural Visualization as a new thread, they’d love it.

This is fantastic! I recently gave up on using a Skylight for arch-viz because of the one bounce limitation, so I’m very excited to give this a try today after work.
The results you posted sure look great!

Yeah, this is really awesome. I had been placing low intensity, high bounce lights next to windows to simulate this, but this is so much better. Can you do a pull request so that this becomes part of the engine? I’m not really sure how that all works.

Great job , as usual.

This is something I intend to implement in Lightmass when I get a chance. I will take a look at your implementation and see if there’s anything I can reuse when I do so. Unfortunately I am pretty overwhelmed these days with other tasks so it will be a while. I’m planning to reuse the rays from the first bounce for subsequent bounces, so that multiple bounces effectively don’t cost extra, which is an artist expectation with Lightmass at this point.

Also, skylight needs better directionality on the sky light source, right now it’s reduced to a 3 band SH which is like an extremely low res cube map, all directionality is gone.

Is that why it’s hard to get good directional shadows from a strong bright spot in a skylight?

Yes. However, without a robust importance sampling strategy, that kind of cubemaps can easily cause a lot of noise.

Hi :slight_smile:

Beside this, I found a bug in the indirect path driven photon emission: Lightmass: incorrect indirect path driven photon emission for spot lights - Rendering - Epic Developer Community Forums

Hope the bug won’t add a lot of extra work to you :frowning:

Will this also work with swarm agent? Do other clients need the same exe locally?