Download

Light probes (ambient lights - cubemap light projectors) in fully dynamic scene

There’s some sparse discussions about this, and I want to get news - the last thread was from last year. You guys wrote this section that covers Reflection Actors:

But there’s this worrying rule:
The first step toward having good reflections is setting up diffuse lighting, including indirect lighting through lightmaps.

Reading through the whole article I get the impression these reflection probes are only meant to work in conjunction with Lightmass; am I right? Can’t I just use them as in Fox Engine/CryEngine?

This thread is a copy of this one, but I want to get new information about what you talked about there. Is the r.DiffuseFromCaptures command still doing the same thing? Did you develop more on that? Is it going to be overwritten by some form of realtime GI?

Last, how could I get reflections from these same probes? As far as I remember, CryEngine also uses these same cubemaps to apply reflections on materials - not surpassing the roughness layer. I tried to make a hack using the Scene Capture, but as you need to feed the cubemap directly to the material there’s no way for it to be affected by the roughness.

In short I’m looking for a way to show GI in a dynamic level, updating once when a light changes, and also use the cubemaps for reflections - just like what these two engines do. I need cubemap reflections too because SSR don’t work with perpendicular planes, obviously.

An update. I have been looking to what r.DiffuseFromCaptures does, and, apparently, that’s exactly what I’m looking for - it, on paper, enables local ambient light distribution, while maintaining cubemap reflections. Just like what CryEngine does with IBL probes.

But… all of these hints come from people using 4.4.3:

And the command doesn’t do anything, just like what a few said, in 4.4.9. I have tried with spherical actors, boxed, 50+ of each, turning on and off the Precompute Visibility and Allow Static Lighting flags, and changing all lights to dynamic and static. As you guys aren’t implementing GI for the next half of year, could you just enable this again?

It works fine for me in 4.10.1, but it’s hard to tell if it does anything close to what CE does… I couldn’t get it to lit anything nicely
Unfortunately, dynamic lighting in UE4 is quite weak in terms of indoor lighting.

I’d like to see more work towards light probe based dynamic lighting. Full fledged GI solution is quite expensive yet on modern hardware, while light probes are pretty cheap in comparison and lit environment really nice.

Not happening, at least not in this way. Probes might “seem” cheap, but that’s a huge amount of memory to take up, round robin updates are slower the more probes you have for a fixed cost, have massive light bleed problems as it is, and making them work with materials is even worse as you have to importance sample each one to generate the baked in roughness mips for spec reflections.

Basically there’s absolutely no “silver bullet” or “easy way” to do global illumination in realtime. EG The new Assassin’s Creed uses dynamic probes, but also uses a separate diffuse term as the probes don’t have enough spatial resolution by themselves. The games spend a huge amount of time on GI, to the point where they spent an entire year just optimizing it enough to get it to run on consoles properly at all (Unity to Syndicate). The GI is also only relightable, no dynamic geometry, and seems to be only for sunlight.

totally agree! Lightmaps are a big load of work to get good results from on a per asset basis - so making the dynamic solution more feasible would be great. As epic themselves acknowledged, the fully dynamic solution needs some serious improvements, and I concur especially in comparisson to what ue4s rivaling products have on offer. And I don’t think this means getting a fully dynamic GI solution i the near term. Improved light probes for dynamic scenarios would go a long way. the current version with r.diffusefromcaptures 1 doesn’t produce anything close to usable imho. Instead I currently have to rely on ssr for reflection and faking bounce light by placing point lights with a large attenuation radius, inverse square falloff turned off and intensity between .1 -1.0. The point light hack isn’t that bad but not having any reflection contribution to materials is kind of not good in an PBR era.