Light Propagation Volume Distance and Fade In/Out

I’ve been trying for a while to use Light Propagation Volumes for an open, somewhat large environment, but its limited range makes this almost impossible. Adjusting the LPV size via post processing volumes works to some degree, but even with a “maximum” value of 20000 I cannot cover nearly enough space to illuminate the whole scene. Any value higher than 20000 leads to way too much light bleeding and weird artifacts.

To counter this, it would be great if we could also adjust the resolution of the LPV instead of just adjusting the scale, in order to maintain quality even with an increased size. Another option would be having two LPVs: One for immediate environments and one for larger distances.

If that’s not feasible for technical reasons, it would be nice to get at least better fading from and to areas illuminated by LPVs. In 4.8 and earlier versions of the engine the global illumination faded in to some degree, but had a very rough and distracting transitions when moving backwards. In 4.9 the transitions are rough in both directions.

http://i.imgur.com/tmiSQv8.gif

[Full Size Image][2]

I’m sure these features wouldn’t be cheap in terms of performance - if they are possible at all - but it would be great to have the option. The game I’m working on does not require a lot of resources in other areas and it would be great to use them for better lighting. I’m also aware that Light Propagation Volumes are being developped by Lionhead, so I’m not sure if anyone here can comment on it. But it’s the best chance I got! I love the overall results of LPVs and would love to use them, but as it stands the problems unfortunately outweigh the benefits.

There are 2 console commands you can use to increase fidelity on the Light propagation volumes:

  • r.LPV.RSMResolution x (x being a number higher than the default, wich is 360). This increases the quality, and its not too expensive (tested with up to 1024 with almos not fps loss).
  • r.LPV.NumPropagationSteps x (i think the maximum is 4, otherwhise you get a lot of light).

I don’t remember where i read that increasing the scale by 2 increases the computational cost by 8, or something like that. LPV is a nice effect, but its not very useful when it comes to big spaces with nothing blocking your view (I’m using it for my project and getting simillar problems to those you are having).

The other thing you ask for is cascaded LPV, it has been asked for before, but Epic is not really working on the LPV implementation, as you already stated; and nobody really knows where Lionhead is going with it. Personally I was loving DFGI but as it got left aside by now I’m playing around with LPVs in the hope of Epic resuming the work on DFGI before its too late for my game to implement it.

PS: You might want to take a look at AHR for global illumination if you are not getting performance issues from rendering. You can look at it here
Or you could try using Nvidias VXGI, its really expensive in terms of performance and pointing more to “next gen” PC games.

Thanks Bariudol, those two console commands should come in very handy. It’s strange that they’re not listed in the documentation.

I don’t have huge environments, so maybe increasing the LPV size to around 50000 and upping the resolution to 1024 or higher will already do the trick. At least for open spaces. When I get into smaller areas with more objects blocking the view I can always dial it down again.

As for the other global illumination options, I would prefer sticking to what’s in the “main release” of the engine. I’m not much of a programmer, so using other branches seems a bit risky to me since I have no way of fixing problems if they occur somewhere down the line. As you already mentioned, VXGI and AHR also appear to be very expensive. I do have some rendering headroom, but probably not enough to use those GI solutions.

I just gave it a shot, but the console commands don’t seem to do anything. I tried adding them to the ConsoleVariables.ini as well as just punching them in at runtime, but there was no noticeable change either way. Searching on Google for those commands gave me nothing except for this website.

Is there any specific setup required to be able to use them?

No, there are no aditional steps to use this commands. It is more noticiable when the scale is not extremely big. The scale, as you know changes the size of the volume, making it less accurate. I tested the resolution command with a volume scale of 5k (lower values make the changes more evident).

As you can see in the image (I hope its visible enough).

If you set the RSMResolution to 0 it will disable the effect. Maybe when the volume scale is too big you need to really crank up this values; making the rendering cost super big I’m afraid.

Then I’m either doing something wrong or there’s something wrong with my scene (or maybe there’s something wrong with my GPU driver again…). I can see no change even with an extremely high RSMResolution and size set to 5312. Setting the RSMResolution to 0 doesn’t disable the effect either, nor does the performance change in any way. So I guess it’s safe to say that it’s not working on my end for some reason.

Is the command “r.LPV.RSMResolution 1024” (without the quotation marks) correct? Also, can the values be changed from within the console of the editor or does it have to be set in the ConsoleVariables.ini?

I tried both methods, neither gave me any results. The console commands for distance field GI never did anything for me either. Maybe I should open a separate ticket for that though…

Well, thanks again for your help in any case. I hope I can get these commands to work somehow!

Yes, thats the command. The value has to be set within the editor via console actually, maybe thats your problem.
However, remember that when you are using the ConsoleVariables.ini you need to use the ‘=’ symbol. Just like you did with r.LightPropagationVolume=1 to enable it.