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
|