Skip to main content

NVIDIA GeForceFX: Brute Force Attack Against the King

Serious Sam 2 Z-Buffer Problems, Continued

Apparently, the problem is restricted to OpenGL. In Direct 3D, the problem could not be seen. In games with the Q3 engine, this problem did not occur either, since here a 24 bit Z-Buffer is called for, which the cards can then deliver. According to NVIDIA, the problem lies in that Serious Sam does not define the Z-Buffer precisely:

"Serious Sam does not specify a Z-buffer depth when enabling Z. By default, our driver will select the first Z-depth available, which is 16 bits. For the majority of the scenes in Serious Sam, 16 bit Z is sufficient. There are, however, a few areas where some Z artifacts can be seen.

You can force Serious Sam to specify 24 bit Z by doing the following:

(type "~" to bring the console)

gap_iDepthBits=24
ApplyVideoMode()

In this mode, the Z artifacts are eliminated (or greatly reduced). We have seen little, if any, impact on performance using 24 bit Z.

We have already addressed this with Croteam, and this issue is fixed in the upcoming patch, but the patch is only BETA right now."

This contradicts the findings of programmers in the Web forums - they report that the problem occurs when a 32 bit Z-Buffer is called via "ChoosePixelFormat". Instead of choosing 24 bit mode, which would have made sense, the NVIDIA driver selects 16 bit mode, according to the reports. The problem could only be solved through a "Force 24 bit Z" option in the OpenGL driver, which ATI offers in its Radeon drivers, for example.

In Serious Sam 2, the GeForceFX 5800 Ultra is clearly superior to the Radeon 9700 PRO. The surprising aspect is how well the GeForce4 Ti4800 performs against the ATI cards. Its advantage becomes all too obvious - the GF4 uses reduced Z-Buffer precision (16 bit), which is standard for NVIDIA cards when used with games. In the tests, the performance of the Radeon 9700 PRO in 16 bit proved to be better than with 24 bit.