I’ve been working in UE5 for a few months now, and overall I’m absolutely blown away by Lumen. After dealing with bake management for over a decade… the quality of life improvement is game changing. Real-time iteration and no 4am bake watching?! Insanity.
It’s got some drawbacks though that are worth mentioning.
The one significant complaint I have regarding lumen vs baking is the lack of fine artistic control available in baked solutions - the ability to place soft area lights around a scene to sculpt lighting throughout an environment. This is a critical part of my workflow that I find really hard to give up, and I’m struggling to get the kind of artistic fidelity in a lighting solution that I would from a baked setup.
I’ve found that I can get very good results using emissive geometry throughout the environment, but as far as I can tell (I’ve tried every switch and dial I can find) there’s no way to flag an emitter as hidden-in-game but still contribute to the lumen solution.
- Please allow us to add ‘invisible’ emissive geometry.
Some other barriers I’ve come up against regarding runtime/dynamic lights:
-
Shadow casting runtime lights need a “shadow start clip distance” setting so they can be placed inside shadow casting geometry without being blocked by it
-
To coincide, a “light start distance” and “light start range” property pair to control how far from a light source’s pivot emission begins and what distance it’s blended over
-
Virtual shadow maps are crazy. But without a way to scale their shadow map resolution, it makes moving lights and some of the lights we use for environmental effects prohibitively expensive for us. It would be great if there was a way to reduce the expense of some lights while maintaining the fidelity of VSMs for directional light sources.
-
Finally, in an ideal world, a way to have moving runtime lights in volumetric fog that do not exhibit ghosting artifacts.
I believe we solved this at a previous studio by adding the light’s contribution to the fog at the start of a frame, and removing it at the end of the frame so there was no persistence. I could be wrong. It’s a pretty major complication though.
Thanks for reading <3