ReflectionCapture Actors for Dynamic Scenes

What are Epic’s plans for ReflectionCapture Actors in fully dynamic scenes? Will they ever be upgraded to work like CRYENGINE’s environment probes do? I ask because 4.3 is going to make Skylights usable in the dynamic path (which is great), and it got me thinking how committed Epic is to improving Unreal Engine’s dynamic rendering.

Coming from CRYENGINE, I am used to a very easy lighting setup for realtime environments. Is it one of Epic’s goals to make UE similarly easy?

ReflectionCapture actors are not going to be feasible in dynamic scenes (other than trivially small ones), the rendering overhead is just too much. It’s even worse with dynamic lighting and shadowing, we would have to re-render shadowmaps many times. Each reflectioncapture needs 6 renders of the scene, so for just 10 captures we’re talking 60x more rendering thread cost than rendering the scene normally. We could optimize that to render the cubemap in one pass, but that would still be 10x more rendering thread cost. There are really 2 or 3 feasible realtime reflection methods that I’m aware of, these are all distinct features from the existing Reflection Environment.

Ease of use is important to us, but it’s always a tradeoff with quality and performance. Fundamentally we’re trying to cover all the bases and let each project choose how to make that tradeoff. That flexibility to choose is important for an engine in which you can make many types of games, which UE4 is designed to be. You can use fully static (mobile), partially static (highest quality and perf), fully dynamic (lowest perf, currently missing some important features). We’ll continue to improve the fully dynamic lighting path going forward.

Thank you very much for the reply DanielW. When I imagined ReflectionCapture Actors in fully dynamic scenes, I thought they would not contribute to realtime reflections. Rather, the user generates the cubemaps once in the editor before runtime and the actors project that cubemap on surfaces in their radii as static lighting. It can even be used for fake global illumination–I think this is the way the latest CRYENGINE (3.6+) does it. Then realtime reflections are all done in screenspace.

Its good to know that Epic is trying to cover all the bases–Unreal Engine is already far more flexible than CRYENGINE overall. The dynamic lighting path is the only area where CE still has the big advantage, but I am glad to hear Epic will continue to improve it for Unreal Engine.

Thanks again.

You’re in luck! That feature already exists in an experimental form but isn’t polished yet. I think it was first in 4.2. You can try using it by setting the console variable r.diffusefromcaptures 1. You have to update reflection captures and recapture skylights after you change it. You probably want to check “Force No Precomputed Lighting” in the world settings and rebuild.

It works how you describe where captures are applied deferred to the scene, blending both the diffuse and specular contribution. The results are far blurrier than lightmaps and have much worse issues with leaking through thin walls but the indirect lighting is completely interactive in the editor. As Daniel explained, captures are still much too expensive to update during gameplay but the cost is fine for the editor.

We definitely intend to make lighting workflow simpler and faster as time goes on.