Summary: While pixel shader 3.0 support in Far Cry 1.2 was well documented, at the last minute, CryTek also added performance improvements for ATI users! In fact, with the addition of instancing, even those of you with older RADEON 9700s and RADEON 9600s will also get a boost in performance. Therefore, with a beta ATI driver in hand, we loaded up Far Cry 1.2, read on to see our results!
While gamers are highly anticipating the imminent release of upcoming titles Doom III and Half-Life 2, CryTek has been quietly plugging away on their CryENGINE that powers Far Cry, which is probably the most highly acclaimed PC title of 2004 to date. At the beginning of this month we learned more information about CryTek’s shader model 3.0 implementation in Far Cry 1.2, which includes static branching and geometric instancing. Later we learned that CryTek also plans to add high dynamic range (HDR) lighting and ATI’s 3Dc to Far Cry 1.3. This news in particular surprised many, as it was widely assumed as one of NVIDIA’s launch partners for GeForce 6800 and shader model 3.0 that CryTek wouldn’t be in a rush to include support for features that were exclusive to ATI hardware until they became open standards, or it was absolutely necessary. It turns out that not only was this assumption wrong, but it was just the tip of the iceberg, as CryTek has gone back and added many of the same improvements we saw for GeForce 6800 to ATI’s DX9 hardware! New rendering paths
In addition to adding shader model 3.0 support to Far Cry 1.2, Crytek added a second new rendering path for ATI’s X-series products: pixel shader 2.0b. If you recall the X800 launch, shader model 2.0b was added to the DX9 spec to expose its unique new abilities. ATI refers to them in marketing speak as “DirectX 9 Extended Pixel Shaders”. The chief improvement in 2.0b is increased instruction count, which goes from 160 instructions in RADEON 9800 to 1,536 in 2.0b. ATI has also increased the number of temporary registers to 32 (from 12 in 2.0) and added a facing register.
Instancing support
One interesting factoid related to geometry instancing is that support isn’t just limited to the X-Series graphics cards and shader model 3.0. ATI’s entire DX9 lineup ranging from the RADEON 9500 all the way up to the 9800 family, as well as the X800, X600, and X300 all support it, and you don’t even need DX9.0c! This means that those of you with older DX9 RADEON cards can also take advantage of it. Higher geometry
In theory, thanks to the addition of instancing, you should be able to crank up Far Cry’s detailed vegetation without the performance hit that’s normally associated with it. For example, with Far Cry’s e_vegetation_sprites_distance_ratio setting, you can adjust the amount of geometry on the screen. This console command adjusts the distance at which some of Far Cry’s more distant vegetation switches from simple 2D sprites to using true geometry. Far Cry’s default setting is 1, but increasing the value to 100 disables the use of sprites. Here’s ATI’s example, taken from the pier level:
And now a batch of screenshots we took in pier, taken on a X800 PRO. In the first image, e_vegetation_sprites_distance_ratio is set to “1”, while the second it’s at “100”. As you can see, the differences are substantial. Vegetation in the forest is much thicker with sprites disabled. It might help if you download both screenshots and scroll back and forth between the two: [image]
![]() sprites distance 100 on right We also ran some benchmarks with both ATI and NVIDIA cards on page four. Image quality
With the additions of PS2.0b and shader model 3.0 to Far Cry 1.2, CryTek could have potentially cranked up the number of light sources in indoor areas or increased the geometric complexity in outdoors/indoors, but instead CryTek chose to focus on improving performance, not image quality. In the Far Cry 1.2 readme CryTek says: “Our utilization is focused on performance improvements. One can achieve all necessary cinematic effects with SM 2.0 already. SM 2.0b is more convenient, hence more effective to code and offers the possibility to optimize the rendering performance, decrease the number of passes/draw-calls and optimize shaders with its advanced features such as long shaders and geometry instancing.”
System Setup
Benchmarks
Far Cry 1.2 (custom and standard demos) Notes
Since NVIDIA’s current driver, 61.76, doesn’t provide SM3.0 support, we were forced to continue to rely on 61.45 for our GeForce 6800 testing. Since CATALYST 4.7 doesn’t provide support for geometric instancing or 2.0b, ATI provided us with a beta copy of CATALYST 4.8, which will be released next month.
Far Cry – Direct3D
Notes
We created a custom demo of our own based on the pier demo to highlight the benefits of ps2.0b and 3.0 shaders with Far Cry with high quality vegetation geometry and sprites. The screenshots on page two were a part of that demo. In the “sprites 2.0” section of the graph, we ran Far Cry 1.2 with default settings, that is e_vegetation_sprites_distance_ratio set to 1 with 2.0 shaders. For the “detail” settings, we crank it up to 100, with 2.0, 2.0b, and 3.0 shaders used depending on the card (2.0b and 3.0 modes both turn on instancing by default).
Far Cry – Direct3D
Far Cry – Direct3D
![]() ![]() ![]() ![]()
![]() ![]() ![]() ![]()
Far Cry – Direct3D
Notes
The 2.0b and 3.0 render paths use instancing to boost performance in Far Cry 1.2’s training demo, as you can see the X800 cards were able to post much better performance improvements than their NVIDIA-based counterparts.
Far Cry – Direct3D
Far Cry – Direct3D
Far Cry – Direct3D
Notes
Multiple light sources abound in sections of the research demo. The X800 boards use 2.0b’s longer shaders to achieve a performance improvement of 22% at 1600x1200, while the GeForce 6800 Ultra and GT see a boost of 13% thanks to shader model 3.0.
Far Cry – Direct3D
Far Cry – Direct3D
Notes
Under the greater demands of 4xAA/8xAF, the GeForce 6800 cards boast slightly greater benefits from the addition of pixel shader 3.0 than the X800 cards from pixel shader 2.0b. At 1600x1200 performance improves by 19% for both the GeForce 6800 GT and Ultra, while 2.0b gives the X800 XT Platinum an 18% boost (X800 PRO’s performance increases by 16% at the same resolution). The surprising part to see is the Platinum board’s commanding lead over the others, the second place finisher, GeForce 6800 Ultra, trails by 22%.
Far Cry – Direct3D
Notes
Like training, regulator uses instancing to improve performance in outdoor areas, where trees, grass, and other jungle foliage abound in some areas. The performance boost from 3.0 is better for NVIDIA cards than it was in training, as we saw a 4% improvement for the Ultra and 6800 GT. This is also the same margin we saw for the X800 cards.
Far Cry – Direct3D
Far Cry – Direct3D
Far Cry – Direct3D
Notes
Like research, the NVIDIA GeForce 6800 boards see slightly greater benefits than the X800’s most likely due to their ability to collapse 4 lights into one pass, while X800 cards are currently limited to 3.
Far Cry – Direct3D
Far Cry – Direct3D
First of all, it really is a shame that the Far Cry 1.2 patch had to be recalled, CryTek had included lots of goodies for ATI as well as NVIDIA users to enjoy. Hopefully CryTek and UbiSoft can get the stability problems addressed in the upcoming re-release of the patch, we didn’t have any problems with stability on any of our cards, but the Ubi forums are filled with complaints from end users. According to one ATI employee we spoke with, 3Dc just missed getting added to Far Cry 1.2 the last time, so we’ll also be curious if CryTek is able to slip this feature in the next 1.2 release. We’re under the impression that CryTek’s 3Dc implementation is focused on performance rather than improved image quality, so ATI’s X800 performance will only be going up from here. Interestingly enough, ATI reaped more benefits from the addition of instancing than NVIDIA’s GeForce 6800 cards did. In our testing, results were limited for NVIDIA cards in the training demo, while X800 reaped some tangible performance improvements. In regulator, instancing helped both ATI and NVIDIA’s hardware, with the 6800 cards seeing a little more of an improvement than the X800s. Additionally, the ability to collapse up to four lights into one pass (versus three on ATI hardware) yields a little more performance for the GeForce 6800 cards. Besides Far Cry 1.2, we’ll also be watching ATI’s upcoming CATALYST 4.8 release, which makes all this 2.0b and instancing goodness possible. Performance with the beta driver we tested was a little bit lower than with CATALYST 4.7, so we’re hoping that isn’t the case as well with the final driver. We noticed that ps2.0b didn’t work properly with our PCI Express R423 board, so it’s pretty clear that a little more work has to be done before this driver is ready for primetime. Stability of the driver was excellent however. With 3Dc, HDR, AMD-64, and 2.0b and 3.0 shaders all coming to Far Cry in the near future, CryTek is working hard to ensure that their CryENGINE, and their showcase title that takes advantage of it in Far Cry supports the latest and greatest hardware technologies. id Software, Epic, and Croteam should all keep their eyes on this small German developer, with their recent EA signing CryTek could be a major force in the coming years. Meanwhile, ATI users can essentially enjoy the same benefits that GeForce 6800 users were bragging about a few weeks ago in Far Cry. How’s that for irony! | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| © Copyright 2003 FS Media, Inc. |