But it really isn't. A better qualified man than me, Alvy Ray Smith, sums it up as...
"A Pixel Is Not A Little Square, A Pixel Is Not A Little Square, A Pixel Is Not A Little Square!"
And he's wrong. Sorry if this sounds too knee-jerk, but the display devices we use generate colored rectangular pixels, or they try really hard to do that (and come ever closer), and as that is the physical reality of pixels, it is these rectangular shapes that graphics algorithms must find the best possible color for. One and only one color per rectangle. That is all we have to work with in the physical world.
Pixels aren't round. Pixels don't overlap. Pixels also aren't points on an infinite continuum of signal processing ivory (note thought that if you made that same argument for textures, you'd be
kicking in open doors).
My LCD displays have no way to display a blended color between two pixels, because there's no gap there that could
have a different color. My last remaining CRT (an aperture grille model), even though it can't quite manage as well, also tries very hard to reach that ideal, not to mention all these physicalities are well supported by the scan-out logic on all my graphics cards as far as I'm aware (and my collection includes a Kyro 2!).
Quincunx is the exception. The black sheep. The silly idea. That which lies deep under the rug.
As for Mr Smith, most of the insights into graphics that came out of Microsoft in the mid-to-late nineties have already turned out to be much less than insightful. Like the optimal origins for coordinate systems (to be retracted in a much later revision of Direct3D). I'll proudly wear my skepticism to anything that associates with that era, and that place.
Best case he was just terribly confused about the subtle connections between texels, pixels and AA samples. Because what he said there, not least because of the categorical form he chose, is wrong.
Simon F said:
This is where you are going wrong. What is a pixel? It doesn't really have a hard boundary.
Yes it has. If you want to compute a color for a shape that bleeds into its neighbours, it simply does not jive with display devices that a)compose images out of colored rectangles and b)
could themselves let colors bleed across neighbours but don't do that because they would be considered
poor displays if they did.
If you wanted to do anything with cross-neighbour filters, it would have to be to
negate imperfect separations in the display device (anti-Quincunx with the weights reversed, aka sharpen filters), not exacerbate them.
Simon F said:
...relative to the result of a box filter, but you need to ask yourself, "was that box-filtered result correct in the first place?".
Pretty much.
We're trying to determine the color of pixel 0;0. Whether or not we agree on the "rectangle" issue, why should a color that lies inside the boundaries of pixel 1;1 (whatever shape or size they may be) contribute to that at all? It is not there. It belongs somewhere else. Including it into the color of a shape its boundaries it does not even touch is irrational bling-bling.
And what's a box filter anyway? To make it nice and pointed, and to avoid mix-ups with texture filter/scaler terminology (where I wouldn't resist nearly as much against
points and signals and frequencies and attenuations), I'd prefer "weighted average". That leaves the door open for maybe slightly lower weights for samples on the far outskirts of a pixel.
I postulate a duality where we construct (framebuffers or textures alike) grids of flush rectangles, but sample from grids of points, with distances between those points.
Simon F said:
To show you the error of your reasoning, try animating your test scene. You will soon see that, for an animated system (which is what we are interested in), such a black-white result is not desireable.
Err, yes, I insist that it actually is. The pixel edge will only be perfectly sharp when the surfaces perfectly coincide with the pixel grid. If it moves across such boundaries, the result will be the same old shades of grey, in accordance to the relative contributions of the surfaces to each pixel. That is no aliasing.