DavidGraham
Veteran
Such great strides on the animation front.
I would love to test a version of The Matrix demo compiled on UE 5.4 to see how much faster it is.
Such great strides on the animation front.
I remember a long time ago, nearly a decade ago when Sebbbi said that we would finally see more games move entirely to compute bypassing the need for the 3D pipeline and therefore ROPS.And perfect timing on both the software VRS and general (Nanite) improvements questions:
Props to Graham for the great presentation (slides linked there)!
Pretty sure they said it the State of Unreal it was 50% faster, but it would be nice to see it on console.
Are the latest UE5.4 features already in Fortnite? Would be cool to see improved performance.
Also, maybe we can get a new compiled UE5.4 city sample demo.
And perfect timing on both the software VRS and general (Nanite) improvements questions:
Props to Graham for the great presentation (slides linked there)!
Is the SW VRS compatible with the temporal upscalers? I mean, are they aware of each other and can they be used together to aid each other's weaknesses? It seems like it could be more beneficial now to have a higher internal resolution and more screen areas covered with SW VRS, while having less aggressive scaling factors for temporal upscalers. This way, the most pronounced artifacts, such as low res aliasing on edges in occluded areas (or when temporal upscaling fails to accumulate details), would be less noticeable because edges would preserve higher definition due to the higher base image resolution. Meanwhile, temporal upscalers should be able to reconstruct the missing details at 4x and possibly higher upscaling factors in the low resolution regions affected by VRS.And perfect timing on both the software VRS and general (Nanite) improvements questions:
Is the SW VRS compatible with the temporal upscalers? I mean, are they aware of each other and can they be used together to aid each other's weaknesses? It seems like it could be more beneficial now to have a higher internal resolution and more screen areas covered with SW VRS, while having less aggressive scaling factors for temporal upscalers. This way, the most pronounced artifacts, such as low res aliasing on edges in occluded areas (or when temporal upscaling fails to accumulate details), would be less noticeable because edges would preserve higher definition due to the higher base image resolution. Meanwhile, temporal upscalers should be able to reconstruct the missing details at 4x and possibly higher upscaling factors in the low resolution regions affected by VRS.
Ray tracing/marching are poor examples because this is where temporal upscalers have struggled for a while. The requirements for making them work with temporal upscalers are quite strict - jittering should be aligned, separate shader denoisers should not destroy the jittering (which they typically do), and rays should be launched per pixel, among other factors. Thus, it's a complex area, and only DLSS RR has succeeded here so far.raytracing/marching (in screenspace or otherwise) has been undersampled for ages now and TAA has been used to fix the image up afterward
Stochastic filtering is simple. This is essentially what DLSS SR already does at the junction areas of mip levels. Since these levels are positioned farther from the camera (due to the negative LOD bias), you can have a few texels per pixel there, which will add temporal noise (or shimmering, if you prefer). DLSS typically averages the noise out and produces higher resolution surfaces at the farther away levels, though it sometimes results in moire, as do other temporal upscalers, unfortunately. The key point here is that you can have different samples by sampling the same texture location, and DLSS SR will average this out for you, hence the stochastic filtering. With VSR, it's the opposite - there are fewer real samples than actual pixels. The temporal upscaler should be able to integrate all the samples piece by piece and assemble them into a higher-resolution image as if it were a puzzle. If anything is wrong with the sample locations, the process would not converge.There's interesting work on stochastic shading, filtering, etc.
Ray tracing/marching are poor examples because this is where temporal upscalers have struggled for a while. The requirements for making them work with temporal upscalers are quite strict - jittering should be aligned, separate shader denoisers should not destroy the jittering (which they typically do), and rays should be launched per pixel, among other factors. Thus, it's a complex area, and only DLSS RR has succeeded here so far.
Stochastic filtering is simple. This is essentially what DLSS SR already does at the junction areas of mip levels. Since these levels are positioned farther from the camera (due to the negative LOD bias), you can have a few texels per pixel there, which will add temporal noise (or shimmering, if you prefer). DLSS typically averages the noise out and produces higher resolution surfaces at the farther away levels, though it sometimes results in moire, as do other temporal upscalers, unfortunately. The key point here is that you can have different samples by sampling the same texture location, and DLSS SR will average this out for you, hence the stochastic filtering. With VSR, it's the opposite - there are fewer real samples than actual pixels. The temporal upscaler should be able to integrate all the samples piece by piece and assemble them into a higher-resolution image as if it were a puzzle. If anything is wrong with the sample locations, the process would not converge.
I think the major upscaling/denoising difference is Nvidia's incorporates AI (tensor cores). Intel and AMD (yet to be revealed approach) might follow suit or take a completely different tangent.Intel got it working before Nvidia did, I'm pretty sure DLSS 3.5 is based on that paper and the only reason Intel hasn't released XESS 2 is they're saving it for a Battlemage launch. AMD also has an upscaling denoiser under research, possibly launching in FSR4 launching this year. And raymarching has been "upscaled" since forever, that's generally how raymarching works unless you're maxxing out a game that even allows you to do that, there's not a ton of difficulty there once you can account for raymarching and upscaling at the same time.
That is not as easy as it may seem. As mentioned earlier, upscaling and denoising have different requirements. The input for denoisers is sparse, so spatial blurring is a requirement. The direction of the blur is typically anisotropic and depends on normals, samples density and other parameters, which can vary per frame, so it can easily skew the jittering by blurring in different directions in different frames, leaving no good details to accumulate with the temporal upscaler. And that is just one example. I can easily see that the same problems are possible with VSR, and it's not about who first demonstrated the joint denoise/upscale (which is a different topic, since between the initial demonstrations in a small, controlled environment and a fully-featured production implementation in a game, a year or more can easily pass).You just need to jointly denoise/upscale at the same time, choosing jitter and sampling patterns jointly for example
Intel has been using matrix accelerators ("AI" "tensor cores", in Intels case "XMX cores") since day 1I think the major upscaling/denoising difference is Nvidia's incorporates AI (tensor cores). Intel and AMD (yet to be revealed approach) might follow suit or take a completely different tangent.
The gains of a few milliseconds outlined in the presentation are certainly nowhere near the TSR's x factors, so the only realistic use case for VRS in games with advanced graphics should be in conjunction with TSR. Regarding quality, I'd not say that VRS has any strengths, as it uses a regular pixel grid for low res samples, essentially functioning like integer upscaling by clustering pixels, which results in a very visible quality loss compared to native resolution. Another reason why it should work together with a temporal upscaler. However, given that you still need to render the high resolution gbuffer with VRS, more attractive alternatives may exist, such as rendering a coverage mask at a higher resolution and guide an upscaler with it to produce perfect high resolution edges, potentially providing even better scaling factors.The real benefit of VRS though is as an alternative to upscaling at all of course, assuming an average scene you still pay for filling the g-buffer at full res, but otherwise get a "smarter" shading savings and better image quality than brute force upscaling.
The discussion referred to DLSS 3.5 so ray reconstruction and using tensor cores for AI trained denoisers instead of using a manually hand tuned, game provided denoiser. Yeah, Intel has had XMX cores since product introduction though only used for specific use cases in gaming.Intel has been using matrix accelerators ("AI" "tensor cores", in Intels case "XMX cores") since day 1
edit: or did you mean frame generation instead? That's something Intel hasn't released yet.