In recent years the progress of computer graphics industry has been amazing, especially for the PC platform. Real-time rendering effects on the PC now approaches the cinematic quality which once required rendering offline in professional workstation several years ago. Presently, three firms play key roles: Microsoft (3D API developer), ATI, and NVIDIA.





Recently, Microsoft has published the newest DirectX version: DX9 Beta 2.1. Although I didn’t have the chance to sign the NDA for DX9, I can access the (leaked - Ed.) DX9 Beta2.1 specification here. Compared with DX8, DX9 Beta 2.1 makes great progress, providing general programmability and floating point precision throughout the pipeline.




ATI published its powerful DX9 card, R300, in August, 2002 and has become the leader this time. However, R300 still has many secrets and in comparison with NVIDIA's NV30, which has been delayed again and again for some reason(s), is even more of an enigma. And rumors only make this situation even worse.

By way of satisfying my own curiosity, I've read many technical documents, including papers, whitepapers, specifications, and presentations about NV30 and R300. By comparing R300 with NV30, I can find many interesting things about their architectures, especially NV30. So, I have written this article to share this pleasure with others.

Because the final version of DX9 has not been completed, I can only compare R300 and NV30 with DX9 Beta 2.1. There is a rumor that Microsoft probably provides both VS/PS (Vertex Shader / Pixel Shader) version 2.0 and version 3.0 in DX9.0. However, the earlier rumor said that DX9.0 only includes VS/PS version 2 and VS/PS version 3.0 is slated for DX9.1.

Based on the published specification, it is obvious that DX9 VS/PS 2.0 is influenced heavily by ATI and is therefore almost a copy of R300's specifications, much like the relationship between DX8.0 and NV20. Although VS/PS 3.0 borrow some features from NV30, which actually exceeds VS/PS 3.0 in a few respects, NV30 cannot support all the key features in VS/PS 3.0.

It is very possible that the final version DX9 has even more powerful VS/PS 3.0. Equally, of course, it is also possible that VS/PS 3.0 in final version DX9 is weaker than that in DX9 Beta2.1 due to the pressure from NVIDIA and ATI.

For ATI, the earlier DX9.0 is released, with only VS/PS 2.0, the better. However, DX9.0 with both VS/PS version 2.0 and version 3.0 is a much better choice for NVIDIA. And quarrels between ATI and NVIDIA have led to the bifurcation of DX9. It is also quite possible that OpenGL 2.0's final version will be delayed due to these disputes. Note: DX9 in the following sections refers to DX9 Beta 2.1. (The delays to DX9 could also not necessarily be due to pressure from ATI or NVIDIA but a want within Microsoft not to make a major API revision until their next generation OS, codenamed Longhorn. Its quite possible that DX10 will not debut until that OS is ready, in which case its in Microsoft's interests to make DX9 as forward thinking as is reasonable so that a few generations of 3D hardware can occur within DX9's lifespan - Ed.)