is TemporalAA possible on voodoo5 ?

Started by Blazkowicz, 29 April 2004, 00:37:55

Previous topic - Next topic

Blazkowicz

ATI has unleashed a feature called Temporal AA (though accessible only with the windoze registry at the time)

MSAA sample positions are modified each other frame.
people report that it looks great (like twice the number of sample, but with no additional framerate loss!). I can't try it since I have no ATI DX9 card

only little annoying thing is that v-sync is required

http://www.clubic.com/n/n12467.html
http://www.beyond3d.com/forum/viewtopic.php?t=11889&postdays=0&postorder=asc&start=60

It seems to me that the Almighty T-Buffer would be perfectly able to do that (afterall, it can even do more than mere AA [8D])

I would be charmed if some God of the Glide hanging there could work on this !! [:I]
 

koolsmoky

TemporalAA can be done on any gfx card that can alter the position of its sample points on the fly. The V5 is capable of implementing TemporalAA and it has been discussed among the Glide developers last year. It is important to sustain a constant high (very high) fps to trick the human visual perception. Otherwise you will start seeing small objects and details flicker.

-KoolSmoky
 

dborca

But of course v-sync must be enabled.
The jittering is done every refresh. You can't jitter twice in the same refresh, cos it would be utterly pointless (you won't see any AA, just the same jittered image - always the same).
As a result, the complete AA cycle will be every freq/N, where freq is the monitor vertical refresh and N will be the sample count you want for AA. This means, the higher the monitor freq is, the higher IQ is. This also means the rendering have to keep up the pace, otherwise it'll jitter like hell.
Decreasing quality for this type of AA is dangerous. After a while trying to blast the baddies away, you'll start to see more than "details flicker"... perhaps moire patterns on your real-world room ceiling...
Regards,
Daniel Borca

FalconFly

#3
Hm...
Tried that RegTweak with Catalyst 4.4 on a Radeon 9700pro.

Result : NIL [?]

Tested multiple times with UT2004, various Resolutions, VSync ON, 2xAA.

PS.
I think, if the Sample position could be rotated in several Stages per written framebuffer (e.g. clockwise, in odd Degree steps a la 11° or alike), VSync could be left disabled without significant Image Quality loss.
ATI can't seem to do that on the fly (only 2 or 3 alternating patterns), about the 3dfx VSA100 I'm not sure ...

Anyway, interesting approach.
First time I've seen a 3D Application using rapidly alternating patterns, was in the Game "Battle Command" on the good old AMIGA.
They've used slightly different Colors, that were alternated to virtually increase the total amount of usable Palette colors.
Webmaster
http://www.falconfly.de
3dfx Archive

dborca

QuoteOriginally posted by FalconFly

I think, if the Sample position could be rotated in several Stages per written framebuffer (e.g. clockwise, in odd Degree steps a la 11° or alike), VSync could be left disabled without significant Image Quality loss.
Depends on what you take as "written framebuffer". You can't jitter AFTER writing. As for VSync... without it, you could get strange behaviors. Remember, you only see what's on the screen at the refresh time. I'll give an absurd example: you have monitor at 60Hz, but your rendering engine can do 120 FPS constantly. Serendipitously, the swap gets sync'ed with the refresh rate; twice per refresh (and yes, it is a hypothetical story). Then you won't see any AA. Just a jittered image. Always the same.

Getting back to real-world applications, it is not that unlikely you can get to see 85% of the time one image and 15% the other. Which make for a bad AA. I'd say the result is far from being worth the effort.

QuoteFirst time I've seen a 3D Application using rapidly alternating patterns, was in the Game "Battle Command" on the good old AMIGA.
They've used slightly different Colors, that were alternated to virtually increase the total amount of usable Palette colors.
Yes, it's an old trick. I played around with it a few years ago, when I tried to do 4092 colors on standard VGA. I eventually dumped the project, because I was unable to obtain a perfect sync. The interesting part is that EGA had an refresh IRQ which was _THE_ solution for this kind of tricks. The rest is piece of cake! Too bad VGAs don't have it anymore.
Regards,
Daniel Borca

FalconFly

Hm, I was referring to Double Buffering (maybe Framebuffer was a bad wording).

I think it should be possible to have a Flag (if not already present) that changes state whenever the Buffer (render target?) is swapped.

That way, the Antialiasing would always be in perfect sync (at least in terms of actually rendered Images). But I agree, there are a couple of rare, but possible situations where (in a 2 or 3-Variation solution) one type might be displayed much more often than the other.

But with a constant Rotation (if possible in the first place, that is), this effect would vanish, since every Rendered Image would receive a new Degree of Jitter, preventing an almost static image with mostly one single. (given an odd ~10 Degree rotation on every swap, it would take 36 rendered Images to return to the original Jitter cycle again).
Webmaster
http://www.falconfly.de
3dfx Archive

dborca

QuoteOriginally posted by FalconFly

Hm, I was referring to Double Buffering (maybe Framebuffer was a bad wording).

I think it should be possible to have a Flag (if not already present) that changes state whenever the Buffer (render target?) is swapped.

That way, the Antialiasing would always be in perfect sync
That's the easy part. Easy but useless! Remember, you only see what's on the screen at the refresh. What if you swap twice in the same refresh?

Regards,
Daniel Borca

FalconFly

Yep, that's the worst case, but only for a 2 Jitter variation solution ;)

But IMHO a quite rare case (I mean, when do you have almost exactly the fps, prolonged and stable in this 'unlucky' region ?)

I know of only a few cases where I've found myself personally running very constant 84-86fps on 85Hz Refresh with Vsync off (which indeed is quite painful). With a 3rd sample variation, the Problem should IMHO be already minimal.

If the AA is rotated by a notch every rendered Image, the Problem basically ceases to exist, regardless of fps (as in theory, every single Image would be using a different Degree of sample rotation)
----------------
So if the sequence of FSAA rotation is e.g. 9; 27; 45; 63 etc. (a 9 Degree Rotation, and every 2nd Frame dropped due to 'worst case' vsync-off fps), it should still look very nice.
(hope that explains my Idea somewhat)

But as said, if that's not possible, a 2 Variation Temporal AA could indeed vary quite alot in Antialiasing quality, or worst-case run effectively on normal 2xFSAA (although we'd still have 'normal' 2xFSAA, so the difference shouldn't be so bad; I reckon it would vary between 'okay' and 'very good' ;) )

Unfortunately, I still haven't got it to work on the R300 (?), so I can't even experiment with it first hand, and make a really sound evaluation :(
Webmaster
http://www.falconfly.de
3dfx Archive

dborca

#8
Ok,

to make everyone happy, I'll try to look into the matter. I guess the non-sync'ed approach is worth the effort. Because it's pretty simple to implement within Glide. I am still worried about two things:
1) if the framerate drops below a certain thresh, things start spinning in user's head
2) how will this be done taking the underlying FSAA into account (for example boosting 2xFSAA to 4xFSAA or 4xFSAA to 8xFSAA). That is, changing the jitter values on the fly is simpler when you don't have to worry about FSAA.

Worst case - if TAA proves to be of any good whatsoever -- people will end up having free FSAA. Well, not the best quality, but sort of...
Regards,
Daniel Borca

Blazkowicz

#9
Thanks for the technical discussion :)

I'm glad to see the feature will soon be available
(cf amigamerlin's italian topic)
 

Blazkowicz

now, what about some "temporal motion blur"
I think the idea is not new but it could look cool in some games.
Would it be easy to implement?
 

Nightbird

#11
Ohé Blazkowicz ;)
Combien d'autres idées avez vous en réserve ? :D

ps : How many others ideas do you have in stock ? :D
______________________________________________

In-ter-ac-tive :
The way video games were always meant to be played
______________________________________________

Welcome to 3dfxzone.it Community
_____________________________

Blazkowicz

nan je vois rien d'autre comme truc temporel avec le T-buffer :D

no I don't see any other Temporal thing with the T-buffer :D


anyway asking for features is maybe easier than implementing them [:o)]
 

Nightbird

Indeed, but if you ask nothing, you will get nothing ;)
______________________________________________

In-ter-ac-tive :
The way video games were always meant to be played
______________________________________________

Welcome to 3dfxzone.it Community
_____________________________