[ Print Article! ]

3D Performance with FarCry: Part 4 ATI Strikes Back
July 26, 2004 Brandon Sandman Bell

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!


IntroductionPage:: ( 1 / 21 )

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.

For ATI X-series owners, Crytek has integrated a variant of one of their key additions in Far Cry 1.2, using PS3.0’s increased number of interpolated registers and static branching to collapse multiple lights into one pass, to achieve the same result on ATI’s cards via 2.0b.

CryTek uses longer, more complex shaders in the X800’s pixel shader 2.0b path to essentially achieve the same result as PS3.0. One slight difference between the lighting engine in Far Cry 1.2’s shader model 3.0 path for GeForce 6800 cards and the 2.0b path for ATI X-series cards is that the ATI cards are limited to up to three lights per pass, while GeForce 6800 can handle up to four. (In shader model 2.0 cards were limited to one light per pass.) According to ATI, “It is possible, with a bit of extra work, for four lights to be calculated in a single pass on ATI hardware, but Crytek has not made the changes that would enable this.”

Besides adding multi-pass lighting for ATI X-Series hardware, CryTek has also added geometry instancing. As we discussed in our Far Cry Performance Part 3 article, this is helpful for rendering multiple examples of the same type of object. In the case of Far Cry, this is used for generating strands of grass, trees, and other types of jungle foliage. Rather than having to upload each of these objects individually, with geometry instancing multiple objects can be created from one geometric model. This reduces the amount of vertex data that must be sent to the graphics core, enhancing performance.



Instancing (cont’d)Page:: ( 2 / 21 )

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.

To turn it on, simply type “\\r_geominstancing 1” at the console. (Keep in mind that ATI’s current driver set, CATALYST 4.7, doesn’t support instancing, but it’s coming in CATALYST 4.8. You’ll also need to wait for Ubisoft to re-release Far Cry 1.2.) We ran a few quick benches with older ATI DX9 hardware in Far Cry 1.2’s regulator demo to see how much these cards benefit from instancing:



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:

[image]

<% print_image("01"); %>

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]
<% print_image("02"); %><% print_image("03"); %><% print_image("04"); %>



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.”

While it’s a bit disappointing to see that little has changed visually, CryTek’s position is quite understandable given the amount of time integrating more eye candy features would take. Far Cry has been out on shelves for months now, many other developers would have moved on to their next project by now.

While we’re discussing IQ, we should also note that the same problems with X800 cards we noted in Part 3 of our Far Cry Performance article still existed in last week’s Far Cry 1.2 release. Hopefully CryTek will resolve this when the patch is released again, as it stands now the only alternative is to lower the screen resolution.



Test conditionsPage:: ( 3 / 21 )

System Setup


AMD Athlon 64 3800+

ASUS A8V Deluxe

1GB Corsair XMS3200 DDR SDRAM

ATI RADEON X800 XT Platinum Edition
ATI RAEON X800 PRO
Driver version CATALYST 4.8 beta

NVIDIA GeForce 6800 Ultra
NVIDIA GeForce 6800 GT
Driver version Forceware 61.45

250GB Maxtor Hard Drive Maxline III SATA Hard Drive w/16MB Cache

Windows XP Professional SP2

DirectX 9.0c

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.



High GeometryPage:: ( 4 / 21 )

Far Cry – Direct3D







Pier Performance 1280x1024
Card
Min FPS
Max FPS
RADEON X800 XT Platinum Edition 2.0b (detail)
38.4
79
RADEON X800 XT Platinum Edition 2.0 (detail)
38.3
75.7
RADEON X800 PRO 2.0b
29.9
61.5
RADEON X800 PRO 2.0
30.8
62
GeForce 6800 Ultra 3.0
32.8
75.1
GeForce 6800 Ultra 2.0
31.3
72
GeForce 6800 GT 3.0
29.8
68.2
GeForce 6800 GT 2.0
27.8
64.2


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).

As you can see, we had mixed results with our demo and the X800 cards. The X800 PRO shows little or no performance improvement in our tests, and actually drops performance with 2.0b shaders at 800x600. The results really aren’t much better for the X800 XT Platinum Edition. This was a bit of a surprise to us, as ATI ran some tests of their own in the same level and saw their performance increase by up to 15% thanks to the addition of instancing. Performance for the GeForce 6800 cards improved by about 8% thanks to instancing.




X600 XT ResearchPage:: ( 5 / 21 )

Far Cry – Direct3D









X600 XT TrainingPage:: ( 6 / 21 )

Far Cry – Direct3D










X600 XT RegulatorPage:: ( 7 / 21 )







X600 XT VolcanoPage:: ( 8 / 21 )










Training demoPage:: ( 9 / 21 )

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.




Training demo 4xAAPage:: ( 10 / 21 )

Far Cry – Direct3D










Training demo 4xAA/8xAFPage:: ( 11 / 21 )

Far Cry – Direct3D










Research demoPage:: ( 12 / 21 )

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.




Research demo 4xAAPage:: ( 13 / 21 )

Far Cry – Direct3D










Research demo 4xAA/8xAFPage:: ( 14 / 21 )

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%.



Regulator demoPage:: ( 15 / 21 )

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.

Regulator runs especially strong on NVIDIA cards, with the X800 PRO trailing behind others by 23%.




Regulator demo 4xAAPage:: ( 16 / 21 )

Far Cry – Direct3D










Regulator demo 4xAA/8xAFPage:: ( 17 / 21 )

Far Cry – Direct3D










Volcano demoPage:: ( 18 / 21 )

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.



Volcano demo 4xAAPage:: ( 19 / 21 )

Far Cry – Direct3D










Volcano demo 4xAA/8xAFPage:: ( 20 / 21 )

Far Cry – Direct3D








ConclusionPage:: ( 21 / 21 )

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.
[ Print Article! | Close Window ]