Joe DeFuria said:
Let's forget for the moment that the R-300 seems pretty much aaccepted as the single biggest leap between it and the "previous" top of the line board since the Voodoo1 vs. Voodoo2 SLI step. That this chip has generally exceeded most expectations. I mean certainly, ATI should have done "more"....it's not enough that it has more than doubled the nearest competitor's performance...PLUS added support for the next gen API all in one shot...
In performance, I agree.
Performance and features are two different issues altogether.
Note: I'm not necessarily thinking that ATI's features are necessarily bad, or aren't a good step forward, just that I thought they could have done more.
That aside, the reason why your argument makes no sense, is because ATI is delivering NOW. Using your logic, I can make the argument that Nvidia has ALREADY failed to do "all that it could have" because it will be several months before they can get their chip on the market. Had nVidia really done all that it could, they should be able to release NV30 now.
And games that use these features, really use them, won't be out until long after the R300 and NV30 are fairly old. Since ATI will most likely follow-up the R300 with another video card with almost identical specs, if the NV30 is much more programmable, then the R300 will have only served to slow down the overall advancement of 3D.
Since these features aren't going to be used now anyway, the time of release is of little consequence, except the fact that we don't really know right now what the features of the NV30 are. It may prove to have the same limitations I see in the R300. If it does, then I guess I can't really complain anymore...
With the exception of Turing machines, there are no CPUs with unlimited program length. And with the exception of a few trivial algorithms, most things are bounded by memory, stack, and CPU, all of which have finite limits.
Well, of course. But, let's consider for a moment just what those limits are like compared to the limits we see in the R300's pixel and vertex shaders.
Take, for example, a 1MB program compiled on a 64-bit instruction set (I wouldn't be surprised if the R300 actually used a 32-bit or lower instruction set...there just aren't that many instructions yet...).
If each instruction takes up 64 bits, or 8 bytes, and a 1MB program has 1048576 bytes, then this program will be capable of 131,072 instructions in total.
If you ask me, performance will always be a limitation in such programs LONG before any memory limitations kick in. Yes, I'm sure my numbers can be pretty far off, but I'm pretty sure they're at least within an order of magnitude.
Update:
One last thing. If you want to say something to the tune of, "Why implement it if it's going to perform too slowly to use anyway?" Please consider that game developers may want to use such effects on relatively small portions of the screen, or only using conditionals on very simple shaders.