GART: Games and Applications using RayTracing

Status
Not open for further replies.
Wasn't probe grids the standard long before NV claimed innovation here? Some games had these dynamic even.
AFAIK, the only new contribution from DDGI was using depth map per probe to limit light leaking, which is quite an obvious idea IMO.
Yea pretty common, Halo has it as well. Lots of issues with light leaks and other lighting unification edge cases that need sorting. This improved technique really helps resolve some of its short comings without dramatically reducing performance.
 
Last edited:
Benefits of dynamically updated probes are quite obvious - less light leaking with depth tracking, support for fully dynamic lighting, support for destructible environments, color bleeding, "infinity" bounces at minimal fixed perf cost due to decoupled shading.

Drawbacks are obvious too - probes can't capture high frequency shadow/ light details, shadows, etc since probes grid is too coarse for that and will always be, light leaks that sometimes happen even with dynamic probes.

Combining probes with full fledged per pixel GI makes a perfect sense since per pixel GI is capable of fixing all the probes flaws and DDGI fixes limited amount of bounces with per pixel GI.

Is it relevant/beneficial that the probes are updated by casting rays? I thought one benefit was increased accuracy and resolution compared to say voxel tracing. Or is RTXGI also tracing into low res geometry.
 
I don't see a big benefit over VCT in terms of accuracy. Probe resolution is always very low (RT won't affect this at all - it's a memory / storage limit). So many traces become averaged to a single texel. Ofc. each trace itself is more accurate than a voxel cone, so that average becomes more precise.
But it's still quantized to global grid of low spatial resolution in the end. The largest error comes from here. RT neither improves angular nor spatial resolutions.
 
I thought one benefit was increased accuracy and resolution compared to say voxel tracing. Or is RTXGI also tracing into low res geometry.
From what i've seen so far in the Fabled Woods game with RTXGI and in the RTX Showcase demo, there is no light leaking with dynamic probes in comparison with Control where VCT causes light leaks thru thin doors, for example.
Another case that could be an easy win for dynamic probes is dynamic geometry support, it should be possible to factor in all dynamic geometry with dynamic probes.
Prebaked Voxels and SDFs only support static geometry, animated geometry with skinning would require real time voxelization, which is quite expensive and will inevitably lead to even more light leaking.
As for SDFs, there is no performant method to convert polygonal geometry to SDFs in real time just yet (so no support for skinned geometry either).
Also with dynamic probes, there is no need for prebaking and caring around prebuilt data structure == less disk space required for game package, faster loading times.
And yes, low res geometry tracing should be perfectly doable with DDGI like solution.
 
From what i've seen so far in the Fabled Woods game with RTXGI and in the RTX Showcase demo, there is no light leaking with dynamic probes in comparison with Control where VCT causes light leaks thru thin doors, for example.
Another case that could be an easy win for dynamic probes is dynamic geometry support, it should be possible to factor in all dynamic geometry with dynamic probes.
Prebaked Voxels and SDFs only support static geometry, animated geometry with skinning would require real time voxelization, which is quite expensive and will inevitably lead to even more light leaking.
As for SDFs, there is no performant method to convert polygonal geometry to SDFs in real time just yet (so no support for skinned geometry either).
Also with dynamic probes, there is no need for prebaking and caring around prebuilt data structure == less disk space required for game package, faster loading times.
And yes, low res geometry tracing should be perfectly doable with DDGI like solution.

You do know you can move SDFs around arbitrarily right? And that thin and detailed objects are solved problem with SDFs now. Hells judging by Dreams so is animation, they just haven't said how they did it yet.

Of course the real problem with probes regardless of tracing is low spatial and angular resolution. You can't do dynamically moving lights at all. You'll get massive energy loss as the light goes in and out of probe coverage, adding and dropping bounce light all around the scene in a definitely noticeable way. You'll also end up with incredibly weird artifacts from narrow lights regardless, no flashlights or much of anything smaller than the probe grid resolution really. Dynamic probe grids seem best for relatively slow moving time of day changes with sun and skylighting, and maybe some large static shadow casting lights, you can just cache a shadow map for visibility and hey youv'e got bounce light from those. Then you can take care of detail lighting however you do realtime tracing using single bounce lighting and ambient occlusion and whatever.

A hybrid definitely seems promising, I can see something like Metro's solution working really well when combined with a probe grid. Probe grids are great for getting uniform cheaply renderable lighting information, and round robin updates with probes that affect each other are a better idea than the Division where they tried just recursively bouncing the light around single probes. You'd be able to really get the "global" part of global illumination in a relatively memory compact and rendering cheap format with largely arbitrary lighting inputs, no more time of day bakes for anyone. Just as long as you have some other solution for doing lighting lower than the probe grid resolution it should work well.
 
each trace itself is more accurate than a voxel cone, so that average becomes more precise.
Also, in Metro, they do the same shading in hit points as in per pixel GI pass, hence they factor in for the 256 point light sources, emmisive surfaces and global light sources, such as the Sun and sky box, and that's because they are reusing the same shaders for per pixel GI and for probes (which in order inherited a lot from the direct visibility pass shaders).
With Voxels or SDFs, such unification would not be possible and even more approximations would be required, which would decrease lighting quality further.
 
You do know you can move SDFs around arbitrarily right?
That's obvious and even more obvious that moving prebaked parts around doesn't solve deformations and stuff like that which happens with skinning.

And that thin and detailed objects are solved problem with SDFs now.
Not in games where it's used for shadows and GI. There will always be mismatch in shapes as long as you are trying to represent sharp polygonal geometry with SDFs, that's why nobody uses SDFs for self shadowing for example.
With polygonal geometry in the main visibility pass, SDFs can be used only for very diffuse stuff since this will cause minimal light leaking and artifacting.

Hells judging by Dreams so is animation, they just haven't said how they did it yet.
They did it procedurally, which doesn't fit modern vertex animation pipelines with skinning at all.

Of course the real problem with probes regardless of tracing is low spatial and angular resolution
That's not a problem if you use them for second/third/etc bounces, which are very diffuse anyway. And there is the same problem with prebaked Voxels and SDFs.

You can't do dynamically moving lights at all
Yes, you can, this is exactly what they are doing in the enhanced edition of Metro Exodus. See this post - https://forum.beyond3d.com/threads/...s-using-raytracing.61234/page-28#post-2203238 and 4A games blog post for details.

You'll get massive energy loss as the light goes in and out of probe coverage, adding and dropping bounce light all around the scene in a definitely noticeable way
That seems to be just a guessing.

You'll also end up with incredibly weird artifacts from narrow lights regardless, no flashlights or much of anything smaller than the probe grid resolution really.
You will end up with artifacts with any lighting cache (Voxels, SDFs, vertex it doesn't matter) that does temporal accumulation unless there are heuristics to prevent these artifacts.
In other words, that's not an issue of dynamic probes, that's an issue of temporal accumulation.
 
With Voxels or SDFs, such unification would not be possible and even more approximations would be required, which would decrease lighting quality further.

Yeah, i also forgot RT uses actual geometry and not a voxel approximation, so even at distance where voxels mips break down it's still accurate.
So RT has a noticeable advantage over VCT here, to correct myself.

But low grid resolution still can't handle e.g. two doors inside one cell, which can happen with even lower res cascades at some distance and might put some constraints on level design.
Topological complexity, angled walls, etc. is still a problem, even with the depth map fix.
 
And that thin and detailed objects are solved problem with SDFs now.
SDF can handle non major axis aligned planes much better than voxels, but it can not represent detail below grid resolution either.
To support skinning, capsule skeletons seems the only way.
SDF per model takes a lot of memory.

To me, it seems a dead end, even if UE5 or Godot show some very nice results.
 
I never meant to say NVidia invented anything ground breaking with their probe based RT GI aproach. Rather I meant to say that considering how most modern engines use probe grids for GI (honestly, I think any PBR game this gen uses probe grids with few exceptions) including Unity and Unreal, that seams to be a promesing aproach to be researched. That does not mean games that chose to go that direction even need to use any of Nvidia's code or even just their research results at all. It's stuff they can develop on their own. All I'm saying is, it seems like a path of less friction into adopting dynamic RT gi to any game that already uses probes. Which is most.
 
I do wonder how updating the probes dynamically compares through cubemap rasterization vs. ray tracing.
 
I do wonder how updating the probes dynamically compares through cubemap rasterization vs. ray tracing.
Too many viewports to use HW rasterizer, but there were some compute splatting papers, e.g. Many LoDs.
If we could raster many views in parallel, would be interesting. Though, i tried point hierarchy with rasterized views, and the grid quantization of the framebuffer made it not accurate enough to integrate full GI because light sources are too small. TAA or multisampling is needed.
AFAIK, NV currently supports 16 viewports? Not enough. Would need something like thousands to compete compute approach i think. But every triangle will become a point in such tiny framebuffers, so splatting seems better anyways and HW rasterizer feels too serial.
 
Too many viewports to use HW rasterizer, but there were some compute splatting papers, e.g. Many LoDs.
If we could raster many views in parallel, would be interesting. Though, i tried point hierarchy with rasterized views, and the grid quantization of the framebuffer made it not accurate enough to integrate full GI because light sources are too small. TAA or multisampling is needed.
AFAIK, NV currently supports 16 viewports? Not enough. Would need something like thousands to compete compute approach i think. But every triangle will become a point in such tiny framebuffers, so splatting seems better anyways and HW rasterizer feels too serial.

Well, sone games have tried... As far as I know, frostbite did update their probes(used for diffuse and specular lighting/reflections) dynamically by rasterizing cubemaps, although they would spread their updates across many frames. Maybe only one cubemap face per frame...
Mafia I remaster is doing the same thing, plus they raytrace against the cubemap's z-buffer. And they have some of the best non-rt reflections on any game out there.
 
Well, sone games have tried... As far as I know, frostbite did update their probes(used for diffuse and specular lighting/reflections) dynamically by rasterizing cubemaps, although they would spread their updates across many frames. Maybe only one cubemap face per frame...
Mafia I remaster is doing the same thing, plus they raytrace against the cubemap's z-buffer. And they have some of the best non-rt reflections on any game out there.
Yeah, my reply was only about diffuse GI.
Unfortunately diffuse probes need high spatial resolution, while for reflections angular resolution ismore important. So we end up with different systems, although in theory we could get both from the same method. In practice, GI probes can only serve reflections of very rough materials.
So we can use rasterization for planar reflections of a water surface (which sadly has gone out of fashion after rise of SSR), or cube map per car, etc. But even there, as number of cars increases, RT becomes more efficient at some point. Same for many lights with dynamic shadow maps.
 
And only on the 3090 /Quadro 5000

It will run decently enough on a 3080 and below, but some areas will need a ton of VRAM, thus the framerate will tank to unplayable levels or the game might even crash.

I wonder if Nvidia can optimize this further, utilizing Sampler Feedback+Mesh Shading and making this into a standalone game that runs well on every RTX card.
 
And only on the 3090 /Quadro 5000

It will run decently enough on a 3080 and below, but some areas will need a ton of VRAM, thus the framerate will tank to unplayable levels or the game might even crash.

Cool demo. There's RT of course but the geometry and texture detail is pretty high too.

It's locked at 48fps and 13GB vram usage on my 3090. GPU usage sits between 50-70% depending on how many transparent/reflective surfaces are on screen or with the fiery marble. But always locked at 48fps even in the menu. I can't figure out how to check what resolution it's running at though or how to change the resolution. I'm not sure if it's actually running at 48fps either because it feels noticeably choppier at certain points.
 
Status
Not open for further replies.
Back
Top