Directx 10 & the Future of Gaming
Essay by review • December 7, 2010 • Research Paper • 3,115 Words (13 Pages) • 1,621 Views
DirectX and Shader Models; if you have been following PC gaming in the last few years you have been exposed to a lot of hoopla over both of these. There have been promises of "cinematic" gaming consisting of graphics like those seen in CG (Computer Generated) movies such as Final Fantasy: The Spirits Within. Here we are in 2006, four years since DirectX 9 has been released and two years the introduction of Shader Model 3.0 hardware. Yet, we haven't even scratched the surface of the full ability of DirectX 9 and "cinematic" gaming. Even with that being so the industry is gearing up for another major DirectX release. The release of DirectX 10 has huge potential for gamers, but carries with it a hefty price in order to achieve the total graphical experience that will be possible.
Brief DirectX History
Way back in the "dark ages" of computer gaming there were few choices to achieve hardware acceleration for 3D. The two most notable methods were OpenGL and 3dfx' proprietary "Glide." Glide required the use of specific 3dfx hardware while OpenGL is an open platform that is supported by the community and can also run under a Linux operating environment. With Windows, Microsoft decided to capitalize on what they saw becoming the multimedia experience. Microsoft developed a suite of APIs (Application Program Interfaces) that allowed software and driver programmers to access hardware components for specific functions. "DirectX" indicated the umbrella and underneath were the specific components, Direct Sound, Direct Input, Direct 3D and others.
DirectX has evolved; DirectX 3, DirectX 5 (there was no DirectX 4 they skipped right to 5), DirectX 6, 7, 8 and now 9. Each version offered new features and more flexibility. DirectX 8 is considered the start of programmable shaders. Before DirectX 8, all its programming functions were "fixed" functions which means the game content developer could only utilize 3D effects that the video chipset specifically supported. For example if the graphics chipset (we don't call fixed function graphics processors GPUs because they aren't programmable) didn't support dot3 product bump mapping then there is no way the developer could use that effect in their game. With the programmable graphics processor everything changed. The game content developer could now make any effect they wanted. However, in younger DirectX versions there were limitations to the number of constants, registers and program lengths they could use. DirectX 8 and 8.1 introduced us to "GPUs" (Graphics Processing Units) and contained Shader Model 1.1-1.3 (DX8.1 had SM 1.4). Shader Model simply referred to the features and flexibility of the programmable nature of the API.
DirectX 9 brought the GPU into its own. At its introduction, DirectX 9 included Shader Model 2.0. Shader Model 2.0 was a very large leap ahead of Shader Model 1.4. Still, DirectX 9 had even more wiggle room. With DirectX 9.0c came the enablement of Shader Model 3.0. This newer version meant virtually unlimited program lengths and possibilities only imagined before on a GPU. However we haven't exactly seen this utilized to its maximum potential in games due to graphics hardware performance limitations. The API is still more capable than the hardware it supports. While there is still a lot of capability left in DirectX 9 and Shader Model 3.0 yet to be realized in real world gaming, it is time to start talking about he next DirectX version, DirectX 10.DirectX 10 Introduction
Our new API will be officially named "DirectX 10." Over the past years it has been called by many names creating some confusion. The API has been known as DirectX Next, Windows Graphics Foundation 1.0 and 2.0, as well as its common nickname, DX10. So now that we know what it is called, where can we get it?
DirectX 10 will be available to Windows Vista users only at its introduction. You will not find DirectX 10 being released for the Windows XP operating system. DirectX 10 is deeply embedded into Windows Vista operation and we currently know of no plans by Microsoft to allow Windows XP to officially support the new API. Also embedded into Windows Vista is DirectX 9.0L to allow for compatibility with DirectX 9 components. Think of it like two separate DirectX systems. We will have DirectX 9.0L for DirectX 9 hardware and we will have DirectX 10 for DirectX 10 capable hardware. If you want DirectX 10 you will have to go with Windows Vista as your OS. Because of this we will see an expensive upgrade path associated with the experience of DirectX 10. You will need Windows Vista, DirectX 10 hardware and of course some DirectX 10 coded games.
The obvious question for the gamer that arises is, "Will this terribly expensive and arduous upgrade path positively impact my gaming experience enough to justify the cost?" That has yet to be seen and can only be answered with the games we have yet to play. We can however discuss some of capabilities of DirectX 10 with a unified architecture and how it can potentially benefit gamers.
DirectX 9 Limitations
Before we talk about what is new with DirectX 10 we first need to understand what DirectX 9 is doing. While DirectX 9 was a huge leap over DirectX 8 it still has its limitations. One of the biggest limitations is API object overhead. In fact game content developers are currently being bottlenecked by this overhead. Out of all the improvements that could be pushed into DirectX 10, the issue at the top of the list for most game developers was to lessen API object overhead.
What we mean by API object overhead is that the API is using CPU cycles to achieve tasks necessary for rendering before being output to the video card for drawing. When rendering a game, the application first has to call to the API and then the API calls to the driver before it ever interacts with your video card's GPU. These calls are all handled by the CPU, using valuable resources and creating a potential bottleneck.Within those procedures are limitations of how many objects you can show onscreen at one time in one frame. Objects can be anything in the game, a character or tree for example. Current limitations are around 500 objects in one frame. Anything over that and you can run into severe CPU bottlenecks. The game content developer has to carefully balance the game so they don't get bottlenecked by this software and CPU limitation. This puts a huge limit on the immersion you experience in a game. For example let's take trees. Right now trees are mostly done by taking a tree and then just
...
...