assen said:
2. normal rendering of the scene, which includes a comparison of one sample (or several samples, if you want smooth shadows) of the shadowmap with the current, normal z-value of the pixel. NVIDIA GPUs (since Geforce2 IIRC) can do this natively, while on ATI you need to perform pixel shader trickery to pack z values into color channels, and unpack them back. This is probably what Carmack was referring to.
Not entirely correct, I think.
Firstly, GeForce3 was the first with hardware shadowmap comparisons, I think...
Secondly, the 'pixelshader trickery' on ATi is not related to packing z values in colour channels. You can simply use a float texture with a 16 or 32 bit float channel (even 8 bit integer will work in most cases, that is not the biggest problem really).
Rather, the hardware comparisons on GeForces use the so-called Percentage Closer Filtering (PCF) technique. Think of it as a 2x2 bilinear filter, which is applied AFTER the depth-comparisons, rather than before, as a normal texture filter would. This will give you an estimate of the percentage of surface that is closer than the current pixel, and this percentage can be used to attenuate the light to get soft shadow edges. While not correct, it does give a nice and smooth image.
On an ATi card (or any other brand, really), there is no special function for sampling a texture that is used as a shadowmap, so you can only get the same performance as the GeForces if you do not apply a filter at all. This doesn't look good ofcourse, so generally people will opt for manually filtering in a pixelshader. Ofcourse this requires 4 separate texture fetches for a 2x2 filter, which means you get a considerable performance hit.
This is what Carmack was referring to.
I doubt Futuremark would have chosen PSM, if they couldn't get it to run decently even on previous-generation ATI hardware (9500-9800).
3DMark03 ran horribly even on the current generation NVIDIA hardware at the time (GF4), and one test didn't work at all, and that didn't stop them either.