Logo   Banner   TopRight
FarCry Patch v1.2 - SM 3.0 Performance on the GeForce 6 Series
Date: Jul 02, 2004
Author: Marco Chiappetta
Introduction & Screen Shots

Peruse virtually any PC gaming magazine, or point your browser to any popular gaming web site, and you're bound to find a myriad of information and accolades for Crytek's smash-hit, first person shooter, FarCry.  The game has some of the best graphics to hit the PC to date, and except for a few minor issues like its "checkpoint" based save-game feature, the single player portion of FarCry has been almost universally lauded as some of the best first person gaming in years.  The game's popularity, the complexity of the graphics, and Crytek's willingness to work with NVIDIA to expose their NV40's Shader Model 3.0 capabilities, brings us to where we are today.

We were recently given the opportunity to test the latest patch for FarCry (v1.2), before it was released to the public.  When coupled with DirectX 9.0C, the FarCry v1.2 patch enables the game engine to run the previously unavailable Shader Model 3.0 code path.  And with the Shader Model 3.0 path enabled, NVIDIA's GeForce 6 series of cards gets a nice boost in performance in grassy outdoor maps that are loaded with trees, and in indoor maps that make heavy use of per-pixel lighting.  We installed DX9.0c and the v1.2 patch, and ran some benchmarks at each stage of the process to see if / when / where performance gains would be realized.  We also took screen shots along the way to see if SM3.0 has any discernable impact on image quality and had some interesting results...

FarCry Patch v1.2 Changes as of 7/1 (Subject to change upon release)
Lots Of Fixes!
  • Made the run speed about 15% faster
  • Made sprint last 30% longer
  • Adjusted damage to vehicles
  • (vehicles now survive longer in multiplayer and behave consistently between weapon damage types) Bullet damage can be disabled by "g_vehicleBulletDamage" cvar: 0 = no bullet damage (default), 1 = bullet damage; this works only in MP.
  • MP vehicles can get the same damage from every kind of bullet (no distinction between sniper rifle and the deagle), this value is set by 'dmgBulletMP' variable inside 'DamageParams' table of the vehicle.
  • buggy, humvee and gunboat can be destroyed with one rocket.
  • bigtruck can be destroyed with three rockets.
  • buggy and gunboat can be destroyed with 100 bullets (if g_vehicleBulletDamage = 1)
  • humvee can be destroyed with 150 bullets (if g_vehicleBulletDamage = 1)
  • bigtruck can be destroyed with 500 bullets (if g_vehicleBulletDamage = 1)
  • vehicle damage code cleaned and made more consistent.
  • Fixed a number of serious issues with headshot detection
  • Ported a number of sensitive routines into non SDK sources
  • Fixed some issues with ladder animations appearing odd to other players
  • Added quicksave support for single player (still in process)
  • Fixed bug where players name tag didn't show up
  • Fixed bug where console would accept letters as variable states
  • Fixed a number of ladder related issues
  • Fixed error with warning message in connection dialogue
  • Fixed a significant number of bugs relating to quicksave (~100 bugs)
  • Fixed a connection dialogue error
  • Fixed an incorrectly localized HUD message
  • Fixed bug with server shutdown dialogue error
  • Addressed a number of issues with the server list UI
  • Fixed bug causing cancel button to stop working
  • Server create sessions are now saved
  • Fixed a bug causing game freezes when player joins and player rotates
  • Fixed a rendering issue with Radeon 9600 graphics cards
  • Fixed Punkbuster crash when switching from punkbuster online server to hosting LAN server
  • Fixed issue with punkbuster icon not showing up in the server listing
  • Fixed random crash relating to punkbuster server listing info
  • Fixed issue with punkbuster refusing connection to a server that is destroyed and then re-hosted
  • Fixed a number of crash problems related to punkbuster server creation with non-dedicated servers
  • Fixed issue with punkbuster enabled in multiple server profiles
  • Disabled e_vegetation_min_size in multiplayer (used as cheat)
  • Added optimizations for character effects including invulnerability shader
  • Added optimizations for scoreboard performance. Scoreboard no longer updates fields that have not changed
  • Fixed framerate issue when player touched assault ammo pickups


  • Fixed issue where radar would not be drawn correctly with certain game type changes
  • Fixed issue with password protected servers not removing password after restart
  • Fixed issue with spectators not being able to hear ambient sounds
  • Fixed message printout for multiplayer statistics (was only working with log_verbosity 1, not it works with 0 (default) as well)
  • Fixed listplayer on the client (was only working on the server)
  • Changed multiplayer scoreboard system for less bandwidth and easier extendibility
  • Fixed bug in scoreboard that reported ping incorrectly by a factor of 2. Pings now appear correctly (half the old values). Note: ping is still the same, the output value was inaccurate)
  • Fixed check in server/client version check (now you cannot connect to servers with old network code)
  • Fixed bug in submitted Punkbuster ID causing random CD Key hash to be generated. Global ID unique to CD keys is now parsed correctly.
  • Added MultiplayerUtils:OnChatMessage a script function which is called on the server for every chat message (to enable saving out chats)
  • Made several changes to improve network packet scheduling
  • Separated multiplayer and single player weapon code better functionality with mod developers and support for changes to MP balance without affecting single player.
  • Made a number of changes to multiplayer weapon parameters, outlined below:
  • All weapons - Increase accuracy while standing still by 25%
  • Made the medic packs give 50% more health for the engineer class
  • Reduced rocket launcher clip to 1, no change to lethality.
  • Increased MP5 damage by 30% with full auto, 50% increase with semi-automatic
  • Adjusted AG36 damage to head and torso.
  • Reduced AG36 grenade radius.
  • Increased OICW accuracy by 30% when zoomed.
  • Reduced OICW grenade clip to 3 with max carry of 3 in the gun and 3 in reserve
  • Increased Pancor damage slightly
  • Reduced P90 damage by 10% and reduced max range by 25%
  • Increased lethality of mounted weapons.
  • Improved detection code for player name tags, fixed issue causing name tags not to appear if crosshair was on arms and legs
  • Fixed collision detection on the dedicated server with different arm position because of different weapons. Hit detection is now more accurate.
  • The record console variable was makred as protected because it opened up some cheat possibilities
  • Fixed a bug that sometimes caused players hit by a buggy not to credit the driver with a kill
  • Fixed a number of issues with discrepancies between player cameras in 1st and 3rd person

GeForce 6800 GT
1024x768 - 4XAA / 16 Aniso
Shader Model 2.0

GeForce 6800 GT
1024x768 - 4XAA / 16 Aniso
Shader Model 3.0

GeForce 6800 GT
1024x768 - 4XAA / 16 Aniso
Shader Model 2.0

GeForce 6800 GT
1024x768 - 4XAA / 16 Aniso
Shader Model 3.0

The screen shots above are from FarCry's "Regulator", "Catacombs", and "Volcano" maps.  They were taken with a GeForce 6800 GT (Forceware v61.45) at a resolution of 1024x768, with 4X anti-aliasing and 16X Anisotropic filtering enabled.  The shots on the left (without the yellow labels at the top of the screen) were taken using the Shader Model 2.0 path; the shots on the right with Shader Model 3.0.  As you can see, there are almost no image quality differences between SM 2.0 and SM 3.0 to speak of.  In the indoor shot, the light is cast in a slightly different manner, but neither one looks any "better" than the other.  In the outdoor map, there are no noteworthy differences to point out whatsoever.

ATi Radeon X800 Pro
1024x768 - 4XAA / 16 Aniso
Shader Model 2.0 Anomaly

Unfortunately, with an ATi Radeon X800 Pro installed in our test system, using the Catalyst v4.6 drivers in conjunction with the v1.2 patch, the Radeon had a problem rendering some screens.  As you can see in the screen shot above, the patches of the ground were not rendered correctly.  Hopefully, ATi can clear this issue up with the Catalyst v4.7 drivers that are do in the coming weeks.

DX9.0b vs. DX9.0c


Because we had to make some major changes to our test machine's operating system, and were patching a game that we normally used for benchmarking, we decided to run benchmarks during each step of the upgrade process to see exactly where the performance gains (if any) were coming from.  After installing Windows XP SP2, which incorporates DirectX 9.0c, we ran a batch of timedemos using our custom demo and compared them to some reference scores taken with DirectX 9.0b installed.  Then we patched FarCry, and re-ran the same custom timedemo to see how much of a difference simply applying the patch made to performance.  Lastly, we ran some new tests with four new demos incorporated into the patch to demonstrate the performance differences between Shader Model 2.0 and Shader Model 3.0 on NVIDIA's GeForce 6800 GT and 6800...

The HotHardware Test System
Intel Powered Screamer
Processor -

Motherboard -

Video Cards -

Memory -

Audio -

Hard Drive -

Optical Drive -

Other -

Operating System -
Chipset Drivers -
DirectX -

Video Drivers

Intel Pentium 4 3.2GHz

i875P "Canterwood" Chipset

ATi Radeon X800 Pro
GeForce 6800 GT
GeForce 6800 (128MB)

1024MB Kingston HyperX PC3500

Integrated SoundMax Audio

Western Digital "Raptor"
36GB - 10,000RPM - SATA

Lite-On 16X DVD-ROM

3.5" Floppy Drive

Windows XP Professional SP1 & SP2
Intel INF v6.0.1.1002
DirectX 9.0b

DirectX 9.0c

ATI Catalyst v4.6
NVIDIA Forceware v61.45

FarCry Performance DirectX v9.0b vs. DirectX 9.0c
"Move Along Folks, Nothing to See Here!" - Frank Dreben, Police Squad

As you can see, installing DirectX 9.0c had virtually no affect on performance.  Most of the frame-rates were marginally higher, but in a few tests frame-rates were fractionally lower.  After killing a few hours running these tests on ATi and NVIDIA hardware, we can safely say that DirectX 9.0c, in and of itself, has no measurable impact on performance with FarCry.

FarCry Patch v1.1 vs. v1.2


For this next round of tests, we applied the FarCry v1.2 patch and re-ran our custom timedemo without changing any in-game settings.  These frame-rates demonstrate the kind of performance gains the average user will see by simply applying the new patch once it is released...

FarCry Performance Patch v1.1 vs. Patch v1.2
Optimizations Abound!

Applying the v1.2 patch significantly affected performance on all three of the cards we tested.  The largest performance gains were seen on the GeForce 6800 cards when anti-aliasing and Anisotropic filtering were enabled concurrently.  Performance gains were in the neighborhood of 5%-20% on the 6800 and 6800 GT.  The Radeon X800 Pro's performance went up across the board as well, but by much smaller margins.  It seems Crytek has been optimizing as well as stamping out a few bugs.

Regulator Map - SM 3.0 vs. SM 2.0


The FarCry v1.2 patch should include four new demos that can be used for benchmarking and, as NVIDIA happily pointed out, clearly show the performance gains associated with using Shader Model 3.0.  Although we didn't see any major differences in image quality, using SM3.0 with FarCry means NVIDIA's GeForce 6 series of cards can run some shaders in fewer passes, versus cards like the X800 Pro that comply with Shader Model 2.0.

FarCry Performance - Regulator Map: SM 2.0 vs. SM 3.0
NVIDIA Improves Even Further

The 12-Pipe GeForce 6800 and 16-Pipe GeForce 6800 GT both gained a few frames per second by enabling the Shader Model 3.0 code path, but the differences weren't dramatic in this map.  The SM 3.0 path cannot be enabled with the Radeon X800 Pro, so there will be only one set of numbers for the Radeon from this point forward.

Training Map - SM 3.0 vs. SM 2.0


The "Training" demo should also be included with the FarCry v1.2 patch.  This demo takes place in a large outdoor scene with lots of grass, trees, and water...

FarCry Performance - Training Demo: SM 2.0 vs. SM 3.0
Not Much Happening Here

The GeForce 6800s gained some performance by enabling the SM 3.0 path in the Training demo as well, but the deltas were quite small.  Once again, the largest gains were realized when anti-aliasing and Anisotropic filtering were enabled concurrently, which also happens to be the configuration where the Radeon X800 Pro performs at its best.

Volcano Map - SM 3.0 vs. SM 2.0


The Volcano demo takes place mostly indoors, and uses a lot of per-pixel lighting.  Unlike the Regulator and Research demos, Shader Model 3.0 drastically affected performance this time around...

FarCry Performance - Volcano Map: SM2.0 vs. SM3.0
Whoa!  Big Time Gains!

Both the GeForce 6800 GT and the GeForce 6800 significantly benefited by using the Shader Model 3.0 path in with the Volcano Demo.  Performance gains with this demo varied from about 9% to almost 30%.  Once again, it's when AA and Aniso are enabled together that the largest gains are realized, but even when anti-aliasing and Anisotropic filtering were disabled the NVIDIA card's performance increased by a few frames per second at both resolutions.

Research Map - SM 3.0 vs. SM 2.0


Per-Pixel lighting is heavily used in the Research demo as well and, like the Volcano demo, performance in this map increases greatly when using the Shader Model 3.0 code path...

FarCry Performance - Research Map: SM 2.0 vs SM 3.0
Good Stuff!

At resolutions of 1024x768 and 1600x1200, regardless of what settings were used, the performance of both the GeForce 6800 GT and GeForce 6800 increased significantly when the Shader Model 3.0 path was enabled.  With this demo, the performance gains were quite large when AA and Aniso were disabled, but when anti-aliasing and Anisotropic filtering were enabled performance increased dramatically as well.

Summary & Conclusion


Benchmark Summary:  When using the SM 3.0 path, the 12-pipe GeForce 6800 ($299) was able to outperform a 12-pipe Radeon X800 Pro ($399) in only two, lower-resolution tests with AA and Anisotropic filtering disabled.  When AA and Aniso were enabled, the X800 Pro outpaced the 6800 across the board.  The similarly priced GeForce 6800 GT ($399), however, beat the Radeon X800 Pro in all of the default tests, as well as when 4X AA was enabled.  It was only when anti-aliasing and Anisotropic filtering were enabled concurrently that the X800 Pro was able to score a few victories over the GT.  

The FarCry v1.2 patch is somewhat of a milestone for NVIDIA.  When DirectX 9.0c "ships", FarCry, when patched to v1.2, will be the first readily available game to take advantage of the GeForce 6 series Shader Model 3.0 capabilities. And although image quality is generally unaffected by the SM 3.0 in FarCry, the performance gains associated with using the SM 3.0 path are significant.  If the types of performance gains we've seen here today are typical, more game developers may begin to use SM 3.0 to give their projects a boost.  If this happens quickly, NVIDIA's GeForce 6 series may overtake ATi's X800's in more and more games, putting NVIDIA in a much more comfortable position.  

Discuss This Article In HotHardware's PC Hardware Forum!

Content Property of HotHardware.com