Does R3x0 support MSAA with FP frame buffers?

Guden Oden

Senior Member
Legend
I ran the Lampion shader competition entry yesterday with 4xAA forced through the control panel, and it struck me there seemed to be no antialiasing going on in there.

Is this because of a hardware limitation or does the driver simply ignore requests for AA because of memory limitations for example (I "only" have 128MB on my card)? I would think a decent-size 128bpp framebuffer would grow quite enormous with 4xAA going at the same time, and the Lampion window defaults to screen size it seems, which is 1280 rez in my case.

On the other hand, I think ATi's high dynamic range lighting demo for the Radeon 9700 (the one with the spinning spheres) shows AA - it's hard to tell with the glow effect it uses - but on the other hand I'm not sure that one uses "deep" buffers, so it's hard to say. :)

Is there any realtime stuff out there that does make serious use of deep buffers and that is freely downloadable btw? I don't mean like, shadermark or such or other short test sequences, but programs that show objects animating or such that can be run as a demo (preferably in a resizeable window). Any neat "scene" demos with DX9 effects worthy of downloading, for example?
 
Well... you can't actually use a floating point buffer as a framebuffer (at least, not one that is in the swap chain), for the simple reason that the RAMDAC can only handle integer formats.
So you would render to a floating point texture, then do post-processing to convert to a regular integer framebuffer in some way, and display that.

I believe that you can only get MSAA on actual framebuffers (or at least targets that were explicitly created with multisampling... if the hardware supports that..?)... when you want to have antialiased render-to-texture, you should render to the framebuffer and copy to texture. IIRC this is the reason why games like HALO do not have antialiasing.
 
Regarding using floating point texture for post-processing effect, developes usually copy the render target to a full screen quad, thats why anti-aliasing doesn't take effect, since for some reason I don't quite understand, multi-sampling only has effect along the geometry edges.
 
991060 said:
Regarding using floating point texture for post-processing effect, developes usually copy the render target to a full screen quad, thats why anti-aliasing doesn't take effect, since for some reason I don't quite understand, multi-sampling only has effect along the geometry edges.

Well, MSAA only works where required, and that's the geometry edges (except when doing per-pixel lighting, but MSAA doesn't work there either). The basic idea is that MSAA stores one colour per pixel per polygon. As long as a polygon covers the entire pixel (determined by a supersampled z/stencilbuffer), that one colour is the exact colour for the entire pixel, and no actual antialiasing is required.
The only case where a polygon does not cover an entire pixel, is at the edges. So MSAA is a clever way to make antialiasing cheap. The downside is that it does not work in all cases, like supersampling.

Why MSAA doesn't work when rendering a textured fullscreen quad is simple: the aliasing is already in the texture, it is now too late to antialias, there is not enough information. Supersampling wouldn't work either, since the texture itself is not supersampled. You could supersample the quad, but that would only result in magnifying the texture, and then downsampling it again, having no visual effect.
If you want antialiasing, it must be done during the actual rendering to the texture.
 
You can't get MSAA when rendering to a float rendering target on a R300. Not on any other chip I know of either, but I'm noy completely sure about the NV40.
 
GameCat said:
You can't get MSAA when rendering to a float rendering target on a R300. Not on any other chip I know of either, but I'm noy completely sure about the NV40.
NV40 can't, either.
 
GameCat said:
You can't get MSAA when rendering to a float rendering target on a R300.

Ok, that clears up that then. Thanks guys...! :)

So, any demos of deep buffers floating around out there? (Bad pun intended, btw. :D)
 
Back
Top