I recently switched to PC for all graphics work, which allowed me to use OpenGL 4.2+ features and dependent libraries. Which means I’m finally able to try out some modern GI solutions in Unity and Unreal Engine, namely SEGI and Nvidia VXGI. I built Unreal Engine 4.17 VXGI branch from code and played around with some of my favorite scenes.
Here’s this typical Japanese classroom scene, rendered with Redshift.
Here’s the scene lit by a directional light, emissive mesh and multi-bounce inderect light with VXGI. I used mesh distance field shadow instead of traditional cascaded shadow map.
With the help of VXGI, it is very easy to apply artistic control to the render while maintaining (relative) physical accuracy of material and light setup. I noticed that with voxel based GI light leaking happens a lot, and I had to place GI blockers to prevent them. Besides, in axis-aligned scenes such as this one, the default cone orientation tend to introduce huge error in axis directions, which can be overcome by increasing number of cones, but I imagine randomizing those orientations can help.
However, one drawback of voxel based GI is that it loses high frequency details of the geometry, and I can’t get any useful AO from it. I had to use SSAO and distance field AO to compensate, but the inconsistency is quite noticeable.
This is a scene I made to test VXGI in a more dynamic lighting setup.
In these renderes I’ve turned on specular cone tracing for reflections, and although there are voxel artifacts on smooth surfaces, it does a decent job on rougher surfaces picking up emissive and bounced light.
In conclusion, I’m very happy with the result of VXGI, although it’s such a resource hog, has limitation on scene size and sometimes might look too clean and filtered, I believe there are many cases such as some special purpose renderers and games that will benefit from the workflow and aesthetics of VXGI.