A graphical revolution

War zone With games consoles growing in popularity PC games need to keep up the pace. Henry Tucker looks at a new technology that should help them to stay in touch.

As you will undoubtedly know Microsoft has recently launched its latest operating system, Windows Vista. One of Vista's features that hasn't received that much attention is the new version of Microsoft's graphics API (application program interface), DirectX 10.

The current crop of games and hardware use the older DirectX 9c, but unlike other previous versions of the DirectX API (or Windows Graphic Foundation as it was known at one point) DirectX 10 is totally new and therefore have limited, if any, backwards compatibility with current hardware.

Microsoft has said that DirectX 9 will be supported side-by-side to some extent with a new version 9L. This will only have limited functionality and graphics cards that use it won't have the same power as full blown DirectX 10 cards.

The main reason why older DirectX 9c cards won’t work with the new API is because Microsoft has changed the way in which the code and the hardware interact. With DirectX 9, cards functioned by matching various aspects called Capability bits or cap bits.

This means that a card can support some parts of the API, but not all. For a card to compatible with DirectX 10 it has to meet a minimum set of specifications before it can be classified as a DirectX 10 card.

This means that whereas with the current crop of cards from the likes of NVIDIA and ATI are both DirectX 9 cards they support different shader models, with DirectX 10 the cards have to support the same shader model. DirectX 10 will support shader model 4.0 which should help to reduce the confusion surrounding exactly what the card supports and what it’s capable of.

Not only will this clear up confusion in the industry, but it should also mean that when you start up a game or other demanding 3D application, it runs the same on most machines. With DirectX 9 you can easily have the same game playing on multiple PCs and they'll all look different because the graphics implementations can vary so much.

Unlike previous versions of DirectX, DirectX 10 will be the first one not to incorporate older versions of the API. This means that it won't run on Windows XP or any other older versions. Microsoft has also said that it isn’t planning on providing and backwards compatibility code to enable this either.

DirectX 10 will have faster DLLs (dynamic link libraries), which should make it more efficient even without any of its other features. Microsoft has so far failed to explain how they will be faster, all it says is that they are faster!

Another part of your graphics card that the manufacturers can confuse everyone with are pixel shaders. When looking at different hardware people often try to compare them but it's like trying to compare a Formula 1 car with your own little run around.

To help solve the problem, Microsoft is implementing unified vertex and pixel shaders and introducing the concept of geometry shaders into DirectX 10. instead of rendering individual pixels and vertices, cards will render entire triangles and as well all their adjacent vertices.

As well as this developers should be able to stream data from the graphics processing unit (GPU) and use it again without it having to involve the CPU. As is the case with the current hardware and DirectX 9. This should mean that the CPU will be left to do what it's best at: carrying out floating point operations, which should result in better overall system performance.

If, for example, one of the current crop of DirectX 9 cards has four pipelines, three of which are busy and fourth can't perform the same function, it will remain idle. DirectX 10's hardware is different: by using the new API, developers will be able to control each individual pipeline so that they’re more efficient.

Some analysts have said that one of the reasons why Windows XP won't support DirectX 10 is because Microsoft wants to use it as a tool to drive sales of Windows Vista, this is technically the case. Vista has a completely new driver model to XP, which could be ported over in theory, the resulting performance wouldn’t be worth the necessary effort.

Although Microsoft released Vista in January 2007, NVIDIA launched DirectX 10 capable hardware towards the end of 2006. However, DirectX 10 drivers weren't available for either release and by May 2007 NVIDIA still only had beta drivers that supported DirectX 10. The cards, such as the GeForce 8800 do work though because of the limited backwards compatibility within the API.

At the moment all new games use DirectX 9, however soon games that only support Directx 10 will start to appear. The first of these is expected to be Halo 2. This is a strange choice as the game first appeared on the Xbox more than two years ago and certainly won't quicken the pulse of hardcore gamers. All it is likely to do is show what Vista and DirectX 10 are capable of to the average home user.

That's not to say that there any good DirectX 10 games in the pipeline though. There's been a lot of interest in Crysis, the follow up to the highly successful and visually stunning Far Cry. Another game that shows a lot of promise Alan Wake from the people who made the Max Payne games.

Gaming is a huge business and the console market is very strong. Although DirectX 9 hardware and games still look good PC gaming compete if it has something of an facelift. This is what DirectX 10 should do for it.

One of the main criticisms of PC gaming over consoles is that when you install a game on your PC you don't always know how it will look and play. As DirectX 10 unifies much of the underlying technology in the PC hardware and software this should help to improve the situation.

May 2007