Download

Enable IBL from Reflection Capture Sphere/Box (Multiple local IBL).

It’s just like Marmoset Skyshop plugin for Unity3D. This techique is also employed by many other next-gen engines like CryEngine, Fox Engine, Snowdrop… etc. It can fake one-bounce GI at a relatively low cost, and can easily update at runtime to implement a “dynamic GI”.
UE4 has already got Reflection Capture Sphere/Box for implementing light probes, there’s just only one small step needed to achieve this feature, enabling IBL from all Reflection Capture Sphere/Box(Users can determine whether to enable or not). It may also produce a high quality AO shadow when working with current DFAO, which is missing in other engines, in UE4. So this will be an advantage of UE4’s IBL. Although the Lightmass can produce high quality static GI for most games which don’t need dynamic GI, but the quality of Multiple Local IBL+AO solution is decent for some open-world games which need dynamic environment lighting, it can be compromise solution for now while VXGI or other real dynamic GI solutions are yet extremly expensive.
PS: I’d tried Marmoset Skyshop plugin for Unity3D, it’s also including sourcecode in it. UE4 team maybe want to go take a look at that.

Another quiet weekend.

No one’s interested in this?
It would be the cheapest full dynamic lighting solution with decent quality, though. :rolleyes:
Look, UE4 already got a skylight IBL, but the problem is it’s not able to handle the interior lighting. So the usability of moveable skylight in UE4 is currently somehow limited, only usable for exterior scene majored games. If multiple local IBL would be added in UE4, then we don’t have to bake lightmap for most games. Just like CryEngine did in “Crysis3”,“RYSE”.

a4a588a6f461620fc0ecd64ed6af79e17ea89598.jpeg

The Environment Probe in CryEnigne works the same way as Moveable Skylight in UE4, the only difference is that more than one probe is allowed in a same scene in CryEngine. It’s more like a Reflection Capture which could emit IBL in UE4. The level artists can place the probes everywhere when neccessary in order to get correct lighting results in different areas of the scene. So it would work properly with any kind of scenes.

To answer: Image based diffuse GI isn’t very good, there’s a lot of errors that creep up because you’re just projecting what amounts to a box of 6 flat planes onto a large area, and there’s a lot of light leak and incorrect lighting going on as a result. I.E. a column or other object “in the middle” of the box isn’t going to contribute to GI in any way because it’s in the middle rather than “along the walls” of the box. In fact anything but a solid wall along the flat planes of the “box” are going to look pretty bad when contributing to GI.

It’s also really expensive and limiting to do any image based GI in realtime, only Assassin’s Creed Unity and whatever that new one is really even try, and they spend a lot of time on it, and it still ends up with a lot of errors. Considering UE4 has both a prebaked lightmap/cubemap solution already in place, and an actually dynamic GI system under development, there doesn’t really seem to be any need for this.

Not really, did you really see any light leak in that Marmoset Skyshop tech demo? It’s just not a physically correct lighting solution, some corners out of probes bounds would look not so correct, but a good probes placement tactic would somehow fix it, additionaly, combining a good AO solution(UE4’s DFAO is really good at working with IBL). Actually you won’t get any physically correct lighting solution in game devlopment until the day realtime path tracing comes. Even baking lightmap will get light leak when you have to use very low lightmap resolution for large scenes. For most “real” dynamic GI solutions nowadays, you will suffer even much more light leak results, and other problems such as performance hit, view distance issues, over-time artifact… etc. You know, even CryEngine had abandoned their LPV GI solution which they used to be proud of and went for local IBL to simulating GI I mentioned previously (They entirly used it combining SSDO with color bleeding for GI lighting in “RYSE”). They also recommended users for turning off LPV in new projects.

PS: This solution is really cheap comparing to other dynamic GI solutions. I’d tried Marmoset Skyshop in Unity3D, I didn’t see any performance hit at all running on a very old, low-end graphic card such as AMD HD6700. But for VXGI in UE4, just ony a cornell box scene would drop the framerate down to under 20.

According to http://blog.selfshadow.com/publications/s2013-shading-course/karis/s2013_pbs_epic_notes_v2.pdf UE4 already does IBL with reflection captures by pre-filtering them according to their light function.

“Light leak” as in light going through objects. So, when those columns, like I mentioned, don’t show up in the reflection, that’s light leak.

Indeed, but if it looks overall decent, that will be enough. However, for static lighting solution, all dynamic objects are also “light-leaked”, they don’t cast indirect soft shadows and they don’t even bounce GI to the scene, . But in most cases, it looks good, we don’t(can’t) need physically correct lighting in games at the moment. :o

Yes, UE4 already got IBL. But what I meant was that UE4 doesn’t allow more than one IBL source in the same scene, that’s a pity.

Yes you can have more than one reflection capture probe in your scene, you can even set up the area of effect. For each pixel UE4 will then look for which reflection capture probe it’s inside, if there are more than one it will take the closest one.

Well if you go in the video to the 1:44 you will see that awesome reflection in the ground of a non exist windows. (Windows in the other side of the wall)

It’s a normal problem for any cubemap based reflection when cubemap is not well aligned. However, don’t forget we have Screen Space Reflection in UE4.:rolleyes:

But the only problem is the Reflection Capture doesn’t emit diffuse IBL in UE4. I believe UE4 dev team can easily implement this, or maybe they’d already implemented it at tech prototype stage, then they cut it before integrating the engine, thinking diffuse IBL emited from Reflection Capture is not necessary when working with lightmass solution. If they could provide an option to turn on/off this feature, that would be appreciated. That’s why I posted this topic.

Again, there’s already a separate diffuse pre-baked lighting solution that works, and IBL diffuse does not look good. It’s not a good solution for large open world games with dynamic night/day cycles as it costs too much to recalculate the lighting all the time. So there’s no particular reason for it to exist. What, precisely, does IBL diffuse do that UE4 does not/does not plan to that you want so much?

Actually, we don’t have to update probes at every frame in most cases. And I never think it look as good as baked GI, but it looks DECENT overall.

PS: It’s NOT ME want it so much, I just think it’s a popular feature which many mainstream next-gen engines have. Also, it’s relatively easy to implement than other GI techniques. It would add more flexiability to UE4, users would have more options when deciding to choose final lighting solution. It also works perfectly with moveable skylight workflow in UE4, otherwise I can’t see a reason to use moveable skylight for non-exterior-only scenes in UE4. And, it brings more efficient iteration to devlopment cycle, since no baking time is required. If the result doesn’t look good enough(In fact, many next-gen AAA titles already used it as final lighting), users can switch to static GI lighting solution whenever necessary.

Alright, fair enough. In point of fact not a lot of engines use it, Cryengine is the only major one I can think of other than the Assassin’s Creed series, and Crytek is replacing it for something else insofar as I know. But UE4 is already a monstrous amalgamation of different flips and switches and etc. so it’s not like 1 more is going to be out of style necessarily.

Besides, as ugly as I’ve found it to look it’s not like it’s that much worse that many other GI methods. By law it seems it’s going to look ugly in a lot of ways, even if you pre-render all of it.

7bbc7ad40e7013a32c7ec81c536f7bf87d306cff.jpeg

Do you think “The Division” looks ugly? You can check this tech demo video (start at 16:00 for lighting technique details). Snowdrop engine also used a similar method.

I would generally second an approach like the one in snowdrop, but fact is that it is already implemented more or less.
And yes, i’m speaking about indirect contribution from spericalcaptures. You need to enable it from a console variable that sounded like “r.diffusefromcaptures=1” but i don’t really remember how. Search the forum.

Problem with that feature is workflow, which is absolutely not ready for production.
It lacks the way to update on request (bp, i think you could do that in code) and it’s not optimized (meaning update has to be decided manually using some conservative algo, lacks automatic placement)
And it’s tied to reflections so you cannot really specify different contibution values.

So for me the actual feature request would become “DIFFUSE SPHERICAL CAPTURES WORKFLOW IMPROVEMENTS” or something like that.
That’s the only way we’ll see something like you are proposing, as implementig a new system on top of everything is wasteful now (remember that a lot of resources are being spent to get HFGI and DFGI working right now).
Just my 2c.

UE4 does something like that already for dynamic objects, it works great for things like characters, but there’s some stuff that won’t work so well, I wouldn’t want to light a whole environment that way. It’s possible the way reflection probes work could make it look OK, but I’m not sure.

So they just need to polish it now. It was closer than I expected. :rolleyes: