There have been impressive improvement in global illumination optimisation in the past year. For those unfamiliar with Nvidia’s voxel-based global illumination (“VXGI”) and Georemics’ Enlighten middleware, here are illustrations of each:
VXGI:
Unreal Engine 4 - VXGI Quick Test - YouTubeEnlighten:
- YouTube (when I first saw that lamp fall and roll around while the light followed, I sat up and took notice)
- YouTube
Enlighten for Unity 5 Test 2 - YouTube (look how easy it is!)
An explanation of each:
VXGI:
If I understand correctly, it reduces the number of light interaction points by breaking up GameObjects (“GO”) into chunky voxels; Instead of having millions or billions of potential light interaction possibilities, you have hundreds or thousands. It must also effect parallelization of all GOs to offload GI calcs to the GPU.
Enlighten:
IIUC, it prebakes part of the GI calcs by precomputing the lighting relationships between static GOs and divides them so they can be shaded in parallel by the GPU
Now, Enlighten isn’t fully real-time; Non-static GOs must rely on light & reflection probes (or equivalents) to be affected by GI. That must reduce accuracy, even if you lerp the probes.
-
Anyone have any idea how taxing light & reflection probes are?
It also means that you can’t bounce light off dynamic GOs unto other GOs in real-time GI unless light/reflection probes can be attached to dynamic GOs. I don’t know if that’s possible but even if it is, those moving probes would be less accurate than static probes. -
Is it possible to attach light/reflection probes to dynamic GOs?
Several dynamics GOs affecting each other in terms of real-time GI seems like a really tall order.
The optimal solution seems to involve baking lighting relationships between static GOs in higher fidelity (like Enlighten) while breaking up dynamic GOs into voxels to bounce light off of them in lower fidelity (like VXGI).
Perhaps VXGI does this already. If not, it seems rather easy to upgrade VXGI to do that. Doing the full GI calc for every static GO is wasteful.
-
Is AMD preparing something akin to VXGI?
-
Are there other promising avenues for real-time global illumination?
-
Are there any GPU features or middlewares in the pipeline that will accelerate subsurface scattering, refraction and diffraction?
-
If not, what are the major obstacles to optimizing them?