By: Pete "Spyre"
Yesterday I attended a briefing with ATi in
London on behalf of Driver heaven regarding Direct X 10 and
I wanted to share a brief overview of information behind this
DirectX 10 is an evolutionary step over the
current DirectX 9 which you see today in Windows XP and earlier
operating systems. It will include a plethora of features which
game and application developers have been asking for from Microsoft
for some time. These additions will not only make developers
lives easier, they also speed up the wealth of effects and features
that a title can display.
DirectX 10 also places new demands on graphics
card developers (primarily Nvidia and ATI) as there are quite
a few new features that they have to support. DirectX 10 breaks
from tradition by not being backwards compatible with DirectX
9, however there will be a separate version of DirectX 9 in
Windows Vista so legacy games should work without too many issues
(well that is the theory!)
Vista has a new driver model which means that
all the core system component drivers such as sound cards and
graphics card drivers are not part of the OS’s system
kernel but are run at the same level as the user. OK so what
does that mean? Well the short explanation would be that it
improves reliability as if the display or sound card drivers
crash they don’t Blue screen of death (BSOD) the entire
system and it can be restarted without an issue. Running in
user mode has another benefit, the display drivers actually
have more access to resources so they can run faster than before
which will certainly help game frame rates.
Let’s take a quick look at some of the
differences between DirectX 9 and DirectX 10 …
Objects are parcels of data that are sent from
the application to be processed and rendered on the graphics
card. These objects can be vertex data, textures, pixel shaders
or lighting data.
Under DirectX 9 there is a large overhead per
object, and ATI’s famous Ruby for example is made up of
around 30 objects, there is also a limit of around 500 objects
per scene without slowing things to a crawl which means that
worlds are fairly empty of things to interact with. This doesn’t
reflect real life which most games are trying to simulate to
a large degree.
Much smaller overhead per object which means
that more objects can be utilised, making games more interesting
and more fun to explore and interact with.
One thing to note:
If the same game was coded to run on both DX9 and DX10 there
would be around a 20% performance increase just from the fact
the overhead is lower in DX10.
Pixel shaders and vertex shaders are separate
meaning that if a game scene is making heavy use of pixel effects
not all of the graphics card is being utilised as the vertex
shaders are sat around doing nothing.
This screenshot shows that for a particular
scene of a game the usage of pixel and vertex shaders varies
pretty wildly meaning that most of the time either one or the
other is under utilised.
DirectX 10 adds an extra type of shader into
the mix, the geometry shader. This type of shader has the ability
to create extra triangles if requested to do so. One of the
many benefits of this type of shader would be to create displacement
mapping (a way to make textures and scenes look more detailed
by adding the illusion of height to an otherwise flat texture).
ATI’s next generation graphics card currently
codenamed R600, will have unified shaders meaning that if the
game is wanting to make use of pixel shaders all of the graphics
cards onboard shaders can be used for that purpose if required
meaning that there’s much better usage of the chip at
any one time which will speed things up.
To make sure that the requests of the game
/ app are met between pixel , vertex and geometry shaders there
are a number of arbiter units on the R600 allowing the chip
to load balance what its doing at any one time to maximize the
ATI have already learned a great deal about
unified shader architecture as those techniques have already
been utilised in the Microsoft Xbox360. Meaning they can improve
upon decisions they made previously.
Nvidia on the other hand think that for their
DX10 graphics card they are better off sticking to the tried
and true fixed shader pipelines meaning that they have to have
dedicated pixel, vertex and geometry shaders. The downsides
of this is that there is even more chance that the card will
have either 1 or more of the units h around idle while its waiting
for another unit to finish what it’s doing while rendering
Microsoft say that you can go for either approach
and still have a DX10 compliant card, although they prefer the
unified approach. Nvidia will be going to a unified approach
further down the line.
Caps bits, maybe you haven’t heard of
these too much but they are the way that a DX9 and earlier application
/ game found out what the graphics card can and can’t
do so that they don’t ask it to enable an effect or feature
that’s not present. This is to stop the application potentially
crashing or having odd behavior.
No more caps bits, this means that every vendors
graphics card MUST support all the DirectX 10 features by default.
This should make developers lives easier as there is no more
There is nothing to stop graphics card makers
adding extra features above and beyond DirectX 10 however, but
they won’t be accessible until future versions of DirectX
such as 10a or 10.1 etc.
In fact the R600 will have some features onboard that won’t
be activated under DX10.
Other things worth mentioning:
DirectX 10 also allows new abilities for the
developer such as morphing so expect to see monsters changing
shape. Another new feature is the ability to get the graphics
card to handle physics instead of the CPU, which can significantly
allow more objects to be interacted with and making games more
realistic. ATI showed off a demo a while ago which showed off
an ocean where the wave physics were entirely done on the GPU
rather than the CPU so expect more games to use this type of
feature in the future.
Ill see you on the forums ! -- Pete "Spyre"