Hi All,
I decided to write a little guide about getting the mode out of LPV as a Dynamic GI solution. I believe we have achieve a very solid use-case with Dynamic GI and have gained some insight into the usage. With this we would like to give back to the community, there were very little guide on using LPV properly in Unreal Engine 4. I hope this would help someone along the way. Note that this is something I continue expand on as I learn more about LPV , so right now it might be a very long guide.
A lot of people seems to suggest that LPV isn’t production ready. I don’t quite agree ; but I digress since this isn’t the point of discussion.
But before we begin , I’d like to point out that this isn’t a guide on how to setup LPV but how to maximize it’s usability using LPV settings in post process and in general our experience of using it.
Official guide on how to setup can be found here
What’s great about LPV :
- Easy to Setup. One edit of .ini is all it takes.
- Relatively Cheap in performance comparing to other solution
- Cost is highly scalable to your liking. You can adjust the size, and easily turn on and off with a single boolean.
There are 2 major highlights that I want to cover in this tutorial/guide. It’s the thing that LPV doesn’t do out of the box(default settings)
- LPV is great but it does NOT look good out of the box. It’s inaccurate and make things look weird. You will need to adjust some extra settings when using it.
- LPV isn’t just used to add GI to areas. It’s also use to occlude ( darken certain areas ). For dynamic light setup , this is good because skylight fills the world up with constant light and if you have large shadowed area , it looks somewhat ‘unlit’ on these areas. I will cover occlusion as an important aspect of LPV ( again this isn’t automatically there out of the box ).
Firstly before we being, in order for you to unlock LPV’s settings. If you have yet to have a post process volume. Drop one in , uncheck ‘unbound’ and proceed to edit it’s LPV settings. Everything we’re talking about here deals with this section.
Let’s begin to deal with each issues of LPV:
Light Injection Bias
The first problem we face when we use LPV was the fact that light leaks through surfaces, making them look translucent. LPV works by splitting the affected area into small cube area and then calculate which area is affected by bounce and what color value it is. I don’t know the full working behind this , but adjusting this value prevents light from spilling over small surfaces. I noticed that somehow BSP are less affected by this. Here’s how it looks like with and without adjustment. Note the huge differences.
**Occlusion **
The second most useful option is occlusion. As mentioned earlier , most people tend to use LPV to light up additional areas with extra light bounces. But what they tend to forget is that occlusion is as important.
When you got with full dynamic lighting ( assuming you use DFAO ) , the skylight tend to flood shadowed area with a very uniform light , this create a very monotonous lighting. Turning on occlusion and adjusting them gives
you the advantage of darkening occluded areas. Some might think this is too subtle , however, when it comes to lighting , I believe subtle notes are sometimes the key factor in creating realistic environment…
To enable this , just increase the Occlusion intensity to above 0.0.
In the screenshot below , note the area behind the tree on the first picture and the general ambient inside the cafe. It has a very strong contrast. In the second picture , you can see shading of the pavement area totally differ from the one before tweaking.
Some extra info:
- In LPV settings . The Size parameter could significantly impact performance. It’s the size area where the LPV affects. You can tweak this value to balance performance vs quality.
- To allow scalability options for user to enable/disable Dynamic GI ingame, you can always enable/disable 'DynamicIndirectLighting 'boolean in DirectionalLight. This is the easiest way IMO.
- Secondary Light bounce can be enabled , I personally don’t find them significant , but the cost is extremely low. I suggest trying them out.
Here are some extra screenshot of what it wouldn’t be possible without LPV.
Additionally here are also some GIF Comparison of LPV turning Off and On; with the right tweaks the difference are quite significant.
Note that these are screenshot from our WIP game and there are some untextured assets, the point of this is to appreciate the subtle lightbounce of the environment.