# Real-time Global Illumination from Unreal Engine 5

**URL:** <https://forum.babylonjs.com/t/real-time-global-illumination-from-unreal-engine-5/29209>\
**Category:** Off topic\
**Created:** [April 9, 2022, 1:01pm UTC](https://forum.babylonjs.com/t/real-time-global-illumination-from-unreal-engine-5/29209 "2022-04-09T13:01:32Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![ecoin](https://avatars.discourse-cdn.com/v4/letter/e/8e7dd6/32.png) [@ecoin](https://forum.babylonjs.com/u/ecoin)\
**Post date:** [April 9, 2022, 1:01pm UTC](https://forum.babylonjs.com/t/real-time-global-illumination-from-unreal-engine-5/29209/1 "2022-04-09T13:01:32Z")

</div>

When will [this](https://youtu.be/cRLnR4Kot2M?t=101) happen on the web? 😃

---

<div class="post-metadata">

**Author:** ![sebavan](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sebavan/32/57_2.png) [@sebavan](https://forum.babylonjs.com/u/sebavan)\
**Post date:** [April 9, 2022, 7:25pm UTC](https://forum.babylonjs.com/t/real-time-global-illumination-from-unreal-engine-5/29209/3 "2022-04-09T19:25:38Z")

</div>

Ohhhhh man find me the pdf techniques and if even possible on the web I ll add it in !!! It looks so stunning !!!

---

<div class="post-metadata">

**Author:** ![ecoin](https://avatars.discourse-cdn.com/v4/letter/e/8e7dd6/32.png) [@ecoin](https://forum.babylonjs.com/u/ecoin)\
**Post date:** [April 9, 2022, 7:31pm UTC](https://forum.babylonjs.com/t/real-time-global-illumination-from-unreal-engine-5/29209/4 "2022-04-09T19:31:04Z")

</div>

I think technical details down to algorithms is their trade secret, but there is documentation [here](https://docs.unrealengine.com/5.0/en-US/lumen-technical-details-in-unreal-engine/), and this [article](https://www.hardwaretimes.com/unreal-engine-5-lumen-vs-ray-tracing-whats-the-difference-and-which-one-is-better/#:~:text=Lumen%20is%20the%20default%20global,ranging%20from%20millimeters%20to%20kilometers.)

---

<div class="post-metadata">

**Author:** ![sebavan](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sebavan/32/57_2.png) [@sebavan](https://forum.babylonjs.com/u/sebavan)\
**Post date:** [April 9, 2022, 7:34pm UTC](https://forum.babylonjs.com/t/real-time-global-illumination-from-unreal-engine-5/29209/5 "2022-04-09T19:34:59Z")

</div>

Yup I definitely read those and Lumen + Nanite is hugeeee but requires so much lower level accesses and modern architecture only. If they ever run it on cheap android with opengles 2.0 We should be able to do it as well 🙂

Now my hope is that some of the architecture enabling fast streaming + ray tracing gets available in a near-ish future to WebGPU so that @Evgeni_Popov could implement it 🙂

---

<div class="post-metadata">

**Author:** ![evidanary](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evidanary/32/26170_2.png) [@evidanary](https://forum.babylonjs.com/u/evidanary)\
**Post date:** [March 16, 2024, 1:12am UTC](https://forum.babylonjs.com/t/real-time-global-illumination-from-unreal-engine-5/29209/6 "2024-03-16T01:12:23Z")

</div>

@ecoin @sebavan while something like Lumen may be far out in the future , looks like Unreal’s Nanite / progressive meshes is more within reach. Looks like this is done on the Web recently [https://x.com/marcel\_wiessler/status/1768640730422009910?s=20](https://x.com/marcel_wiessler/status/1768640730422009910?s=20)

I’m not sure how different this is from babylon’s [LOD API](https://doc.babylonjs.com/features/featuresDeepDive/mesh/LOD). AFAIK babylon has a mesh.useLODScreenCoverage = true; which may offer something similar. But I haven’t tried it and can’t say much about it. It also requires pre-generation of the LODs (unless you use [Auto-LODs](https://doc.babylonjs.com/features/featuresDeepDive/mesh/simplifyingMeshes) feature of babylon). Again, I haven’t tried those and can’t say much about it.

I do have a scene with very large number of vertices, though. So I will play around with this at some point in the nearish future.

---

<div class="post-metadata">

**Author:** ![mawa](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/mawa/32/12384_2.png) [@mawa](https://forum.babylonjs.com/u/mawa)\
**Post date:** [March 16, 2024, 9:08am UTC](https://forum.babylonjs.com/t/real-time-global-illumination-from-unreal-engine-5/29209/7 "2024-03-16T09:08:16Z")

</div>

> [@evidanary](#):
>
> I will play around with this at some point in the nearish future.

What can I say… far beyond my reach 😅 but then, please keep us posted 🙏

---

<div class="post-metadata">

**Author:** ![Evgeni\_Popov](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evgeni_popov/32/4432_2.png) [@Evgeni\_Popov](https://forum.babylonjs.com/u/Evgeni_Popov)\
**Post date:** [March 16, 2024, 3:57pm UTC](https://forum.babylonjs.com/t/real-time-global-illumination-from-unreal-engine-5/29209/8 "2024-03-16T15:57:16Z")

</div>

As far as I understand, your first link shows a selection of LODs based on a specific algorithm, but this is not a progressive simplification of the mesh as in Nanite. In Nanite, you don’t need different LOD versions of the same mesh (as seems to be the case in the link), the mesh is simplified in real time according to its size on the screen.

---

<div class="post-metadata">

**Author:** ![evidanary](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evidanary/32/26170_2.png) [@evidanary](https://forum.babylonjs.com/u/evidanary)\
**Post date:** [March 16, 2024, 5:24pm UTC](https://forum.babylonjs.com/t/real-time-global-illumination-from-unreal-engine-5/29209/9 "2024-03-16T17:24:37Z")

</div>

Ah I see. For some reason I thought they were dynamic. I can’t recollect why. I did see someone do nanite like loading on the web. Let me dig that twitter post. Will post here next week.

---

<div class="post-metadata">

**Author:** ![evidanary](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evidanary/32/26170_2.png) [@evidanary](https://forum.babylonjs.com/u/evidanary)\
**Post date:** [March 16, 2024, 8:14pm UTC](https://forum.babylonjs.com/t/real-time-global-illumination-from-unreal-engine-5/29209/10 "2024-03-16T20:14:35Z")

</div>

Here is the correct link @Evgeni_Popov [https://x.com/twodelab/status/1730360352343466176?s=46](https://x.com/twodelab/status/1730360352343466176?s=46)

Thanks for pointing it out.

---

<div class="post-metadata">

**Author:** ![Evgeni\_Popov](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evgeni_popov/32/4432_2.png) [@Evgeni\_Popov](https://forum.babylonjs.com/u/Evgeni_Popov)\
**Post date:** [March 17, 2024, 9:58am UTC](https://forum.babylonjs.com/t/real-time-global-illumination-from-unreal-engine-5/29209/11 "2024-03-17T09:58:26Z")

</div>

Yes, it seems a lot like [Virtually Geometric - #19 by Usnul - Showcase - three.js forum](https://discourse.threejs.org/t/virtually-geometric/28420/19).

This is impressive, however, I wonder how it would work with a real scene with hundreds or thousands of objects, because all the simplification work is done in JS, and JS is already the bottleneck in most WebGL graphics applications (or is it done in WASM?). The use of WebGPU and compute shaders would probably be very beneficial for the technique. There’s also the problem of progressive streaming of mesh data + rendering of small triangles in software, if we want to compete with Nanite 🙂.

---

<div class="post-metadata">

**Author:** ![alekop](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/alekop/32/4380_2.png) [@alekop](https://forum.babylonjs.com/u/alekop)\
**Post date:** [September 9, 2024, 7:01pm UTC](https://forum.babylonjs.com/t/real-time-global-illumination-from-unreal-engine-5/29209/12 "2024-09-09T19:01:14Z")

</div>

While not UE5-level, it’s possible to get pretty amazing results with WebGL “today”: [https://www.youtube.com/watch?v=PeAY8lC-l0U](https://www.youtube.com/watch?v=PeAY8lC-l0U). This is actually a few years old, but probably wasn’t playable on most devices when it came out. Even now, it’s running at about 33 FPS on Safari on M3 MBP.

---

<div class="post-metadata">

**Author:** ![ertugrulcetin](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/ertugrulcetin/32/33011_2.png) [@ertugrulcetin](https://forum.babylonjs.com/u/ertugrulcetin)\
**Post date:** [September 9, 2024, 9:38pm UTC](https://forum.babylonjs.com/t/real-time-global-illumination-from-unreal-engine-5/29209/13 "2024-09-09T21:38:22Z")

</div>

@Evgeni_Popov Do we have the same thing in BabylonJS?

---

<div class="post-metadata">

**Author:** ![Deltakosh](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/deltakosh/32/26635_2.png) [@Deltakosh](https://forum.babylonjs.com/u/Deltakosh)\
**Post date:** [September 9, 2024, 11:18pm UTC](https://forum.babylonjs.com/t/real-time-global-illumination-from-unreal-engine-5/29209/14 "2024-09-09T23:18:51Z")

</div>

We do have something along the same lines:

- [Global Illumination with Reflective Shadow Maps | Babylon.js Documentation (babylonjs.com)](https://doc.babylonjs.com/features/featuresDeepDive/lights/rsmgi)

- We also are working on IBL shadowing (WIP): [IBL Shadows and Ground-projection skyboxes | Babylon.js Playground (babylonjs.com)](https://playground.babylonjs.com/#8R5SSE#200)
