Today we have something kind of similar, but it involves a shipping game title, the ever-so-sweet shooter Far Cry. The game's publishers, Ubisoft, have worked with NVIDIA to make the game use the Shader Model 3.0 capabilities built into the GeForce 6800 series graphics cards. The version 1.2 patch for Far Cry should be released soon for all the world to see. NVIDIA supplied us with an early copy of the patch a few days back so we could test Far Cry performance using Shader Model 3.0. Read on to see how the new patch performs with Shader Model 3.0, and how the GeForce 6800 series now compares to the Radeon X800 lineup.
When we last tested Far Cry on these cards, in our Radeon X800 review, it wasn't pretty for NVIDIA. The Radeon X800s cleaned up. Here are the results we published then, using version 1.1 of the game.
Ow. The Radeon X800 XT PE walloped the GeForce 6800 Ultra, and the Radeon X800 Pro beat it, too. Only the overclocked "extreme" GeForce 6800 Ultra beat the 12-pipe Radeon X800 Pro. (Those numbers were generated with 4X antialiasing and anisotropic filtering.)
Since Far Cry is one of the few games with really excellent graphics capable of pushing the latest graphics cards to their limits, this performance was one of the reasons we gave the Radeon X800 a slight edge over the GeForce 6800 overall in our review.
Shader Model 3.0 meets Far Cry
Since then, NVIDIA and Ubisoft have worked to implement support for Shader Model 3.0 in the new version of Far Cry. Shader Model 3.0 is a new part of the DirectX 9 specification intended to encompass the capabilities of the GeForce 6800 GPU. ATI's graphics chips are coupled to Shader Model 2.0, which is now a subset of Shader Model 3.0.
SM3.0 includes a number of enhancements to both pixel shaders and vertex shaders. On the pixel shader side, 3.0 allows an expanded graphics programming model with much longer instructions lengths in programs, plus dynamic branching and looping with conditionals. SM3.0 also requires 32 bits of precision per color channel, up from the max of 24 bits available in SM2.0 and in current ATI pixel shaders. On the vertex shader side, Shader Model 3.0 enables vertex texture fetch, a feature useful in creating certain types of special effects. Also, Microsoft has slipped support for some other new features into SM3.0, including geometry instancing, which allows for more efficient organization and transfer of geometry data to the graphics card.
To learn more about Shader Model 3.0, let me suggest you read our dueling interviews with NVIDIA's Tony Tamasi and ATI's David Nalasco. Both of the interviews include discussions that go into some depth about the relative merits of Shader Models 2.0 and 3.0.
By incorporating Shader Model 3.0 support into Far Cry, NVIDIA and Ubisoft obviously intend to showcase the performance gains possible with the new shader model and the advanced graphics capabilities of CryTek's game engine. NVIDIA's presentation on the patch points out four specific levels of the game where SM3.0 enhancements make a difference. The "Training" and "Regulator" levels have lots of grass and foliage in them, and the game now uses geometry instancing to transfer vertex data for these models. In the "Volcano" and "Research" levels, per-pixel lighting is heavily used. With SM3.0, this lighting routine can be handled in a single rendering pass, potentially boosting performance.
I would like to share more with you about what exactly Far Cry's developers did to make the game take advantage of Shader Model 3.0. In fact, I fired off a round of questions about just that, but I don't have the answers back yet. I will update this article or write a separate one soon when I get some answers, so keep checking back here. I expect to know more later today.
Now, let's put these optimizations to the test...