Sunday, July 29, 2007

Why DirectX 10 Is Slow to Start

Unlike every previous update in the DirectX serious DirectX 10 has completely dumped all backwards compatibility in favor of a fresh start. By doing so it has managed to get rid of annoying little tid bits that have built up inside it over the past few years. DX10 has been made with the next five to six years in mind which may show off some of the biggest developments in the history of real time 3D graphics.

DX10 isn't particularly easy to program for, unlike in the past older cards won't be able to run it meaning if you want to make a DX10 game you will have to write most of the code over again for DirectX 9 (DX9). DX9 has backwards compatibility with 8 and 7, a DX 9 game can run on a DirectX 8 card, but a DX10 game cannot run on a DX9 card unless it has been written in DX9 as well as DX10 (giving the option to switch between them).

It may also be hard to move DX9 legacy code to DX10 since DX10 has abandoned the fixed function pipeline, an inherent bottleneck that has plagued games since shaders (particularly HSLSL) gained traction with developers. Now with DX10 everything runs through shaders, basically all that 'unified shader architecture' is a fancy way of saying 'were throwing out the fixed function pipeline, do everything in shaders'.

OpenGL itself will be undergoing revisions soon to take advantage of the latest hardware and unless some clever folks can find a way to do so without fundamentally changing OpenGL (that is, do a much, much better job than Microsoft) odds are the latest OpenGL is going to also suffer from the same slow uptake.

Some may argue this leap is unnecessary, however moving over to such an architecture will eliminate many bottlenecks, GPUs can do virtually anything with shaders, things like advanced physics can be simulated using shaders without the need for a costly PPU.

These sacrifices Microsoft has made is to future proof DX10, DX9.0c started pushing this trend, perhaps in an effort to give developers some leg room so they can adopt the next generation of graphics programming, and now with DX10 it is in full force. In reality DX10 is a major corner stone in its development, it isn't an iterative improvement but a huge jump.

No comments: