So, Why Do We See These Performances?
It s a poorly kept secret that ATI have a marketing arrangement with Valve on the distribution of Half Life 2 with certain ATI hardware, and although ATI are yet to officially announce it Gabe tackled this head on. He openly stated that they have come to an arrangement with ATI, but that this has not resulted in any optimisations specifically for ATI’s boards, nor anything to purposefully harm the performance of NVIDIA’s – something along these lines would be counter-productive since there is a massive installed user base of NVIDIA boards. Valve suggests that people should turn to Microsoft for acknowledgement that their title, using the “default” DX9 path, sticks to DX9 standards and coding optimisations – indeed Microsoft recently put out a press release hailing Half Life 2 as the new DirectX9 gaming title which will become the benchmark for all other games to strive towards. Gabe states that it was not a case of ATI paying Valve to bias the benchmarks (in which case all they would have needed to do was not include an NV3x path!) but rather Valve seeing the performance of the ATI boards under the default DX9 path and Valve choosing ATI to partner with because of the performance gap. Valve feel that the ATI boards will offer the best performance and quality to play Half Life 2, hence it’s a natural choice for Half Life 2 to be played on newly purchased ATI boards. Valve say that they have had and will continue to have marketing arrangements that they feel are in the best interests of their customers. Indeed such agreements are commonplace, as one only need to look to NVIDIA’s “The Way Its Meant to be Played” campaign – have we seen either IHV question the validity of a title such as UT2003 even though it is quite obviously linked to NVIDIA’s marketing program?
So, what is the issue with Half Life 2 and the GeForce FX’s then? One simple fact is that the GeForce FX’s pixel shader architecture just appears not to be best suited to the design of DirectX9 and it also appears to be considerably slower in floating point performance in relation to ATI’s boards - in terms of pure DirectX9 floating point performance it seems that 5900 is roughly the equivalent of 9600, however when the operations are optimised specifically for the CineFX architecture the performance can be much higher. The issue appears to be that DirectX just doesn’t provide the framework for the GeForce FX shader architecture to be at its best, and this has been shown with other titles as well.
Some people may look to OpenGL and Doom3 and say that this displays no such issues, yet the fact is that John Carmack has already stated a similar situation with his software engine. With Doom3’s “ARB2” path that utilises the OpenGL ARB approved fragment (pixel) shader extensions, the NV3x series is at about half the performance of the Radeon series; however, it is widely known that Doom3 will have an NV30 path that makes use of NVIDIA’s own extensions, which can make more effective use of the mixed precisions than the standard ARB extensions can.
Note: It’s an interesting fact that of the two most eagerly anticipated games over the next year the developers have had to expand time and effort in creating special, optimised paths for GeForce FX hardware whereas ATI has more than acceptable performance (and with higher IQ) in both of these titles utilising the default path. The release dates for both of these titles have been a constant source of interest - has creating more special rendering paths actually hindered the release of these titles?
With pure DirectX code it’s difficult for the developer to mix in integer and floating point precisions at the same time since there just isn’t the capabilities for doing this – however with driver “replacement” shaders NVIDIA are able to do this since they can replace the shaders with one that are in a much more machine level state, and many of the cases. The issue with this is that every piece of shader code must be stored in the driver, but when a game such as Half Life 2 uses as many as 1200 different shaders it hardly becomes practical to store pre-computed shaders for all games. A sensible method for the optimisation of shader code, with no loss of quality and on a generic basis, needs to be utilised – ATI has updated their runtime optimiser in the Catalyst 3.7 drivers and NVIDIA state that Detonator 50 also has a new optimiser, although preliminary results from the 50’s suggest that IQ has been degraded in some areas.
ATI’s “Shader Day” was designed to educate on the importance of Shaders, what they can offer us in terms of making games more realistic and why the traditional performance paradigms of fill rate and memory bandwidth aren’t necessarily as applicable in modern games. Half Life 2 is the perfect embodiment of many of these issues and certainly highlights that performance measurements may be an interesting thing to fathom in the future. But for now, it seems pretty clear that the DirectX9 Radeon series are the clear board of choice for playing Half Life 2.
Please feel free to comment on this article here.