How R300 6X FSAA works?

Tatchan

Newcomer
Does it still render up the scene to 6x size, do MSAA and filter it down? Becasue the sampling method of it is so..... interesting, makes me think of it's not just 800x600 -> 1600x1200, can anyone help me? Thanks
 
Tatchan said:
Does it still render up the scene to 6x size, do MSAA and filter it down? Becasue the sampling method of it is so..... interesting, makes me think of it's not just 800x600 -> 1600x1200, can anyone help me? Thanks

Well for one thing it wouldn't be 800x600 -> 1600x1200. That's 4x. :)

And to answer the question: No it doesn't. You can't for MSAA. Literallly.

That method is ordered-grid supersampling ONLY.
 
from daves 9700pro review:
Radeon 8500 was supposed to feature a programmable jitter sample position FSAA scheme for enhanced image quality; however, this scheme operated on a Super-Sampling basis which results in quite a performance impact (PJSS). Although Radeon 8500's PJSS FSAA scheme is included in R300, it has not been included in the drivers for Radeon 9700 PRO. Instead, Multi-Sampling is utilised.

R300's Mulisampling scheme also features the programmable jitter sampling system (PJMS) allowing for many other sampling patterns than just straight ordered grid or fixed jittered grid, and thus resulting in a higher level of edge anti-aliasing. 2, 4 or 6 Multi-Sample samples can be taken per pixels, each with a programmable jitter table forcustom sample patterns. However, if no custom patterns are used defaults will be applied.

The FSAA Sampling method on R300 also features a Gamma correction technique. Some 3D applications provide Brightness settings to allow you to adjust the outputted display to suit the particular Gamma curve of your display screen. R300's AA can read in these application settings and take them into account when generating the final FSAA image so that the actual averaged sample is best suited to the gamma curve of your display, thus reducing the visible aliasing on the edges.

the sampling pattern might look like this
6xfsaa.gif

taken from within3d
 
Tagrineth said:
Tatchan said:
Does it still render up the scene to 6x size, do MSAA and filter it down? Becasue the sampling method of it is so..... interesting, makes me think of it's not just 800x600 -> 1600x1200, can anyone help me? Thanks

Well for one thing it wouldn't be 800x600 -> 1600x1200. That's 4x. :)

And to answer the question: No it doesn't. You can't for MSAA. Literallly.

That method is ordered-grid supersampling ONLY.

Thx, but if it don't draw to a larger res, how can the GPU knows each sub-sample's color?
 
Re: how can the GPU knows each sub-sample's color?

Hi Chrisoph,

You mean we can know the color of each sub sample without drawing at larger res.? Because I'm reading Firing Squad, Dave said we have to draw in larger res....
And after reading FS, it makes me think of....MSAA is in fact a kind of Edge AA, all it does is to find out where the edge and how many subpixel they take...
I really have no idea on MSAA. :cry:
 
I don't know exactly but from what I've read (and picked up here :)) there are zchecks in each render pipe (6 per pipe on r300 chips, 4 on gf3/4/FX) and these determine whether a pixel is on the edge of a polygon. If it isn't then one texture read is taken and all subsamples are written to the framebuffer with this colour. If there is a polygon edge then one texel is taken from each polygon and then the subsamples are written to the buffer with the relevant colours.

r300 and nv30 both have colour compression. Since most pixels are not on edges the subsamples are generally the same colour so they can be compressed losslessly before being written to the buffer.
 
Bambers said:
I don't know exactly but from what I've read (and picked up here :)) there are zchecks in each render pipe (6 per pipe on r300 chips, 4 on gf3/4/FX) and these determine whether a pixel is on the edge of a polygon. If it isn't then one texture read is taken and all subsamples are written to the framebuffer with this colour. If there is a polygon edge then one texel is taken from each polygon and then the subsamples are written to the buffer with the relevant colours.

r300 and nv30 both have colour compression. Since most pixels are not on edges the subsamples are generally the same colour so they can be compressed losslessly before being written to the buffer.

Thanks, but how can zcheck can help to know we're on the edge? I think we can have 2 polygons with 2 different color, and same z value, right?
 
Tatchan said:
Thanks, but how can zcheck can help to know we're on the edge? I think we can have 2 polygons with 2 different color, and same z value, right?
This is correct. You don't use a Z check to check for edges.
 
2 polys with different colours and the same zvalue doesnt make sense to me. Might be possible in some situations but I cannot visualise it.
 
OpenGL guy said:
Tatchan said:
Thanks, but how can zcheck can help to know we're on the edge? I think we can have 2 polygons with 2 different color, and same z value, right?
This is correct. You don't use a Z check to check for edges.

Then what's the reason to have different z value for each sub sample? :oops:
 
misae said:
2 polys with different colours and the same zvalue doesnt make sense to me. Might be possible in some situations but I cannot visualise it.

How about this, can we have different z values for each sub sample within a polygon?
 
Tatchan said:
OpenGL guy said:
Tatchan said:
Thanks, but how can zcheck can help to know we're on the edge? I think we can have 2 polygons with 2 different color, and same z value, right?
This is correct. You don't use a Z check to check for edges.

Then what's the reason to have different z value for each sub sample? :oops:
Because you want accurate results when polygons intersect.
 
OpenGL guy said:
Tatchan said:
OpenGL guy said:
This is correct. You don't use a Z check to check for edges.

Then what's the reason to have different z value for each sub sample? :oops:
Because you want accurate results when polygons intersect.

IC, that means it's the mask to help us to find out the where edges are, and we only calculate all the sub samples color when the samples fall on the edges, right? And the way we find out the color of sub samples are not by drawing at higher res, just offset the coordinates a little bit? Thanks again.

PS. If you don't mind, I would like to ask thru ICQ, seems my silly question is so simple to you guys....
 
I read the whole post, and couldn't see anyone saying this, and it's VERY important.

SuperSampling means you are increasing the framebuffer size. That means with 4X SSAA, you've got a 4X bigger buffer.
However, MultiSampling means you're increasing the number of buffers. That means that with 4X MSAA, you've got 4 buffers of the same size as the 1 you got without MSAA.

How is this important? Well, that means that with MSAA, it's simply rendering the screen several times. With SSAA, it's rendering a bigger screen.

The main advantage of MSAA is quite simple. The hardware *knows* those sub-samples are closely related.
With SSAA, it's nearly impossible to know which pixels are sub-samples. Why? Because to increase Y by 1, you've got to increase X by the whole screen X resolution! So, at 640x480, Pixel X0, Y1 is in fact the 640th pixel!

That means the hardware can put the same color in every sub-sample, to save a lot of performance but slightly reduce quality. Otherwise, you simply couldn't. You can't determine if a pixel has already been rendered, and you can't keep a pixel for a whole scanline!

Furthermore, SSAA *got* to be ordered. With MSAA, you can put your sub-pixels in a rotated or random way to increase quality, without sacrifying performance. Actually, it might be possible to do a non-ordered SSAA approach, but it would be awfully complex ( you'd have to divide the pixel X&Y by the screen resolution, get what remains, and see where you'd have to place it in Triangle Setup. That certainly wouldn't be efficient! )
That's why 3DFX choosed MSAA instead of SSAA; being able to have non-ordered sub-samples to increase quality.

"What?! 3DFX didn't use MultiSampling!" - Actually, the VSA-100 used MultiSampling.
Like with any MSAA approach, there were multiple buffers instead of one bigger buffer. And the sub-pixels were rotated.

But then... Why is it so often called SuperSampling? You've got to thank the nVidia PR empire for that.
With the GF3, MultiSampling main advantage was finally used: taking the same color for each sub-pixel. But then, why didn't 3DFX use that? I don't know. IIRC, 3DFX had slower memory than nVidia. And that probably means that in their case, it wouldn't have done miracles ( as to why they didn't try using faster memory and add it, I've got no idea at all - maybe that was going to be a refresh? )
So, nVidia wanted to make people think their architecture was fundamentally different from 3DFX one, to make it sound better. But in practice, it wasn't. It's only slightly different.

Now, even nVidia patents define SSAA & MSAA by saying SSAA outputs different colors while MSAA outputs the same color each time.
This just ain't correct. The true definition is what I explained above.
And that also means the 8500 AA *is* MSAA; it just doesn't output 1 color per pixel.
We've got no term to say it outputs one color per pixel. That's why we use MSAA for it today. It's sad, because the advantages of MSAA also reside in non-ordered sub-pixel positions. 3DFX invented MSAA, and they only get credit for hardware AA ( while hardware AA could also be done using bigger buffers and doing the resizing in hardware ) ...
nVidia simply made a small change to the MSAA idea for the GF3. Nothing as huge as most people think.
Ah well, I guess there's nothing I can do about it :(
RIP, 3DFX ( No, I never owned a 3DFX card. But I've got respect for them, as most people here I suppose )


Uttar
 
SuperSampling means you are increasing the framebuffer size. That means with 4X SSAA, you've got a 4X bigger buffer.
However, MultiSampling means you're increasing the number of buffers. That means that with 4X MSAA, you've got 4 buffers of the same size as the 1 you got without MSAA.

Thats not necessarily the case. Both supersampling and multisampling can be done by either creating several buffers or by defining a single larger (say 2x2 for 4X AA) buffer.

[edit] Actually, reading your post there are multiple misconceptions in there, many basically stem from a misunderstanding over the terms 'Multisampling' and 'SuperSampling'
 
Uttar said:
I read the whole post, and couldn't see anyone saying this, and it's VERY important.
Pretty much everything you say after this point is incorrect.
SuperSampling means you are increasing the framebuffer size. That means with 4X SSAA, you've got a 4X bigger buffer.
However, MultiSampling means you're increasing the number of buffers. That means that with 4X MSAA, you've got 4 buffers of the same size as the 1 you got without MSAA.
This is wrong.

The only difference (and it's a big one) between SSAA and MSAA is that with SSAA you compute the color for each subsample separately whereas for MSAA you use the same color value for each subsample. Both methods use larger Z and color buffers.
The main advantage of MSAA is quite simple. The hardware *knows* those sub-samples are closely related.
The colors certainly have a good chance of being related with MSAA.
With SSAA, it's nearly impossible to know which pixels are sub-samples.
You lost me here. With both methods, each subsample is a subsample.
Why? Because to increase Y by 1, you've got to increase X by the whole screen X resolution! So, at 640x480, Pixel X0, Y1 is in fact the 640th pixel!
I don't get this either. Isn't this true for AA or non-AA?
That means the hardware can put the same color in every sub-sample, to save a lot of performance but slightly reduce quality. Otherwise, you simply couldn't. You can't determine if a pixel has already been rendered, and you can't keep a pixel for a whole scanline!
You don't have to order things in a linear manner, and you wouldn't if you wanted good performance. As has been mentioned previously, every is using tiled memory arrangements to keep closely related data near each other.
Furthermore, SSAA *got* to be ordered.
No, it doesn't.
With MSAA, you can put your sub-pixels in a rotated or random way to increase quality, without sacrifying performance. Actually, it might be possible to do a non-ordered SSAA approach, but it would be awfully complex ( you'd have to divide the pixel X&Y by the screen resolution, get what remains, and see where you'd have to place it in Triangle Setup. That certainly wouldn't be efficient! )

That's why 3DFX choosed MSAA instead of SSAA; being able to have non-ordered sub-samples to increase quality.
3dfx used RGSSAA on the Voodoo 5 parts. Each chip computed one of the samples for each pixel.
"What?! 3DFX didn't use MultiSampling!" - Actually, the VSA-100 used MultiSampling.
It was supersampling. Check out the improved texture quality.
Like with any MSAA approach, there were multiple buffers instead of one bigger buffer. And the sub-pixels were rotated.
Yes, they used multiple buffers, because each chip had to compute one sample per pixel, but there's no reason why MSAA or SSAA must use multiple buffers or not. In any event, VSA100 was using supersampling: How would each chip get the color data for a pixel? They would each have to compute the color so they might as well be doing SSAA (which they were).
But then... Why is it so often called SuperSampling? You've got to thank the nVidia PR empire for that.
I don't get this.
With the GF3, MultiSampling main advantage was finally used: taking the same color for each sub-pixel. But then, why didn't 3DFX use that? I don't know. IIRC, 3DFX had slower memory than nVidia. And that probably means that in their case, it wouldn't have done miracles ( as to why they didn't try using faster memory and add it, I've got no idea at all - maybe that was going to be a refresh? )
MSAA has little to do with memory and everything to do with saving calculations.
So, nVidia wanted to make people think their architecture was fundamentally different from 3DFX one, to make it sound better. But in practice, it wasn't. It's only slightly different.
Ahh, it's a conspiracy.
Now, even nVidia patents define SSAA & MSAA by saying SSAA outputs different colors while MSAA outputs the same color each time.
This just ain't correct. The true definition is what I explained above.
And you're wrong.
And that also means the 8500 AA *is* MSAA; it just doesn't output 1 color per pixel.
No, the 8500 does SSAA.
We've got no term to say it outputs one color per pixel. That's why we use MSAA for it today. It's sad, because the advantages of MSAA also reside in non-ordered sub-pixel positions. 3DFX invented MSAA, and they only get credit for hardware AA ( while hardware AA could also be done using bigger buffers and doing the resizing in hardware ) ...
nVidia simply made a small change to the MSAA idea for the GF3. Nothing as huge as most people think.
Ah well, I guess there's nothing I can do about it :(
RIP, 3DFX ( No, I never owned a 3DFX card. But I've got respect for them, as most people here I suppose )
What 3dfx did was RGSS. Just because it used multiple buffers doesn't mean it was multisampling.

If 3dfx called this multisampling, then I would disagree with them. Plus, they would be doing themselves a disservice because MSAA doesn't improve texture quality whereas SSAA can.

Looking back at your post, some things make little sense. You say 3dfx used MSAA. You say that MSAA implies that the color samples for each pixel are closely related. Isn't that was you claim nvidia is saying? With SSAA, the subsamples can have vastly different colors even for pixel fully covered by a polygon. With MSAA, pixels that are fully covered get all the same color value for each subsample. It sounds to me that 3dfx was using SSAA, even by your own definition, because each subsample was a different color.

I think you are using the fact that 3dfx used multiple buffers to justify calling this MSAA, when the fact that it's multiple buffers isn't the defining feature of MSAA because it can be done without multiple buffers just as SSAA can be done with multiple buffers.
 
Well, as I explain in the end, I believe the terms MultiSampling & SuperSampling are not used correctly. The way most people use them, even technical folks, is incorrect.

This comes from the very root of the word. "Multi" means "Many; much; multiple: multicolored."
Super, on the other hand, means "Superior in size, quality, number, or degree"

For that definition of "Super", it's at http://dictionary.reference.com/search?q=super
For that definition of "Multi", it's at:
http://dictionary.reference.com/search?q=multi

I'm pretty sure Dave Barron old article about MultiSampling before the GF3 launch roughly explains this, but in very little detail. I'll have to verify that.


Uttar

EDIT: It sounds like some of the confusion comes from me saying Multisampling enables you to see those sub-pixels are "closely related".
Sorry, wasn't very clear by saying that.
I'm *NOT* saying that means they've got the same color. I mean the GPU can easily see that those sub-pixels are in a same final pixel.
Here's the Dave Barron article explaining MultiSampling:
http://firingsquad.gamers.com/hardware/multisamp/

And here's the direct link to the V5 Multisampling thingy:
http://firingsquad.gamers.com/hardware/multisamp/page5.asp
He clearly says V5 uses MultiSampling. He says, however: "this is considerably different than the form of multi-sampling that we are discussing here"
My whole point is that "multi-sampling" is a very general term. And it means a lot more than what most people accept. There's just no term to describe GF3 MSAA compared to V5 MSAA... That's the problem :(
 
Back
Top