Page 1 of 2

DirectX 10: Legitimate step forward, or massive scam?

Posted: 2007-05-09 12:17am
by Uraniun235
Over in another thread we had this enlightening post:
Resinence wrote:I would also recommend at least getting a 7series, though an 8series is better in the long run with m$ holding a gun to gamers heads over dx10.
What's your call?

Posted: 2007-05-09 12:44am
by Arthur_Tuxedo
I'd say it's both. It's a legitimate step forward, but the idea that you need a graphics card that supports it right now is more or less a scam. Especially on a midranged card that won't be able to run DX10-only games well anyway by the time they come out. The only DX10-only game coming out soon is Halo 2, and I don't think many people are chomping at the bit waiting for that to come out. The others merely support DX10 in addition to 9, and despite the hype, the legitimate screenshots (not doctored up renderings or artists' renditions) don't look much different.

On the other hand, it is supposed to be more efficient and all, so I wouldn't call the whole thing a scam, just the idea that a person should upgrade to a DX10 card even if what they have is perfectly good.

Posted: 2007-05-09 01:53am
by Ace Pace
DX10 a scam? Hell no, the fact that we don't see anything revolutionary from DX10 right now is due to programmers using it to improve existing techniques rather then using new stuff. Same way DX9 initially was.

Forcing upon us now? As Arthur says, the current DX10 stuff will probably not run on first generation cards in an acceptable manner, so theres no real rush.

Posted: 2007-05-09 02:05am
by Pu-239
Isn't it possible to use DX10 features in OpenGL w/ vendor extensions? Granted, that is somewhat of a pain to develop for.... (useful for those of us who might want to run DX10 stuff under Cedega/Wine though).

Posted: 2007-05-09 02:34am
by MKSheppard
Is it Vista Only? Then it's a scam.

Posted: 2007-05-09 02:37am
by Ace Pace
MKSheppard wrote:Is it Vista Only? Then it's a scam.
Right, because being dependent on an entirely new display model/driver model which is quite complicated to backport to XP, is obviously a marketing scam. Get over yourself.

Posted: 2007-05-09 04:50am
by MKSheppard
Ace Pace wrote:Right, because being dependent on an entirely new display model/driver model which is quite complicated to backport to XP, is obviously a marketing scam. Get over yourself.
I recently within the last year spent $200 to upgrade to Windows XP Pro; why the fuck should I need to upgrade to a horribly untested Microsoft Operating System just so I can play the latest DX10 games?

We went from Direct X 1.0 to 8.0 for Windows 95 and from Direct X 5.2 to 9.0c for Win 98; so what is so smashingly new/great about DX 10 that it needs to be exclusive to Vista?

Posted: 2007-05-09 05:11am
by Tolya
Right, because being dependent on an entirely new display model/driver model which is quite complicated to backport to XP, is obviously a marketing scam. Get over yourself.
How do you know that such a backport is so complicated? Like Shep said, we went from 1.0 to 9.0c on 95/98 and it wasnt a big deal.

Microsoft plans on cutting support for XP, which kind of partly justifies the reason for DX10 being Vista only. But I cant believe that making DX10 Vista exclusive didnt have a strong marketing motive behind it. They would just be stupid and incompetent if they didn't do that.

That said, I still would like to hear what's so breathtakingly new about DX10 that does not allow it to run on XP.

Posted: 2007-05-09 05:15am
by Pu-239
Well, the fact that DX10 features are accessible using OpenGL vendor specific extensions... (well, w/ nVidia- ATi sucks anyway :P (yeah, I'm well aware of the pain required for developer to use extensions) yeah, it's a scam (somewhat) -- - the point is that DX10 could have been made as an incremential upgrade.

Posted: 2007-05-09 07:22am
by Ace Pace
Tolya wrote:
Right, because being dependent on an entirely new display model/driver model which is quite complicated to backport to XP, is obviously a marketing scam. Get over yourself.
How do you know that such a backport is so complicated? Like Shep said, we went from 1.0 to 9.0c on 95/98 and it wasnt a big deal.
That said, I still would like to hear what's so breathtakingly new about DX10 that does not allow it to run on XP.
Please, people, take a minute to READ what DX10 is, then you'd understand.
DX10 fundamentally changes the way graphics are done in Windows, it changes the way the entire driver is written. I belive several MS people have said that backporting DX10 back to WindowsXP would involve basically rewriting the Windows XP display model to be like vista. What the fuck would the point be then?
This might help you understand, as I currently am unable to find the writeups a few tech sites had on DX10.

EDIT: This is a rather simple explanation of the differance in the model.

Posted: 2007-05-09 07:23am
by Ace Pace
Pu-239 wrote:Well, the fact that DX10 features are accessible using OpenGL vendor specific extensions... (well, w/ nVidia- ATi sucks anyway :P (yeah, I'm well aware of the pain required for developer to use extensions) yeah, it's a scam (somewhat) -- - the point is that DX10 could have been made as an incremential upgrade.
Possibly, you could have ported some of the features, but part of the idea with DX10 is having a clean break with past APIs. Starting anew.

EDIT: This shows the current state.

Image

Posted: 2007-05-09 07:24am
by Xon
Tolya wrote:How do you know that such a backport is so complicated? Like Shep said, we went from 1.0 to 9.0c on 95/98 and it wasnt a big deal.
The highest DirectX version to run on Win9x was DX8, not v9.

Posted: 2007-05-09 07:27am
by Tolya
The highest DirectX version to run on Win9x was DX8, not v9.
My mistake, but the point is still valid.

Posted: 2007-05-09 07:38am
by Xon
Tolya wrote:
The highest DirectX version to run on Win9x was DX8, not v9.
My mistake, but the point is still valid.
Not even close.

The technological difference between v8 & v9 is huge for graphics. The transition from a purely fixed pipeline to a programable pipeline is mindbogglingly huge.

And there is a very clear and big difference between DX8 and DX9 level graphics.

Posted: 2007-05-09 07:41am
by Ace Pace
Lets go over the driver model quickly, courtesy of Elite Bastards.

To understand what is new about WDDM, we should first examine how graphics drivers currently work circa Windows XP. At present, the vast majority of the graphics driver resides in the Operating System's kernel space, where it can communicate directly with the graphics hardware in the system, with only a small portion (as well as the OpenGL component of the driver) utilising the user space which does not have this direct access to the hardware. This doesn't seem particularly problematic in itself, until you consider that an error in the driver inside the OSes kernel space can cause the entire system to crash and hang, which is never a satisfactory state of affairs. You can see a diagram showing ATI's current graphics driver model below.

Image

Under the new WDDM driver model, as much of the driver as possible has been moved into the user space, to keep it isolated from the Operating System itself. To do this, a WDDM driver is basically split into two components - The UMD (User Mode Driver) and KMD (Kernel Mode Driver). ATI's WDDM drivers will be made up of several UMDs - One for DirectX, one for OpenGL, and another for DXVA (for video playback acceleration). Each of these drivers are kept completely seprate from both the KMD and the graphics hardware itself. In addition to this, several UMDs can be run at once, with one used per application - Thus, if one User Mode Driver crashes, it will only affect the application using that driver, and other applications (and indeed the Operating System) will remain unaffected. Indeed, this is much like the way applications tend to work - Try opening up a number of Internet Explorer windows, then have one of them crash... Only the affected application window will close, leaving the rest still running. This improvement is especially important under Windows Vista due to its use of Direct 3D to render the desktop - Without this new scheme, if a graphics driver error caused then entire graphics subsystem to crash, it would take not just the game or application down, but the entire Operating System with it! To compare to the current driver situation, check out ATI's rendition of a WDDM-based driver below.

Image

Aside from that major change, there are also other differences to certain aspects of the driver. ATI have had some crash recovery abilities in their CATALYST drivers for some time, but this has now been taken into the Operating System itself under Windows Vista, where it will detect if the graphics hardware or Kernel Mode Driver has encountered an error, and then instruct the graphics driver to reset the GPU and recover the situation gracefully.

In a similar vein, management of graphics board memory has also moved from the graphics driver itself to being handled by the Operating System as part of the WDDM driver model, as indeed has the prioritisation and management of the GPU's workload.
Hopefully, you have enough understanding now to realise why porting this back is non-trivial.

Posted: 2007-05-09 08:16am
by Crazy_Vasey
Xon wrote:
Tolya wrote:
The highest DirectX version to run on Win9x was DX8, not v9.
My mistake, but the point is still valid.
Not even close.

The technological difference between v8 & v9 is huge for graphics. The transition from a purely fixed pipeline to a programable pipeline is mindbogglingly huge.

And there is a very clear and big difference between DX8 and DX9 level graphics.
Direct3D 8 was not purely fixed function. It had both vertex shaders and pixel shaders even if they were considerably less pleasant to use and less advanced than they are in Direct3D 9. Don't you remember the hype of the time? It was quite a big deal that support was. As I recall, the differences between 8 and 9 were mostly in the addition of v2 of the shaders and the HLSL.

Posted: 2007-05-09 08:24am
by Ace Pace
Crazy_Vasey wrote:
Direct3D 8 was not purely fixed function. It had both vertex shaders and pixel shaders even if they were considerably less pleasant to use and less advanced than they are in Direct3D 9. Don't you remember the hype of the time? It was quite a big deal that support was. As I recall, the differences between 8 and 9 were mostly in the addition of v2 of the shaders and the HLSL.
There are large differances between DX8 and DX9.

techreport.com
DirectX 9 is a complex beast, but its highlights include:

More precision everywhere — The watchword for DX9 is precision, as you might have gathered by now. DX9 calls for larger, floating-point datatypes throughout the rendering pipeline, from texture storage to pixel shaders, from the Z-buffers to the frame buffers. 128-bit floating-point color precision is the most complex color mode, but the DX9 spec calls for a range of color formats, including 32, 40, and 64-bit integer modes (with red, green, blue, and alpha channels of 8:8:8:8, 10:10:10:10, and 16:16:16:16), plus 16 and 32-bit floating-point modes.

The additional precision will, of course, help with color fidelity and dynamic range, but it will also help with visual quality in other ways. For example, depth-handling errors will be dramatically reduced with the addition of floating-point Z buffers. Bump mapping elevations will increase (and quantization error will be reduced) with added precision for normal maps.

Pixel shader 2.0 — DX9 pixel shaders will take steps toward general programmability while exposing more detail about a chip's underlying capabilities. Since high-level shader languages may compile to DX9 API calls, these changes make sense. At the same time, DX9 pixel shaders will offer floating-point precision. These new pixel shaders incorporate a number of powerful vector and scalar instructions, including log, exponent, power, and reciprocal.

DX9 pixel shaders should be able to intermix as many as 32 texture address operations and 64 math operations arbitrarily. That is, they will be able to execute 32 address and 64 math operations in a single rendering pass, without having to resort to multipass rendering. With this kind of power, reasonably complex shader effects should be possible in only one or two passes.

Vertex shader 2.0 — Vertex shaders aren't as dramatically improved in DX9 as pixel shaders, but they do gain one powerful improvement: flow control. In this iteration, vertex shaders gain the ability to handle vertex programs with jumps, loops, and subroutines. Vertex shader units will add more registers and constants in order to make that happen. Improved flow control will allow for much more efficient vertex programs that reuse code and the like.

Higher-order surface handling improvements — DX9 adds several new tricks to its arsenal here. Displacement mapping is similar to bump mapping, but it actually modifies the geometry of an object, adding real polygon detail. Bump mapping just fakes it with lighting. Microsoft is working on tools to take a high polygon model (say, for a game character) and generate a a low-poly model and a displacement map for it. When mated up again on the other side of the AGP bus, these two elements could create a high-poly model yet again—much more efficient than sending the whole high-poly model over the bus.

DX9 also brings adaptive tessellation to displacement maps and other models, and does so with floating-point precision. This ability to cut out unneeded polygon detail as objects move away from the viewer will allow more complex scenes to be rendered faster.

Multiple render targets — Chips should be able to perform pixel shader operations on multiple color buffers at once. ATI has demonstrated this ability on the R300, rendering several copies of a race car model with several different colors of paint but the same, shiny gloss.

Improved gamma correction — Now that the pixel pipeline is more precise, DX9 includes some provisions for handling gamma correction properly, at least in the pixel shaders. Better gamma handling will help with tuning output brightness while preserving dynamic range.
Further on, some features were added or played around with.

Posted: 2007-05-09 02:57pm
by phongn
MKSheppard wrote:I recently within the last year spent $200 to upgrade to Windows XP Pro; why the fuck should I need to upgrade to a horribly untested Microsoft Operating System just so I can play the latest DX10 games?
Then don't? Most games won't require DX10 for some time (just like most games didn't require XP for some time). You will also need new hardware anyways, so what's the big deal?
We went from Direct X 1.0 to 8.0 for Windows 95 and from Direct X 5.2 to 9.0c for Win 98; so what is so smashingly new/great about DX 10 that it needs to be exclusive to Vista?
DX10 requires a totally new driver architecture. It's the same reason that DX9 was never supported on Windows 95, since DX9 requires WDDM drivers (which first appeared in Windows 98 and Windows 2000).

Posted: 2007-05-09 03:30pm
by Crazy_Vasey
Ace Pace wrote:Lots of stuff; too much to quote.
Fair enough. Conceded and all that jazz. I'm not much more than a dabbler when it comes to computer graphics and I should have checked more thoroughly before shooting my mouth off, though I did at least get it right about D3D 8 having a programmable pipeline, which was massively hyped at the time.

Posted: 2007-05-09 04:26pm
by Starglider
For some reason I kinda miss DirectX 7 - the last time I did significant programming with DirectX. Things were so simple back then (or rather, complex enough to be interesting without being so complex as to be a headache).

Posted: 2007-05-09 04:33pm
by RThurmont
As I see it, DirectX 10 is an ultimately worthless technology, even though it is innovative and interesting. The reason for this is that much of what actually makes a game great-compelling design-is not very frequently found in recent games. Before 2002, it seemed like interesting, innovative games were coming out every month, and now, since then, there have been relatively few, and a good chunk of those have merely been sequels to previous games with better graphics. The "genrealization" of gaming, where the focus shifts to producing relatively homogenous games that are updated frequently, with each consecutive version featuring improvements in graphics and in other areas, makes for a relatively stable business model, but is ultimately ridiculously boring.

I would personally rather that game developers used OpenGL and produced games that looked like they were made in 2001, that had interesting and innovative gameplay, than continued to churn out games in this manner, but I don't think that's going to happen. The increasing popularity of consoles is another problem. Windows also IMO has always provided a frustrating platform for gaming...in the DOS era, when you started a game, it was pretty much the only thing running, and admittedly, that's an obsolete approach, but I find that when gaming on Windows, especially with a live internet connection, the distractions are constant. I have not gamed on OS X (but I'd assume its the same, if not worse).

Posted: 2007-05-09 05:21pm
by Starglider
RThurmont wrote:As I see it, DirectX 10 is an ultimately worthless technology, even though it is innovative and interesting.
'Only an incremental improvement' != worthless
Before 2002, it seemed like interesting, innovative games were coming out every month, and now, since then, there have been relatively few, and a good chunk of those have merely been sequels to previous games with better graphics.
Innovation is risky. One serious flop can and will sink a game studio and a short string of them will sink a publisher (not that there are many small or medium publishers left).
The "genrealization" of gaming, where the focus shifts to producing relatively homogenous games that are updated frequently, with each consecutive version featuring improvements in graphics and in other areas, makes for a relatively stable business model, but is ultimately ridiculously boring.
You want innovation and less focus on graphics/content, look at indy gaming. There are huge numbers of really interesting freeware or shareware games, but they don't have the huge worlds or movie-like production values most gamers are used to.
I would personally rather that game developers used OpenGL and produced games that looked like they were made in 2001,
OpenGL isn't significantly behind DirectX in feature terms, it's just more awkward to use because all the advanced stuff is tacked on as a mismatched set of extensions. OpenGL versus DirectX is Microsoft trying to lock everyone in to Windows by throwing money at API development, not so much a technology issue.
had interesting and innovative gameplay,
Too risky. Branding sells (movie license + cheap crap game = PROFIT). Screenshots/trailers sell. Good reviews don't particularly and word of mouth is particularly fickle. Hardcore gamers are too small a market to support $10 million development budgets.
The increasing popularity of consoles is another problem.... ...in the DOS era, when you started a game, it was pretty much the only thing running, and admittedly, that's an obsolete approach
No, that's just what consoles do, they do one thing at once (play a game) and they do it on the big-screen TV in the room you mentally associate with entertainment rather than (for most casual gamers) the home office on the little monitor that you associate with online banking and shopping.
but I find that when gaming on Windows, especially with a live internet connection, the distractions are constant.
Your inability to turn off your IM client is a mental disorder most people don't suffer from. That and/or you've installed all kinds of unnecessary popup-spouting crap.

Posted: 2007-05-09 05:32pm
by MKSheppard
(snip massive wank about driver architectures)

That's not what I was asking.

I mean you can talk about how the driver architecture's overhaul is so great; and I have to ask a question "was it all necessary?"

Do we really need to completely tear out the entire guts of the system, when in reality the majority of this stuff can be accomplished with the present driver architecture?

Posted: 2007-05-09 05:35pm
by Xon
RThurmont wrote:As I see it, DirectX 10 is an ultimately worthless technology, even though it is innovative and interesting.
DX10 is an important milestone in dragging video card manufactor's kicking and screaming into the early/mid-90s era of programability for personal computers but on the graphics chip.

Virtualised memory for graphics cards is still a blindingly new concept for comercial video cards, and it requires a completely new driver model to remotely work well.

And it is a massively iteratively process on refining graphics card drivers, especially after changing the entire model.

Posted: 2007-05-09 05:36pm
by phongn
MKSheppard wrote:Do we really need to completely tear out the entire guts of the system, when in reality the majority of this stuff can be accomplished with the present driver architecture?
Microsoft also decided it was time to clean up the driver architecture at the same time - WDDM has some significant problems, not the least that it is designed to wholly run in kernel space (nVidia and ATI hacks aside). That means that if the driver does down, so does the entire OS. The new model makes it so that if the user-mode part of the driver goes down, it doesn't take down the OS with it (that part restarts, and while your game might crash if it can't handle that, Windows doesn't).

Considering DX10 is also a radical departure from DX9, it makes sense to do both at once.