Verite V1000 Antialiasing

swaaye

Entirely Suboptimal
Legend
Supporter
Just for fun, and since I'd never seen Vquake until now, I took some screenies with the V1000's nearly performance-hit-free antialiasing enabled. This is 'r_antialiasing 7'. Look for the extensive mip-mapping due to the lack of texture memory (the thing only has 4MB!!!)

Max resolution @ 768x512

On my P233 RetroRig I get around 10fps at this res :)
Around 15 at 640x480

I wonder if this is better than GFFX antialiasing ;)

quake02.jpg

http://www.sbe.mtu.edu/users/dlneal/quake/quake02.jpg
http://www.sbe.mtu.edu/users/dlneal/quake/quake04.jpg
http://www.sbe.mtu.edu/users/dlneal/quake/quake10.jpg
http://www.sbe.mtu.edu/users/dlneal/quake/quake13.jpg
http://www.sbe.mtu.edu/users/dlneal/quake/quake15.jpg
http://www.sbe.mtu.edu/users/dlneal/quake/quake16.jpg
 
It's probably edge AA, which requires software support, and wouldn't have much of a performance hit in the vast majority of situations.
 
Yep, edge AA it is... I tried it with my v2200 some years ago. IMO even nowdays I would prefer that kind of AA instead of current "brute force" 4xAA. Edge quality is similar to brute force 16xAA.

I remember hearing that Vquake stored all polygon edges and applied some bilinear filtering to them after normal drawing was over (post processing..). I have been trying to "fiddle" with the idea but, lazy as I am, no demos for now :)
 
It seems to miss some edges. Probably comparable to Matrox' FAA, but I'd prefer 6xMS on an R300.
 
Missed edges ? Do youmean the body laying on the ground ? I think thats because some of the body's poly's intercept with the floor polys, and being poly edge only AA you get jaggies...
 
Honestly I'd like some edge AA in modern games. I mean, why not? Doesn't Direct3D/OGL do this stuff fairly easily, and it should work on all of today's hardware. No speed loss with AA is awfully cool.
 
If I remember right, the reason edge antialiasing never caught on was 2 fold. 1) The hardware supported it, but nobody outside of Rendition actually had it working in driver. 2) Carmack mentioned that getting edge AA working was a pain in the ass.
 
Yes, the problem with edge AA is that it's quite simply not a technique that can just be "turned on." It has to be programmed for. Particularly today with the focus on the GPU offloading calculations from the CPU, it's really counterproductive to have the CPU need to do calculations to enable edge AA.

And, of course, there will always be those intersecting polygons that don't get anti-aliased, unless you really want to give the CPU a workout.
 
AFAIK, RIVA TNT1/2 (but not any of the Geforces) and 3dfx cards up to at least the Banshee support edge AA using alpha blending. The problem is that this edge AA method (and probably any edge-specific method) is critically sort-dependent - you have to sort polygons in either front-to-back or back-to-front order (don't remember which; in either case, you need to sort the polygons somewhere, making HW T&L difficult) for the edge AA to function correctly, And when it doesn't, it leaves unsightly artifacts along polygon edges.
 
This is from the Voodoo2 spec document:

Polygonal Anti-Aliasing
To eliminate the “jaggiesâ€￾ on the edges of triangles, Voodoo2 Graphics supports polygonal anti-aliasing. To use the anti-aliasing support in Voodoo2 Graphics, triangles must be sorted before rendering, either back-to-front or front-to-back. When front-to-back triangle ordering is used, the standard OpenGL alpha-saturate algorithm is used to anti-alias the polygon edges. When back-to-front triangle ordering is used, standard alpha-blending is used to partially blend the edges of the triangles into the previously rendered scene. Regardless of which triangle ordering technique is used, the hardware automatically determines the pixels on the edges of the rendered triangles which are special-cased and rendered with less than full-intensity to smooth the triangle edges.
 
Colourless said:
All Voodoos (Voodoo 1 through Voodoo 5) supported edge and line antialiasing too.

Were they supported by the hardware, or the drivers? I dont remember ever being able to use any AA with the same effect as the screenshots I'm seeing above.
 
it may be a pain in the ass to get edge AA working in games, but the results are fantastic. Negligible performance loss and near-perfect edges are a nice combination. I can't help but feel that the graphics chip makers have just been using their cruddy supersampling as a way to make us want to spend more money. Gotta get the hardware to push those quadruble-rez pixels.

I think I prefer what the V1000 is doing in Vquake over anything my 8500 has ever done with AA. Now, considering that the V1000 is absolutely light years behind a 8500 technologically, I find this pretty pathetic.

You guys say that Edge AA has to be supported by the game. Well, I can say from experience with my 8500 that even supersampling doesn't always work unless the game developers do their job right. I have bunches of games where AA just won't work.

Now, the new multisampling (whatever the 9x00s do) is quite promising. But it's again dissapointing that it has taken this long for these chip makers to do the job right. Supersampling was just stoopid.
 
Negligible performance loss? Not in today's games.

The problem is not only the sorting. But let's have a look:

When you use that front-to-back-method, you store an alpha value (let's call it DA) in the frame buffer. The buffer is cleared with 0s, solid pixels get a 1 and edge pixels are somewhere in between, depending on pixel coverage. When you render triangles, you take DA times the color already in the framebuffer and add (1-DA) times the newly calculated color value. So if you have a solid polygon in the foreground, its interior won't be modified any more.

Because, at the edges, you have to write color values that are 'behind' already rendered scene geometry, you have to disable Z buffering. This may first seem like an advantage, and of course sorted geometry should not need depth testing*.
But you trade it for another read-modify-write cycle, and a particularly unoptimized one on today's hardware. You don't have EarlyAlpha, HierarchicalAlpha or something similar on today's hardware ;) (this is, admittedly, not a shortcoming of the edge-AA algorithm itself). So you have to render each and every pixel, whether visible or not, and waste a whole lot of fillrate.

The back-to-front method uses the approach of blending colors directly, and has more disadvantages. The worst one might be the necessity to find silhouette edges. If you don't do this, you will see the background shining through edges inside of objects. Almost all pixels with two or more smooth polygon edges will look wrong (and there's no fix for this).
With this method, you can use Z buffering, but it will only slow down things. You already have back-to-front sorted geometry, Z buffering will just waste bandwidth*. Here you also have to fully render each and every pixel.

* If you don't put arbitrary limits on your geometry, sorting cannot always be 'perfect'. In this case, without Z buffering, parts of polygons may be missing. One obvious example are intersecting polygons.

Now back to the sorting. Sorting is not a trivial task. And while inside a mesh you can usually do better, regarding objects it's O(n*log(n))
Sorting tens of thousands of triangles takes some time. Also, it has to be done after transform, which rules hardware T&L out.

With all this, I don't think edge AA is a good idea today. Matrox has done a good effort to do something similar with their FAA, but for my taste, it just misses too much edges.
 
Well, it's obvious that Edge AA and today's AA are two different roads to take. As I said, I really like what the 9700 does. I just hope they continue to refine it. AA just makes games look so good, especially as the graphics quality increases. One can hardly see aliasing in Quake 1, but in new games, especially in 'slower' games such as space sims, AA makes a huge difference.
 
Tagrineth said:
Hmm. WRT sorting, how would Edge AA fare on PowerVR cores?
Probably better, because they reduce the problem to a per-tile basis. But current Kyro cores don't do any sorting at all AFAIK. And as I said, sorting doesn't work in all cases.
IMO multisampling on a DR is easier and better.
 
Back
Top