The key to the way Direct3D (D3D) allows the game developer to author games independently of PC’s hardware is its Hardware Abstraction Layer (HAL), which has the effect of making the software device independent. The HAL provides an interface to capabilities that are widely implemented in 3D graphics hardware and allows the manufacturers to produce drivers which link HAL to the hardware. This allows the D3D applications to exploit hardware features without having to be authored for that particular device.
Direct3D is generally regarded as being less flexible than OpenGL, despite offering a low-level programming mode intended to make it more equivalent to it rival, known as Intermediate Mode.
In the Direct3D rendering pipeline, the geometry of 3D objects is processed by the host CPU before the 3D accelerator kicks in to render a 3D scene onto the screen. During 1998 – as chip makers madly raced one another for bragging rights in terms of having the fastest 3-D accelerator – DirectX 5 quickly became a bottleneck in the 3D-rendering process. As the situation was about to even worse, with the advent of the third-generation 3D chips, Microsoft overhauled DirectX’s transform and lighting APIs to enhance the efficiency of the geometry processing and balance the system architecture. DirectX 6.0 (in fact, its fifth release), was released in the summer of 1998, and offered a host of new features to improve 3D rendering for games and modelling applications.
The version 6 Direct3D component supports the ability of newer graphics cards to perform multiple texture renders in a single pass, dramatically reducing the time needed to apply texture maps. It also includes newer techniques for adding realism to 3D scenes, such as anistropic filtering, which adds an element of depth to trilinear filtering, and bump mapping, which creates the illusion of real textures and light sources onto flat planes. The trend for the incorporation of OpenGL features has continued with support for stencil plane operations – the superimposition of images on a 3D scene, rather than textures applied to single 3D objects.
So, in the battle for dominance in the PC 3D graphics arena we have Direct3D in the one corner, a contender by virtue of Microsoft’s massive industry muscle, and OpenGL in the other, with less of a stranglehold on the Windows platform but with apparently the greater developer support. In the formative stages of DirectX V7.0 it appeared that this stand-off appeared to be headed for an eminently sensible outcome with the news that Microsoft and SGI had teamed up to produce something called Fahrenheit. However, by the time DirectX V7.0 came to market in 1999, despite it continuing the trend of incorporating OpenGL features, the prospects for Fahrenheit appeared to have dimmed.
As well as being optimised to run up to 20% faster than its predecessor, V7.0 included a number of new features. The most important of these is support for hardware-accelerated transformation and lighting (T&L) as supported by the majority of current-generation 3D cards – and notably those based on nVidia’s GeForce 256 and S3′s Savage 2000 chipsets. Since T&L represents one of the most CPU intensive tasks in modern day games, redirecting the job to a dedicated 3D accelerator frees up a significant amount of main processor capacity for other tasks – such as game AI – allowing games developers to incorporate greater rendering detail and more process-intensive special effects.
DirectX 8.0, released in late 2000, introduced a number of important changes in the following areas:
- Further simplification of initialisation and the use of the Direct3D API, adaptation of the model offered by Direct3D to the capabilities of the latest hardware and elimination of legacy interfaces support
- Expansion of the Direct3D interface into new 3D accelerator technologies such as volumetric textures, multisample rendering (including T-buffer support), etc.
- Introduction of the new principles of data processing: shaders, both at the pixel level of rasterisation (pixel shaders) and at the level of geometry data (vertex shaders).
The changes in the area of programmable shaders will result in greater flexibility for the developer and improved image realism. There are two types of programmable shaders: vertex shaders and pixel shaders. Vertex shaders can be used for morphing/tweening animation, matrix palette skinning, user-defined lighting models, general environment mapping, procedural geometry and any other developer-defined algorithm. Programmable pixel shaders allow interesting effects, such as true reflective bump mapping.
The most important aspect of DirectX 9.0, released in January 2003, was the introduction of Microsoft’s High-Level Shader Language (HLSL).
Prior to DirectX 9.0, games developers would have to develop shaders using a low-level assembly language. HDSL changes that, introducing a developer-friendly programming environment that facilitates every aspect of development, from the creation of vivid art and animation to effects programming. Based on the C programming language, HLSL is compatible with all DirectX-compliant graphics processing units, and allows developers to define a similar visual effect across the widest range of platforms without needing to be aware of the intricate details of the particular graphics hardware.
- How Do Computers Make Pictures?
- Graphic Card Resolution
- Graphic Card Colour Depth
- Graphic Card Components
- Graphic Card Memory
- Graphic Card Driver Software
- 3d Accelerated Graphic Cards
- Graphic Card Geometry
- 3D Rendering
- FSAA Graphic Card Technology
- Digital Graphic Cards
- DVI Graphic Cards
- HDCP Technology
- Graphic Card HDMI Ports
- Graphic Card Display Port
- Unified Display Special Interest Group
- OpenGL technology
- Fahrenheit Graphic Cards
- SLI Technology
- CrossFire Graphic Cards