Valve Defuses NVidia Half-Life 2 Issues
suineg writes "Gabe Newell, Valve's main man, has commented on Half-Life 2 and anti-aliasing problems with DX9 cards over at HalfLife2.net: '[The current problems] ...will look like a bright or dark line on the edge of a polygon. This is not a new problem. Artifacts may show up more frequently in Half-Life 2 simply because we've eliminated lots of other artifacts, and because we have a lot of variation in scene lighting due to our art direction.'" As far as solutions go, Newell has some: "ATI has supported... [the centroid work-around] form of anti-aliasing for the 9000 series... [as for] NVIDIA's [hardware], that doesn't support centroid sampling... you trade off some pixel shader bandwidth to clamp the texture coordinates."
What? Apart from not making much sense, is this implying that new artifacts are being traded for a lot of older ones? (i.e. get rid of lots of old ones, but by doing that, introduced some more in the process)
Centroid antialiasing takes the average of the sampled pixels and applies it to the entire sampled area (or, in most cases, just the edges of the area, as centroid antialiasing does not look good over a large surface, but can smooth out problem cases like the edges of polygons). This will make some situations look better, and some look worse (the example in the white paper I read mentions that as two objects move towards the camera the colour may 'snap' from one to the other, although it's still only in the edge cases that Valve is discussing).
Basically, it's an algorithm used to reduce the memory (and memory bandwidth) requirements of high-sample anti-aliasing techniques (for example 4x FSAA, which at say 1280x1024@32bpp would require ~160MB of RAM and/or slow rendering 16x). Algorithms that work for high accuracy without the slow-downs of full antialiasing will use centroid algorithms in combination with a number of other algorithmic shortcuts which, when combined, can produce nearly the same image, though with more artifacts and problem cases.
-PainKilleR-[CE]
They cheat on the FSAA. What they do is they don't actually sample the entire screen, they basically just run AA on the textures when they are rendered, then anti-alias the edges as they are rendered. Although technically what you said is true, if you think about it, its fairly unfeasable to say, render it at double resolution (say 3200x2400), then render that down into 1 1600x1200 screen. The memory requirements alone are massive. 1 24 bit 1600x1200 screen is 5.76 megs of video memory as it is, so one at 3200x2400x24 bits is roughly 24 megs. That is a lot of video memory to be using just for anti-aliasing, not to mention, can you imagine what kind of memory bandwidth you'd need to move that much data around every frame?
Uhh ?!?!?! Who said anything about tranlucency?
This has to do with the interaction b/w the programmer doing things 'behind the back' of the driver (ie packing multiple logical textures into one texture as far as the driver/card is concerned) and the driver/card doing things 'behind the back' of the programmer (ie multisample antialiassing in such a way that texture cooordinates may fall slightly outside the range the programmer specified).
Thoughts on tech, Software Engineering, and stuff