FarCry Patch v1.2 - SM 3.0 Performance on the GeForce 6 Series

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.

Related content