Download

How to enable Light Propagation Volumes GI [ WIP AND BETA]

After i found code for light propagation volumes(for the ones that dont know, its the same global illumination system that Cryengine uses), i investigated it, and after some time hunting it through the code found the way to enable it.

Yes, you can use **Dynamic Global Illumination ** right NOW.
The code is still a WIP, a beta feature, it WILL change in new releases, and its not completed at this moment, it suffers for really severe light leaking bugs, and i wouldnt ever recomend it for real development, this is only for trailblazers and people who love to tinker with stuff.

How to enable it:

I found a CVar config in the light propagation volumes, to enable them, you need to open Engine/Config/ConsoleVariables.ini, and add this line under [Startup]
r.LightPropagationVolume=1

That config variable will enable their use. Now, to use them, you need to disable lightmass ( Force No Precomputed Lighting set to TRUE in global settings)
Then you need to add a directional light and set its variable Affect Dynamic Indirect Lighting to true.
There you go, now you have dynamic GI. For fine tuning, add a Post Process Volume to your level, and tweak the settings in the Light Propagation Volumes part.

For the ones that want to know how it looks, RedBox, also a betatester, created this awesome level and added dynamic GI to it.

Awesome! Thanks for sharing :slight_smile:

So what are the bugs? That looks pretty good right out of the gate, Nioce!

How does it tie into the reflection environment? (since that is completely depending on static lighting as far as I know) any experiences?

You still need some static lighting to get good reflections.
I personally wouldn’t check Force No Precomputed Lighting, as it is still nice to have Ambient Occlusion from SkyLight.

It have severe leaking issues. You might notice them or not. Depends on your scene setup. Secondary bounce doesn’t work, but it takes 3ms to render. Some other options also doesn’t seem to work.

Also it’s dependent on camera position, if you get close, bounced lighting will look different than if you look from further distance.

It’s of course early wip, but for what it is… I like it!. In it’s current state I think it’s pretty viable to use with open scenes if you tinker with settings a bit. It adds this nice lighting variations, so lighting doesn’t really look uniform anymore.

Hopefully some clever people from community will pick this up, and help working it, as it looks pretty promising/

Hmmm…I followed your instructions and I am not getting any gi. Also putting the command into the console command field should work as well which it doesnt. Pretty confused right now :smiley:

You added that line to the configuration file? You made the directional light add contribution to GI? you disabled lightmass? You made the directional light do cascade shadows? You need to follow every step, and you dont need any console command.

I added the line in ConsoleVariable.ini under Startup (which SHOULD actually be the same as typing it into the console command field in the editor)
I switched the directional light from stationary to movable (if thats what you mean by cascaded, because actually both of them do cast cascaded shadowmaps)
and I enabled infuse this light into LPVs and forced no precomputed lighting

still no gi :frowning:

Wich is your pc?, LPV only work with Shader Model 5 cards.
Everything looks correct, last possibility, is add a post process volume and tweak its values for LPV there.

Jep…I have model 5. I also tried it with a post volume but shadows still are just black :frowning: But thanks for the help anyways :wink:

Just curious to know…does anybody else have problems getting this to work?

Brilliant !!! Thanks, I’ve been able to implement a nice Day/Night cycle with this. Looks great. I cant wait for them to implement this fully.

I had to turn off/delete my SkySphere to see the full effect of this, so try that also.

man…I dont know whats going on…that doesnt help as well :frowning: I was so happy to get my hands on the new builds now and check out these awesome things, and now they are not working like at the office where we are still on the December QA :frowning:
I guess I just need to wait for some more updates^^

But thanks again…every help is very much appreciated :slight_smile:

This is AWESOME! Unreal was about to be the last engine to implement dynamic GI, but they just saved themselves :wink: Thank you SO much for sharing!

def a nice find keep up the good work!

What would be great is if they could get this working on platforms other than Windows. LPV should be doable to some extent under OS X, depending on the approach. Though from the looks of it, they’re using compute shaders which at present the only way to handle that is to use OpenCL under OS X since OS X only supports up to OpenGL 4.1.

LPV DOES use compute shaders, the problem is that compute shaders only exist on DirectX 11 and OpenGL 4.3, wich apple doesnt support at this moment, so you are out of luck. The compute shaders seem to be abstracted, so im not sure if UE4 does that in opengl, but the other platform we can test at this moment for opengl is apple, and apple, doesnt support compute shaders yet.

To see it you actually also need to enable “Show Advanced Detail” which is located in your Details Panel under the Eye Icon right next to your Search Bar. The “Affect Dynamic Indirect Lighting” option can also be found in many other ClassTypes so always make sure to check “Show Advanced Details”. This way you can even set an option to Enable Emissive Light in your Material, buuuuut it doesn’t work.

Yeah, doesn’t work for me either after following the steps given

The file i edited is E:\Program Files\Unreal Engine\4.0\Engine\Config\ConsoleVariables.ini

I added the variable r.LightPropagationVolume=1 after [Startup], added a direction light and set it to affect indirect dynamic lighting. My file looked like this:

*; ConsoleVariables.ini
;
; This file allows to set console variables on engine startup (In undefined order).
; Console variables also can be set in engine ini files (e.g. BaseEngine.ini, DefaultEngine.ini) in the [SystemSettings] section.
; This file should be in the source control database (for the comments and to know where to find it)
; but kept empty from variables.
; A developer can change it locally to save time not having to type repetitive
; console variable settings. The variables need to be in the section called [Startup].
; Later on we might have multiple named sections referenced by the section name.
; This would allow platform specific or level specific overrides.
; The name comparison is not case sensitive and if the variable doesn’t exists it’s silently ignored.
;
; Example file content:
;
; [Startup]
r.LightPropagationVolume=1
; FogDensity = 0.9
; ImageGrain = 0.5
; FreezeAtPosition = 2819.5520 416.2633 75.1500 65378 -25879 0

[Startup]

; Uncomment to get detailed logs on shader compiles and the opportunity to retry on errors
;r.ShaderDevelopmentMode=1*