Inside Unreal: DLSS and RTXGI with NVIDIA

[ATTACH=JSON]{“data-align”:“none”,“data-size”:“full”,“data-tempid”:“temp_203814_1601408033236_183”}[/ATTACH]

[ATTACH=JSON]{“data-align”:“none”,“data-size”:“full”,“data-tempid”:“temp_203816_1601408202523_460”}[/ATTACH]

Hi All, I know this isn’t an official feedback thread, but it seems to be the place to throw in opinions for now, so here I go. Hopefully some of this might find its way to the developers ears.

I have been playing around with the RTXGI branch for a few days (SDK v1.1) and I’m really impressed by what can be achieved. It could be the primary lighting solution to a project I’ve been working on for over a year (and have tried hundreds of different set ups to get right, each with their own caveats).

Just to avoid confusion about my assessment so far, here are my objectives when testing lighting solutions for my project -

  • Lighting should work for indoor and outdoor locations simultaneously in an open world environment.
  • The main lighting source should be a skylight using an HDRI.
  • The HDRI has no direct sunlight (in other words overcast) so light is travelling and bouncing from all parts of the sky (at least during the day).
  • The lighting solution should allow for graceful transition between day and night in realtime.
  • Light from point / spot / area / emissive lights should also bounce within a scene accordingly in realtime.
  • Light & shadows should interact with volumetric fog, including blocking it out when indoors.

Simple, right?

I think RTXGI achieves almost all of this on its own which is amazing.
Here’s a few things I’ve noticed (that I presume are already being worked on as we speak) whilst playing with the system + some suggestions (just my own opinions and I’m sure there are probably better ways to do things).

  • Skylights - After fiddling around for several hours I accidentally discovered that RTXGI does actually work with a Skylight! This is something I did not expect as most other realtime systems seems to prefer direct light only (mainly a directional light) to perform other calculations from. Having watched the UE5 demo (which I’m presuming is using a version of this same tech), I’d assumed RTXGI would only use a directional light too. But no, it can take in light from a Skylight with a HDRI.
    The thing is, it only seems to work with a Static Skylight?! I presuming this has just been overlooked for now and will be remedied. Surely it should follow that you’d want to use a moveable (rotatable) skylight with a realtime GI solution? Otherwise what’s the point?
    If this is case then I’d really hope there’ll be a way to have the skylight only emit light into the RTXGI volumes - otherwise, at the moment, a moveable skylight emits a very simple illumination into the whole scene which illuminates every surface and destroys all shadows.
  • **Translucency **- so far it seems like it doesn’t work with translucency (such as simple glass in windows). Masking seems to be ok, but yeah, pretty sure it’s dead in the water if it can’t penetrate glass.
  • **Ray Traced Reflections **- or lack their of. The light emitted by the DDGI volumes does not seem to be captured by raytraced reflections. Maybe I missed a command that enabled this, but I couldn’t get it to work.
  • **Reflection Captures **- the light from DDGI volumes does seem to be captured by these but only when the camera is nearby during the capture. Otherwise big black areas are produced. I can only imagine it’s because the GI is only local to the player camera for now.
  • **Color Saturation **- I’ve noticed that DDGI bounced light tends to gain the saturation of surfaces it touches by quite a lot. Very desaturated surfaces like bricks become glowing red when exposed to the GI volumes.
  • **SSGI **- Although the video shows the SSGI and RTXGI working together I could not get them to co-exist on the latest branch. One cancelled out the other. I presume that’s because the public branch is behind the one in the video. SSGI could add some smaller details at close range that RTXGI fails to without having to add many smaller DDGI volumes.
  • Rotation - the DDGI volumes don’t seem to rotate. I hope this isn’t a restriction of the light being calculated with world aligned cubes. If the volumes can’t be rotated in future then it makes the whole system useless for any geometry that isn’t world aligned. Light probes would end up poking out of rooms / buildings and produce severe artifacts.
  • **Light Contribution **- most lights have an ‘indirect lighting intensity’ slider that could be used to influence the contribution of any particular light to the GI. Having the ability to have certain lights bounce more than others would be a great tool for location design.
  • **Volumetric Fog **- having RTXGI influence volumetric fog would be great too - especially if it was additive AND subtractive. For example if a smaller DDGI volume within a larger one could subtract the fog (to clear a room of fog in my case). On a side note I saw in the presentation that raytraced lights were creating volumetric shadows - please make this available!
  • **Probe placement **- this is a very clever system and has so much potential. However I think that the current method of choosing the amount of probes per axis is a little awkward. I think a much better system would be to have the amount as a factor of the overall DDGI volume’s size. e.g. have a ‘probe spacing’ slider which sets the probes at a set distance apart - then adds / subtracts probes as the volume is sized and new probes are needed. A max and min density could then be set within the engine to avoid mem overload.

Anyway, that’s my two pence for now. I’ll keep playing around with it and see if I can come up with anything else.
Amazing work and a huge breakthrough in light fidelity! Much appreciated.