Valve Defuses NVidia Half-Life 2 Issues 21
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."
Trade-offs (Score:3, Insightful)
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)
Re:Trade-offs (Score:5, Insightful)
Look at (for instance) Quake3. Point out a couple of problems with the graphics. Now look at Quake. The problems that FF has are almost certainly there too, but you won't notice them because other problems are far more glaring.
Re:Trade-offs (Score:4, Informative)
Does "Can't see the forest for the trees" apply here?
Re:Trade-offs (Score:5, Informative)
It's actually just a combination of a few different things.
1) Most developers, if they absolutely must pack textures into larger textures, learn pretty quickly to put a border on their textures so that oversampling of any type will still pick up the right texture (or at least a similar texture), they even tell you to do this in some of the books aimed at teaching 3d game programming to new developers.
2) 'Centroid' antialiasing techniques is a shortcut to do antialiasing without the high overhead of 'true' antialiasing, but it looks so bad (because it averages the values) that it's normally only used on these edge cases (which tend to be problematic in many antialiasing algorithms), where people are unlikely to notice.
3) depending on how antialiasing algorithms are implemented by nVidia, the centroid algorithms may never be available. For instance, if the entire process is done in hardware, it's unlikely that they'd change the hardware unless they felt it would improve their algorithm. Even then, those with older hardware would still not gain the benefit.
For whatever reason, nVidia doesn't use centroid algorithms in their antialiasing, you could either look at this as a quality choice, or as just a simple matter of using a different set of algorithms. More than likely, not using this is part of the reason that nVidia's antialiasing has usually been slower than competitors' antialiasing (first 3dfx and now ATI). That being said, not using this may also result in more accurate antialiasing, even though the edge cases may have more obvious problems when developers don't compensate for it. Chances are that if nVidia utilized a centroid algorithm in a newer driver without specifying the games it should be used for or giving an option to enable/disable it, then those games that actually border their textures would look worse with the centroid algorithm when they previously had no problems.
Re:Trade-offs (Score:2)
Re:Trade-offs (Score:2, Informative)
nVidia's newest cards also do FSAA in a significantly different manner from their previous cards (ie FX cards vs. non-FX cards), utilizing buffers from other operati
Centroid workaround (Score:3, Insightful)
Now, would somebody please explain what this "centroid" workaround is all about? Ie. technically, what does it do? :-)
/* Steinar */
Re:Centroid workaround (Score:5, Informative)
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.
Parhelia 16X (Score:2, Interesting)
Re:Parhelia 16X (Score:1)
How does this happen? (Score:3, Insightful)
I thought that FSAA worked by one of two methods:
- Render the entire screen at a higher resolution (double width and height, for instance), and then downsample it to the screen resolution
- Render the same scene at screen resolution several times from slightly (sub-pixel) different locations, then mix the images together
Either way, I don't see how texture coordinates would be disturbed such that parts of other textures show through at boundaries. Can someone with an understanding of modern graphics hardware clue me in?
Re:How does this happen? (Score:3, Informative)
Re:How does this happen? (Score:3, Interesting)
> 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 t
Did you read the first line? (Score:1)
"With current multi-sample implementations of anti-aliasing, you may sample texels outside of the polygon boundary ..."
This is the key, but you have to understand what a centroid is in the first place. A centroid is a the geometric place the triangle (In 3d graphics "polygon" means "triangle in space") defined by the intersection of the lines that go from every corner to the midpoint of the oposite edge. One of its properties (the most relevant for this particular application) is that is allways inside
Re:Did you read the first line? (Score:1)
I understand what they say is happening, but I don't understand *why* an implementation of anti-aliasing would sample outside the polygon boundaries. What does the implementation do that causes this?
Selective antialiasing? (Score:1)
Re:Selective antialiasing? (Score:4, Insightful)
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).
Programming: OS vs. Application Programmers (Score:2)