Please support our sponsor:
DirectX4VB.Com - All You Need For Multimedia Visual Basic Programming

Main Site Links Resources Tutorials
News VB Gaming Code Downloads DirectX 7
Contact Webmaster VB Programming Product Reviews DirectX 8
  General Multimedia Articles DirectX 9
      Miscellaneous

 

Installation and Setup

Installation was a fairly simple affair - although I only had two different test configurations (Super Socket 7 board and a Socket-A board). There is definitely a correlation between programmers and "techie's" - whilst it won't be universally true, the majority of people reading this review will probably be capable of at least following an instruction manual and getting it to work. 

What I was dreading was installing the drivers. Since my first PC back in 1997/8 I've had 5 different 3D cards (and no, it's not because I'm a big spender). Back in 1999 (I think), I wanted to upgrade to a then top-of-the-line ATI Rage 32mb 3D card - but I never managed to get the drivers to work, and in the end I had to return it to the shop. At the end of that day I had also tried a TNT2 but it had a broken fan (but that's another story!). I'd also, before this review, done some online research into the Radeon drivers - from the opinion I got, they are much improved from previous years but some people still seem to have problems with them.

Luckily for me, both my systems accepted the drivers first time - with no complaints. I was all prepared to get nasty with my older SS7 based computer - the Socket-7 based motherboards have never seemed to like AGP based graphics cards without at least 1 bios patch/upgrade. 

My main development machine is running Windows XP on an Athlon Thunderbird, and for the last 2 years has been absolutely rock-solid as far as driver/hardware stability is concerned. Although, in the 2 days since I installed the Radeon I've had 2 blue-screens (although WinXP just restarts the machine) shortly after startup; I have no idea if (and how) these might be linked to the Radeon, all I know is that they've only started since I put it in.

Having said that, it's not as if it's a huge problem - I've deliberately tried to stress the hardware in the last couple of days just to prove/disprove any comments on driver instability - and I've not had a single problem. I managed to get rock-solid performance from Return To Castle Wolfenstein for over 2 hours. 3DMark2001, when run 5 times back-to-back didn't cause any problems either.

3D Benchmarks

Now we're onto the important things - how exactly does the Radeon fair in real-world tests? This review is aimed squarely at developers, so I don't intend to spend ages discussing the finer points of 1001 different statistics - there are other, better, things to discuss. Should you really want to get to grips with 1000's of statistics and frame-rate scores, you should be able to find a review aimed more towards game-players on the internet.

The Test System

I decided to use my main development machine to do the tests on. I do have a Super-Socket-7/K6-2 based system available, but it is an appallingly slow piece of equipment (I sometimes doubt the 500mhz label it has). The test system:

Gigabyte GA-7ZM Via KT133 motherboard
700mhz AMD Athlon (Thunderbird Variation)
288mb PC100 RAM
15.3gb 7200rpm Maxtor DiamondMax +40 Hard drive
Microsoft Windows XP Professional Edition

Whilst I don't have the luxury of testing the card on an all-singing-all-dancing 2ghz computer, I would have preferred not too anyway. I'm sure there are plenty of you who have a turbo charged PC, but I can guarantee you that there are many more of you with a system closer to that which I have (listed above). Also, any game you develop and release in the next year or two will probably find that a high percentage of end-users will also have a similarly specified PC.

Before running this review, I had a Creative GeForce Annihilator Pro (GeForce 256 DDR chipset). Based on my 3 categories on the first page, it would fit into the 2nd, and the Radeon 8500 will fit into the 3rd. I've used my older card to provide some reference scores to compare with those of the Radeon.

3DMark2001.
The team behind 3DMark have a long history of producing benchmarking programs that really push the limits of the current generations 3D cards. It's pretty much taken to be the standard measure of performance for a 3D card. The following table gives the results for the two cards:

Display Mode GeForce 256 Radeon 8500
640x480x32 2860 5107
1024x768x32 2440 4725

As you can see in the above table, the Radeon almost doubled my systems previous performance in 3D graphics at high resolutions. However, it is notable that there isn't such a performance jump at the lower end, this could be caused by other limiting factors - namely the processor not being able to feed the Radeon with enough data to keep it at top-speed.

The overall score is interesting, but I find the next two tables to be of much more use - the individual test scores:

1024x768x32

Test Name GeForce 256 Radeon 8500
Car Chase (Low Detail) 42.8 fps 59.3 fps
Car Chase (High Detail) 12.8 fps 17.2 fps
Dragothic (Low Detail) 45.3 fps 94.9 fps
Dragothic (High Detail) 20.3 fps 48.5 fps
Lobby (Low Detail) 46.8 fps 62.6 fps
Lobby (High Detail) 21.6 fps 26.3 fps
Nature Scene --- 35.9 fps
Fill Rate (Single Tex) 229.4 MTexels/s 770.3 MTexels/s
Fill Rate (Multi Tex) 427.6 MTexels/s 1652.4 MTexels/s
High-Poly Count (1 Light) 8.7 MTriangles/s 26.1 MTriangles/s
High-Poly Count (8 lights) 1.7 MTriangles/s 8.8 MTriangles/s
Env. Bump Maps --- 97.9 fps
Dot3 Bump Maps 35.9 fps 78.2 fps
Vertex Shaders 22.7 fps 57.8 fps
Pixel Shaders --- 72.7 fps
Point Sprites 6.6 MSprites/s 25.0 MSprites/s

640x480x32

Test Name GeForce 256 Radeon 8500
Car Chase (Low Detail) 51.8 fps 56.6 fps
Car Chase (High Detail) 13.2 fps 16.6 fps
Dragothic (Low Detail) 57.5 fps 100.5 fps
Dragothic (High Detail) 23.7 fps 50.5 fps
Lobby (Low Detail) 56.0 fps 61.7 fps
Lobby (High Detail) 23.5 fps 26.0 fps
Nature Scene --- 52.8 fps
Fill Rate (Single Tex) 243.0 MTexels/s 762.4 MTexels/s
Fill Rate (Multi Tex) 445.4 MTexels/s 1617.6 MTexels/s
High-Poly Count (1 Light) 9.1 MTriangles/s 36.5 MTriangles/s
High-Poly Count (8 lights) 1.7 MTriangles/s 9.0 MTriangles/s
Env. Bump Maps --- 126.1 fps
Dot3 Bump Maps 83.0 fps 134.9 fps
Vertex Shaders 22.8 fps 62.2 fps
Pixel Shaders --- 87.2 fps
Point Sprites 10.3 MSprites/s 34.3 MSprites/s

There are two important points to be made here relating to the overall score differences. Firstly, the Radeon has a full D3D8.1 feature set - so registers a result for every type of test (picking up points where other cards cant). Secondly, it has a very high triangle and texel throughput - 1.65 giga-texels compared with 0.43 giga-texels is a very formidable increase, combined with the high triangle throughput (upto 36.5 million triangles/s) this means that "normal" rendering (without too many fancy effects) is blisteringly fast.

This doesn't always translate into a substantially higher game score though, which is a bit odd. This is quite likely to be down to the processor not being able to process the non-graphics components (physics, maths, logic) fast enough to keep up with the Radeon. This also seemed to be the case with the overall scores not improving significantly between low and high resolutions; it may well be that in order to truly appreciate the power of a Radeon you need a processor with a fair bit of grunt.

 

Programming the Radeon Way

So it's now been proven that the Radeon 8500 is a very powerful piece of equipment. Playing games is therefore not going to be a huge problem, however, playing games is not even half of the issue! We want to make the games.

As mentioned on the previous page, the Radeon has plenty of powerful components making up the package, here is a run-down of how they work for us developers:

1. TruForm
TruForm is ATI's buzz-word for the high-order surfaces/primitives that were introduced in Direct3D8. It has been known for quite a while that memory bandwidth is more limiting than processor speeds - shifting the huge quantities of data around is a tough job. Therefore they invented a process of making up additional triangles inside the processor - these don't clog up the memory bandwidth, and hence don't really slow things down very much. Direct3D8 implements several forms of high-order surface ("patches") - rectanglular and triangular. TruForm works through the "N Patch" interface - you need only specify a couple of render states and parameters when creating vertex buffers and TruForm will automatically kick-in. It's therefore a very simple way of improving visual quality.


(Click to enlarge)

2. SmoothVision
This is another ATI buzz-word - for Full Screen Anti-Aliasing (FSAA). FSAA has been fairly standard in most chips for a while now, and new driver releases have made it even more uniformly available. It is with no-doubt the way forward for real-time graphics, but currently you need some very powerful hardware to use it - even 2ghz machines will still drop to 30 or 40 frames per second at medium-high resolutions when full FSAA is enabled. 

Direct3D exposes 'SmoothVision' through its "multisampling" techniques. An 8500 based card will now expose the use of either 2 or 4 multi-samples for anti-aliasing. Likewise with TruForm, it is a very simple effect to start using - a case of changing a couple of initialization/setup parameters and then turning on/off a render-state. Once this is done you can ignore it and let it get on with its job.

Newer driver and hardware revisions introduce even cleverer algorithms for using FSAA, but it really does still kill performance - using 4-sample AA 3DMark2001 registered anything from 870 to 1150 for the 1024x768x32 level tests (1/4 of normal at best). I also experienced a few intermittent crashes while experimenting with 3DMark2001 and SmoothVision - whether this is limited to just 3DMark2001 and the SmoothVision implementation is unknown, but quite likely.

Take a look at the two following screenshots from 3DMark2001's nature scene:


(Click to enlarge)

3. SmartShader and Vertex Shaders
SmartShader - Another ATI Buzzword, this one for pixel shaders. Shader technology is really the main reason why you'd be buying one of these cards - it is such a revolutionary new way of rendering graphics that even your "old" GeForce2 level cards will very quickly be left behind.

Vertex shaders can be implemented in software, whereas pixel shaders can ONLY be implemented through dedicated hardware support - so unless you have the hardware (such as this Radeon 8500) then you really won't be seeing them.

Basically, a "Shader" is a short and simple assembly-like script that the GPU applies to every vertex or pixel it processes, for those of you with plenty of D3D experience it's pretty much an extension of the traditional texture-cascade. They are pretty complicated to learn and even more complicated to master - luckily, given that they are the new "big thing" in computer graphics there is no shortage of examples and whitepapers covering their use. Real-Time Rendering Tricks and Techniques in DirectX by Kelly Dempski (reviewed here) does a good job of covering the world of shader-based rendering.

As with all things Microsoft, there are several versions of pixel and vertex shader - each one (so far) is pretty similar, with the only difference being added instructions. Vertex shaders have remained fairly constant at version 1.1 (for DirectX 8.1), but pixel shaders are already upto version 1.4. It is with pixel shaders that ATI have really been able to shine - the GeForce 4, NVidia's rival chipset only supports upto version 1.3 in pixel shader assembly. For those of you after features at the top-level, the 8500 chipset wins hands-down over the best NVidia have to offer. 1.4 is actually a considerable jump from version 1.3, and is heading much more towards the 2.0 specification due to be introduced with DirectX9; which may well put this chipset in good stead for those wishing to get a little future-proofing from their purchase.

There are very few games on the market that actually make good use of shaders - but expect the majority of the next run of AAA titles to use them a-plenty. Also, if you're the proud owner of an 8500, you too can be "playing with the big-boys" of the graphics world, the only consideration being that you'll still need to program in legacy support for older hardware - at least until pixel/vertex shaders become standard.

The 3DMark2001 Nature scene is a good example of just how impressive shaders can be. You can see screenshots of it (and other similarly good scenes) online, as you can also look at the following shots; but until you see it running fluidly on a monitor in front of you...! 

Halo (XBox), for those that have had the luxury of playing it, is one of the first good examples of using pixel and vertex shaders. Almost every texture is properly lit with realistic materials and bump-maps; all of which have been possible in one form or another without shaders, but they were usually limited to specific places - in Halo (and future titles) we will be seeing these effects on every surface in a game environment.


Probably the best graphics the Radeon has produced


Albeit an OpenGL demo, but it shows the
potential of shader usage. 

4. Point Sprites

Point sprites are the last of the new DirectX8 features that really make any difference. I wrote a tutorial on point sprites a while back, you can find it here. Basically, point sprites allow you to render fairly complex particle systems very easily. You only really need to calculate the position of the particle, place it in a vertex buffer and render it. Before point sprites you'd either of had to transform it to 2D/Screen space and render a TL quad, or mess around with billboards in 3D.

With the Radeon capable of rendering anything from 25 million to 34 million point sprites per second, it is now realistic to consider a particle system with 20,000 dynamic sprites (as long as the processor can keep up with the physics). A system with 20,000 particles could theoretically be rendered 1250 times a second - given that your average game will only hit around 60fps, it is now very unlikely that your particle system will be causing any major slow-down.

5. Traditional 3D rendering

I've now discussed the 4 main advances in Direct3D8 graphics - but that's not the only area to be interested in. You may now be able to cram as many special effects into your game as Hollywood was 5 years ago, but you still need some raw triangle rasterizing power to back all this up.

This was never going to be a problem for the Radeon - a 2nd generation Transform and Lighting engine is a considerable piece of work, and the now improved memory management allows for some very high fill rates (read: number of pixels drawn to the frame buffer).

The GeForce 256 used as a reference card in the above statistics was the first card available that implemented a hardware transform and lighting engine (the first GPU). So in comparing the fill rate and polygon throughput of the GeForce 256 with the Radeon 8500 we are in fact comparing the first ever TnL engine with one of the latest.

At high resolution, the difference is pretty incredible:
Triangle throughput has gone from 1,700,000 triangles to 8,800,000 triangles - a 5.2x increase.
Fill Rate has gone from 427,600,000 texels to 1,652,400,000 texels - a 3.8x increase
(I chose the 8 lights and multi-texturing values respectively because they are more representative of a gaming environment).

What these numbers mean to me and you is that we can yet again push the polygon budget - more detailed worlds, more detailed characters. Instead of trying to stick to the 10,000 triangle rendering limit we can now push for a 50,000 triangle limit - more room to render more objects in more detail.

6. Capability run-down

As well as all the fancy numbers exposed through various benchmarks, it is also wise to examine the feature list. Even if the card doesn't support it very well, if it has it, you can program for/with it. The following is a list taken from the "DxCaps" program supplied with the DirectX 8.1 SDK:

Max. Texture Size: 2048x2048 (with 128mb of memory, you could fit in 8 of these in 32bit mode)
Max. Simultaneous Textures: 6
Max. Active Lights: 8
Vertex Shader Version: 1.1
Pixel Shader Version: 1.4
Quintic Patches: No
RT Patches: No
N-Patches: Yes (See TruForm)
Fog: Supports all D3D8.1 types, including volumetric fog through volume textures
Z, Stencil and Alpha Tests: Supports all test values
Source Blend factors: Supports all
Dest. Blend factors: Supports all except 'D3DPBLENDCAPS_SRCALPHASAT'
Cube Maps: Supported
Volume Maps: Supported
FVF Supported Texture Coordinates: up to 6 coordinates per vertex (matches max. simultaneous tex.)
Texture Op Caps (SetTextureStageStage constants): All Supported
Compressed Textures: Supports DXT1 though to 5
Multi-Sampling: none, 2 or 4 samples
Depth Buffers: 16,24 and 32bit; 8 Bit Stencil Buffer
Texture Formats: All main 16 and 32 bit formats supported (with Alpha where appropriate)

All things considered, it's a pretty complete feature-set and can definitely call itself a DirectX8.1 graphics card. The only anomaly that caught my attention was the lack of support for Quintic and RT patches - given the trumped-up support for N-Patches/TruForm it is surprising that they didn't also implement support for these two. Not a major issue really.

I've uploaded a complete output of the DxCaps program should I have missed something you particularly wanted to check. You can find it here, bare in mind that some fields (such as supported resolutions) are limited by the monitor attached to my system.


Click here to go straight to the next page...

Or select a page from the list:
Introduction
• Installation, Benchmarks and Programming
ATI's Developer Resources, Conclusion

 

DirectX 4 VB © 2000 Jack Hoxley. All rights reserved.
Reproduction of this site and it's contents, in whole or in part, is prohibited,
except where explicitly stated otherwise.
Design by Mateo
Contact Webmaster
This site is hosted by Exhedra Solutions, Inc., the parent company of RentACoder.com and PlanetSourceCode.com