I started to do my test room with some rooms and lights.
First I made a Blueprint that has a working light and I want to switch it when I need it, maybe by pressing a button or from an event. To achieve this, I place a simple cube mesh that supports the entire structure and a sphere mesh with a special glowing material that will represent the light bulb. I then place a cone of light attached to the sphere to make the lighting I want.
I know that this isn't the most optimal mesh but it's for testing purposes only. From here I will make a main blueprint to make some child blueprints that inherit the main properties and with some specific options and meshes.
To avoid some lighting changes with the automatic exposure I set a "Post Process Volume" with this:
- Lens -> Exposure -> Metering Mode = Manual
- Lens -> Exposure -> Exposure Compensation = 1
I modified the light Blueprints to configure it with an on and off state. I don't want to focus on this for now because it includes logic where I change the material of the light so that it stops glowing when it's off.
The result is something like this:
Pretty good and with the new version of Unreal 5.1 this looks better as the lighting quality is improved. But it has a problem: if I turn this light off, the light does a fade effect because Lumen is processing the light change slowly.
This is for performance reasons because fast Lumen light change demands high GPU power and it don't suit my need because I want instant light change with less GPU power demand. I did a test changing Lumen to normal lighting.
See the problem? Without Lumen I lost the ambient light which is calculated from indirect lighting so I have to do it manually. This is the result with indirect light:
Not as good as Lumen but it's enough for now. And when I turn off the light the result is inmediate:
So I need to make the lighting manually. To help me to achieve it I made a new Blueprint called BP_SceneConfig where I will apply some variable settings, maybe from a future settings screen I need to change some things like lighting performance. In this Blueprint I added an option to turn Lumen on or off to help me compare scenes with and without Lumen and try to get a similar lighting manually.
This Blueprint gets the "Post Process Volume" and configures it:
The Event Dispatchers then fire the LumenOn and LumenOff events to inform all objects that they have to change something to accommodate the new settings, for example turn my manual indirect lighting on or off.
It might be useful to change this setting dinamically depending on the room, as an external environment or a room with fixed light will work better with Lumen.