Lumen: Global Illumination in Unreal Engine
Zihan Liao, Jasper Liu, Junmin Chen, Jinglun Zhang
Overview
Goal:�In this final project, we aim to explore and implement the core and essential idea behind Lumen, the real-time global illumination in Unreal Engine. We want to build a global illumination renderer that traces the ray to collect direct light, but uses a Radiosity-based method for accumulating indirect light as Lumen does.
Key Ideas from Lumen:
Milestone Progress
Mesh Distance Field
Replaced expensive ray-triangle tests with ray marching over precomputed signed distance fields (SDFs), enabling real-time rendering with significantly higher frame rates.
Source: Bilibili, https://www.bilibili.com/video/BV1Hk4y1q7Rz/
SDF Grid Representation
Ray Marching Step Visualization
Render Output Using SDF
Card Generation
Optimize surface data storage by subdividing meshes into cards (oriented bounding boxes) by PCA and k-means. Store surface information to compact cards instead of the entire mesh bounding box’s volume to reduce memory usage.
Cached Normal within Cards
SDF within Cards
Surface & Radiance Cache
Surface cache stores surface properties, like normals and material information. Radiance cache stores computed indirect radiance, which can be reused and avoid unnecessary ray tracing.
Surface Cached Normal (Card-based)
Radiance Cache Update
Results
CBdragon
CBlucy
CBbunny
More Results with Mirror box
CBdragon
CBlucy
CBbunny
Why This Project Was Valuable