doesn't Carmack program in openGL rather than DirectX? I thought he was against Microsoft engineering for specific graphical platforms.
It's not the API (directx vs opengl) it's the lower level shader language that the FX is having issues with. Regardless of if you use opengl or dx9, you still have to use the shader language to get the 'cool, new effects' that the cards can (or should...) be capable of.
re: fp16/32: (This is my understanding of the problem, I'm sure it's over simplified, but not as over simplied as "the FX sucks" or "ATI rocks") The basic problem is that the fx doesnt have as many registers (basically buckets to keep your temporary work while computing the graphics) as the dx9 shader compiler expects. So, as a work-around, you can 'double' the number of registers available by using 16bit shaders, but at a loss of quality (and at apparently it's more complicated than that, you have to basically write all your shaders twice, once for ps2.0 and once for the nv35 (ps1.4?).