VOGONS


First post, by WSH303

User metadata
Rank Newbie
Rank
Newbie

Here comes crazy idea: AMD released source code of FSR2.0, would it be possible to use it as a resampling filter?

Reply 1 of 23, by ZellSF

User metadata
Rank l33t
Rank
l33t

It's not a resampling filter, so no? It's a temporal anti-aliasing solution. Pretty sure it also requires information to work with from the software, that dgVoodoo can't give. AMD isn't able to universally apply it to games themselves.

FSR 1.0 would be possible, but for optimizing dgVoodoo for lower end setups SMAA would be far more valuable IMO.

Reply 2 of 23, by Aemony

User metadata
Rank Newbie
Rank
Newbie
ZellSF wrote on 2022-07-12, 23:45:

It's not a resampling filter, so no? It's a temporal anti-aliasing solution. Pretty sure it also requires information to work with from the software, that dgVoodoo can't give. AMD isn't able to universally apply it to games themselves.

FSR 1.0 would be possible, but for optimizing dgVoodoo for lower end setups SMAA would be far more valuable IMO.

Yup, FSR 2.0 requires that the game engine provides the algorithm with motion vectors to do its thing. This is why that CyberFSR2 mod that hacks FSR 2.0 into DLSS games work, because those games already make use of motion vectors and supplies them to DLSS, so the mod just replaces DLSS with FSR 2.0 and works with those same motion vectors.

Reply 3 of 23, by Dege

User metadata
Rank l33t
Rank
l33t

I wouldn't integrate AMD FSR into core dgVoodoo. I don't want alien code into it, and it'd be much better anyway to open up the possibility to write a general postprocess add-on so FSR and alikes could be implemented that way, by anybody.
But that'd require some refactoring/development on my part, so unfortunately I don't think I'll work on it in the near future. 😐

Reply 7 of 23, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie

In term of upscaling fidelity (not quality) there's no way to outmatch 1 pixel -> 2x2 pixel.

Or you must create a dedicated upscaling algorithm for every last stage AA used (FXAA, SMAA, CMAA, etc.) just like a control chain of transfer functions.
Having in mind the prostprocess stages/passes you can craft a dedicated upscaling (upscaling for FXAA, upscaling for SMAA, etc)

Reply 8 of 23, by ZellSF

User metadata
Rank l33t
Rank
l33t
lowenz wrote on 2022-07-14, 18:38:

In term of upscaling fidelity (not quality) there's no way to outmatch 1 pixel -> 2x2 pixel.

That's just making the assumption that 1 pixel should look like 4 identical pixels when making it larger. That is not necessarily true. You're still making a guess, inserting image data that isn't there, and I don't see how it's any more true to the original image than any other scaling algorithm.

Reply 9 of 23, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie

I'm talking about presentation (to monitor) stage, of course at that stage what I've said is true. I'm not talking about the fidelity of the rasterized 3D scene in relation to upscaled vs original resolution, but the fidelity of the upscaling it self.

Reply 10 of 23, by ZellSF

User metadata
Rank l33t
Rank
l33t
lowenz wrote on 2022-07-14, 22:25:

I'm talking about presentation (to monitor) stage, of course at that stage what I've said is true. I'm not talking about the fidelity of the rasterized 3D scene in relation to upscaled vs original resolution, but the fidelity of the upscaling it self.

At no point did I misunderstand what you're talking about, and I never talked about 3D rasterization either. What I said still applies.

An integer scaled image is not true to the original image, unless you make several assumptions. Assumptions there are other, valid answers to.

Reply 11 of 23, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie
ZellSF wrote on 2022-07-15, 07:34:
lowenz wrote on 2022-07-14, 22:25:

I'm talking about presentation (to monitor) stage, of course at that stage what I've said is true. I'm not talking about the fidelity of the rasterized 3D scene in relation to upscaled vs original resolution, but the fidelity of the upscaling it self.

At no point did I misunderstand what you're talking about, and I never talked about 3D rasterization either. What I said still applies.

An integer scaled image is not true to the original image, unless you make several assumptions. Assumptions there are other, valid answers to.

Please elaborate/explain.

With integer upscaling you can just invert the upsampling (4->1) and obtain the original (already rasterized) image. Just use the proper decimation window. So how can you have more *fidelity* than this?

Reply 12 of 23, by ZellSF

User metadata
Rank l33t
Rank
l33t

If your criteria for fidelity is if you can restore the original image, not if the upscaled image looks true to the original image then what you said is true.

But if it isn't:
If I view a 1920x1080 image on a 1920x1080 monitor (native resolution) I get no aliasing (jaggies).
If I view a 1920x1080 image integer scaled to 3840x2160 I get aliasing.
If I view a 1920x1080 image bilinear scaled to 3840x2160 I get no aliasing.

How's integer scaling more true to the original image? Only way I see that happening is if you assume the image was meant to be displayed on a perfect monitor, but more likely than not it wasn't. It was made for and tested on regular LCDs (or CRTs, for older software).

Reply 13 of 23, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie

It's why i've said "Or you must create a dedicated upscaling algorithm for every last stage AA used (FXAA, SMAA, CMAA, etc.) just like a control chain of transfer functions."

It applies to antialiasing AND to monitor limits. But just must create an algorithm using "information" about the output stage so you can craft a proper transfer function just like in open ring (maybe "open loop" is better in english) control systems.....to "compensate". But you can't always have access to that kind of information.

Reply 15 of 23, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie

I'm not "contradicting" anybody, I'm saying that if you want that kind of fidelity you must know the features of the output and reverse/compensate them in the upscaling.
But there's no singular output possible for an image signal (take the laste stage bunch of low pass filters known as "postprocess antialiasing" techniques we love so much AND the physical panel+screen behaviours), so the best definition of "fidelity" is the possibility to go back to the original one.

Just like in the encoding world. You want the source back, near the original as possible and not a "perfectly tailored" rendition.

Reply 16 of 23, by ZellSF

User metadata
Rank l33t
Rank
l33t

The possibility to go back to the original image, which isn't the purpose of upscaling, is just your weird definition of fidelity and and not at all an universally agreed on thing. That the image should look like the source image is the purpose of upscaling, and fidelity of the process should be judged by the actual use scenario.

Regardless though, you can do a reversible interpolated scale, which will be equally high fidelity to integer scaling by your definition. At that point, to distinguish between them, are you going to judge fidelity by how the image is actually shown, or keep ignoring reality and find some other irrelevant technicality to argue about?

Reply 17 of 23, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie

"weird"
"irrelevant technicality"

https://en.wikipedia.org/wiki/Fidelity

Similarly in electronics, fidelity refers to the correspondence of the output signal to the input signal, rather than sound quality

Maybe I'm from an engineering school so I know what I'm talking about?
Fidelity is NOT quality.

Reply 18 of 23, by ZellSF

User metadata
Rank l33t
Rank
l33t

In audio, "fidelity" denotes how accurately a copy reproduces its source. In the 1950s, the terms "high fidelity" or "hi-fi" were popularized for equipment and recordings which exhibited more accurate sound reproduction.

Similarly in electronics, fidelity refers to the correspondence of the output signal to the input signal, rather than sound quality, as in the popular internet connection technology "Wi-Fi".[citation needed]

One of the two definitions in the article you linked to talks about fidelity in terms of human perception. The other talks about fidelity in terms of Wifi packets.

I wonder which is more relevant for viewing imagery. When something has multiple definitions it doesn't mean you get to pick, claim all others are invalid, and say this isn't arguable.

Wikipedia actually has an article on image fidelity:
https://en.wikipedia.org/wiki/Image_fidelity

Image fidelity, often referred to as the ability to discriminate between two images[1] or how closely the image represents the real source distribution

Keywords: discriminate, represents. The image should look as closely as possible to the original. That's fidelity. Not being reversible (which again, there are other scaling algorithms that are).

Again though, I said that integer scaling being the highest fidelity is very arguable. I mean, considering we've been arguing over it for quite a while now, I think I've proven my point quite clearly already. You can't say integer scaling is the highest fidelity scaling without a few asterisks.