Jump to content


What is DirectX 10?


24 replies to this topic

#1 Bonecrusher

    New Member

  • Members
  • Pip
  • 7 posts

Posted 13 June 2009 - 06:55 AM

Pausing the game also pauses the particles was a big thing in DirectX games. In the old times, particles were continuing and dropping to the ground when you pause the game.

DirectX 9 bring many interesting things to games. It was a huge difference after old DirectXs. Especially high quality reflections.

F.E.A.R. game, Half-life 2 source engine games, Unreal Engine 3 games are very good examples for capability of DX9.

Then the DX10 came out. They said it will be done scratch over, it will have lots of new features that we can't even imagine. They showed some pictures to show us DirectX9 can't even close to do them. They also said DX10 will need Vista only because it is really hi-tech and can only work in new constructed Vista.

There is even some videos that overlyhype DX10 and show it like a miracle:


Ok, but I can't really see any difference between them, yet a huge difference?

I once tried the DX9-DX10 option in Hellgate London with my Vista laptop. No change in graphics. There was not even a speed change.
I played Crysis with ultra high graphics that they said only Vista can work, in my XP desktop. It was really good quality, but it was working in DirectX 9?
Crysis game was locking "ultra high" options and you need to tweak the game config a little bit to use that graphics. But with that option unlocked, graphics in DX9/XP and DX10/Vista PCs was absolutely the same.
Was this just a show off?
Was this option locked just to show people "DX9 only have this features" -> High quality, "DX10 have this features" -> Ultra high quality.

If DX10 is not different from DX9, What is DirectX 10?
Is it just a Vista version for DX9? That's all?

Now they are developing DX11 and they will probably release it for Windows 7.
Is DX11 will be a DX9 version for Windows 7 also?

#2 starstutter

    Senior Member

  • Members
  • PipPipPipPip
  • 1039 posts

Posted 13 June 2009 - 08:31 AM

Bonecrusher said:

DirectX 9 bring many interesting things to games. It was a huge difference after old DirectXs. Especially high quality reflections.
*FACEPALM*

haha, sorry, the answer following will explain my reaction to that scentence :)

I'm not an expert with DX10, but I've been working in dx9 for a very long time and have read a lot about dx10, so I'll try to answer your question as best as I can.

Well, this is what I've been saying for years. DX10 is actually a pretty nice upgrade from DX9, but microsoft has officially turned it into BS10 via marketing (go ms!). I remember seeing "comparison" pictures of dx9 and 10, and (no, I'm not kidding) they showed a picture of the origional halo and crysis on ultra next to eachother...
*FACEPALM*

Of course this kind of rediculous crap is still going on today belive it or not. I even looked up a comparison of DX9 and 10 for Bioshock wneh it was first out. It stated that soft-particles (particles without jagged borders) were not possible to do in DX9... well that is %100 bull because I create them in dx9 constantly.

As far as actual visual capability goes, you're correct, the two are practically identical. I think DX10 can support multisampling on 64 bit render targets, but with the advent of very cheap post-process AA, this becomes a non-issue.

The bottom line is, DX10 adds some new features that help a little with speed (I have to admit the geometry shader is pretty cool), but its far from a technical revolution. Belive it or not, its actually more of what they removed that makes it good. They removed fixed function, which is useless now-a-days except for very old hardware compatability, and it makes a lot less clutter in rendering code.

So in the end, DX10 is a nice new API, but it is far far far FAR from what MS claims it to be to the public. If it interests you at all, if you are bulding a graphics engine, I would not recommend using DX10. Most indies or hobbists can only afford the time to write one version of a graphics engine, so typically it can only use 1 version of DX. If you use DX10, your game will be vista exclusive... and I don't think I need to explain why thats a bad idea -_-
(\__/)
(='.'=)
This is Bunny. Copy and paste bunny into
(")_(") your signature to help him gain world domination.
bunny also wants to fight spam: Click Here Bots!

#3 Nick

    Senior Member

  • Members
  • PipPipPipPip
  • 1227 posts
  • LocationOttawa, Ontario, Canada

Posted 13 June 2009 - 10:04 AM

starstutter said:

...its actually more of what they removed that makes it good.
Quoted for truth.

#4 rouncer

    Senior Member

  • Members
  • PipPipPipPip
  • 2718 posts

Posted 13 June 2009 - 12:03 PM

Well dx9 introduced shaders properly, they were just in assembler in dx8.

ive learnt dx10 but i havent been using it cause i cant get the vertex declaration to work! its a pain the ass.
Dx10 introduces yet more shader stuff you can use.

Dx11 will give you tesselated displacement mapping, unless you plan on using sculpting programs for your 3d models it wont be much use to a beginner.

Im waiting for dx11 to come out, im skipping 10 too, even tho i was planning on using it, i couldnt get it to work.
Im right into displacement mapping and detail in general so ill be off to the shop for my dx11 card as soon as it comes out.

dx10 wouldnt help speed much, it infact would make everything go slower if you used its features.
Thats down to card power, but the dx10 cards are all more powerful anyway.

#5 Goz

    Senior Member

  • Members
  • PipPipPipPip
  • 575 posts

Posted 13 June 2009 - 02:54 PM

It is worth noting that if MS tried to explain how much better DX10 is than DX9 your games playing masses wouldn't know what the f**k they are talking about. To get round this problem .. they came up with stupid marketting bullshit.

At the end of the day ... DX10 can do more than DX9 without using the CPU (Though thats not entirely true as drivers still suck a lot of CPU power) and DX10 cards are faster than DX9 cards ...

#6 starstutter

    Senior Member

  • Members
  • PipPipPipPip
  • 1039 posts

Posted 13 June 2009 - 05:47 PM

Goz said:

At the end of the day ... DX10 can do more than DX9 without using the CPU (Though thats not entirely true as drivers still suck a lot of CPU power) and DX10 cards are faster than DX9 cards ...
New cards are faster than old cards? Kind of a given don't you think? ;)
(\__/)
(='.'=)
This is Bunny. Copy and paste bunny into
(")_(") your signature to help him gain world domination.
bunny also wants to fight spam: Click Here Bots!

#7 Goz

    Senior Member

  • Members
  • PipPipPipPip
  • 575 posts

Posted 13 June 2009 - 05:57 PM

starstutter said:

New cards are faster than old cards? Kind of a given don't you think? ;)

Shhh ... you'll give the game away!

#8 Bonecrusher

    New Member

  • Members
  • Pip
  • 7 posts

Posted 13 June 2009 - 06:16 PM

starstutter said:

I remember seeing "comparison" pictures of dx9 and 10, and (no, I'm not kidding) they showed a picture of the origional halo and crysis on ultra next to eachother...


This one?





Posted Image

#9 Reedbeta

    DevMaster Staff

  • Administrators
  • 5305 posts
  • LocationBellevue, WA

Posted 13 June 2009 - 06:18 PM

I suspect DirectX 10 is still new enough that developers haven't yet really figured out how to take advantage of it to create eye-poppingly better graphics.

Today, real games (as opposed to research projects) that are using DX10 are still doing much the same stuff that they did in DX9, but possibly more efficiently or simply. In other words it's nicer for developers but makes little visible difference to the end user. I'd guess it'll take another couple years (or more, due to slow adoption of Vista) before we see really creative ways of using DX10 that make the graphics noticeably better appearing in published games.

The same thing will be true for DX11 - the new features will at first be used to accelerate / simplify existing techniques, then later to create entirely new techniques. (The tesselation features are interesting but I would guess that for most studios, actually using them will require a significant restructuring of the art pipeline - artists have to actually model things with NURBS / subdivs now, instead of polygons, and your tools/engine have to support that. Although displacement mapping would be easier and may end up being more popular.)
reedbeta.com - developer blog, OpenGL demos, and other projects

#10 rouncer

    Senior Member

  • Members
  • PipPipPipPip
  • 2718 posts

Posted 13 June 2009 - 06:49 PM

Its down to quality of artist too... total bullshit comparisons are.

#11 Sol_HSA

    Senior Member

  • Members
  • PipPipPipPip
  • 510 posts
  • LocationNowhere whenever

Posted 14 June 2009 - 05:29 AM

Bonecrusher said:

Pausing the game also pauses the particles was a big thing in DirectX games. In the old times, particles were continuing and dropping to the ground when you pause the game.

What? This has nothing to do with the rendering API.

Bonecrusher said:

DirectX 9 bring many interesting things to games. It was a huge difference after old DirectXs. Especially high quality reflections.

dx9 introduced a high-level shading language (behind hlsl and cg), which made it easier for people to use shaders. For "common folk", since earlier versions of directx enabled specific effects (like bump mapping), the marketers needed to figure out which effects they would promote. Nice reflections are easy to spot..

Bonecrusher said:

If DX10 is not different from DX9, What is DirectX 10?
Is it just a Vista version for DX9? That's all?

Since microsoft decided not to support dx10 in windows xp, they also hugely limited the target market. Thus, if you're not simply stupid, you'd have to develop your tech to also cover windows xp (and dx9). Not that xbox360 is exactly dx10 either..

So, wait a few years and you'll start to see games that don't support xp anymore, and maybe, just maybe we'll see some real use of dx10 then. Except that it won't be dx10, but probably dx12 by then. =)
http://iki.fi/sol - my schtuphh

#12 Hyper

    Valued Member

  • Members
  • PipPipPip
  • 195 posts

Posted 15 June 2009 - 05:42 AM

Does the guy in the video even know what "RAM" stands for?
“You may be disappointed if you fail, but you are doomed if you don't try.”
Beverly Sills

#13 rouncer

    Senior Member

  • Members
  • PipPipPipPip
  • 2718 posts

Posted 15 June 2009 - 07:11 AM

Artfully expressive about it.

#14 V-man

    New Member

  • Members
  • Pip
  • 4 posts

Posted 16 June 2009 - 12:51 AM

Sol_HSA said:

So, wait a few years and you'll start to see games that don't support xp anymore, and maybe, just maybe we'll see some real use of dx10 then. Except that it won't be dx10, but probably dx12 by then. =)

Yes, I hope someone will take the old Atari code of Pac Man and use DX10.

#15 ebray99

    New Member

  • Members
  • Pip
  • 7 posts

Posted 16 June 2009 - 09:09 PM

Okay, I'm going to be a heretic and rain on the DX10 feature parade. =)

First off, as from a political perspective, I don't think the IHV's were all that interested in implementing a lot of these features because they really don't make a lot of sense from a functionality stand-point. As far as I can tell, Microsoft pushed for a lot of these features so that developers could reduce the number of draw calls they have to issue. Basically, it's to allow less CPU usage, but it does so at the expense of graphical performance.

The raw truth is that you don't *need* geometry shaders, parameter buffers/texture buffers, or texture arrays for anything. It can all be emulated through hacks with vertex shaders or larger vertex buffers. Geometry shaders can allow you to effectively "compress" geometry by tessellating on the fly, and they can allow you to instance to separate render targets, etc. However, if you've ever actually implemented a software rasterizer, you could see how this clearly breaks some of the advantages of rasterization.

For instance, say you want to render to multiple render targets using geometry shaders. Unless all of your geometry is sorted based on which render target it should go to, you will see far more framebuffer write-cache misses, especially if you do blending. This will effectively waste bandwidth, but hey, you didn't have to issue 6 render target changes and lots of draw calls. So there are some practical benefits to using this, but it's to eliminate CPU overhead, but can dramatically increase the actual cost of rendering.

Texture arrays:
Say you want to render lots of objects in a single draw call, but they all require different textures. You can very easily use texture arrays to eliminate these draw calls, but you do so at the expense of texture cache misses. This means you'll see a greatly increased texel fill rate cost due to high bandwidth usage (basically, when you have a cache miss, a cache line needs to be invalidated and memory needs to be brought in. This memory usage will cause a fairly large hit. Don't forget that graphics memory, while having extremely high throughput, has extremely high latency).

Say you want to use texture/pixel/vertex/parameter buffer objects. These are laid out linearly in memory, and that makes caching difficult. If the buffer is large and cannot fit into cache, you can run into problems when fetching data that is not coherent from pixel to pixel. This is mainly a latency cost. But remember, this can also save you draw calls.

So there you have it. DX10 mainly saves you from issuing draw calls. There is a very real need for this, but it doesn't translate into better rendering performance. It simply lessens the load on the CPU. In games where batching isn't the biggest deal, you're likely to see little to no gains on DX10 vs. DX9 for the same hardware.

In short, this whole "DX10 makes stuff look so much better than DX9!!!" is total marketing BS.

The biggest benefits of DX10, from a purely rendering standpoint, is that exposes asynchronous downloads and readbacks (something that OpenGL has had for years btw [since 2.1]; this was a major design flaw in DX9) as well as render-to-vertex buffer functionality.

Kevin B

#16 rouncer

    Senior Member

  • Members
  • PipPipPipPip
  • 2718 posts

Posted 16 June 2009 - 09:14 PM

DX10 didnt really do what I wanted it to do also, you cant do fine tesselations with the geometry shader, it simply wont output enough and even if it did aparently i heard from microsoft that it wouldnt have the performance either. When given the piddly amount of output for the first time I felt ripped off completely.
DX10 displacement mapping is possible tho, but you have to raytrace through volumes of triangles which is a complete bitch to get working, I wasted half a year trying to do it and even when you get it you get things like ray bending, volume clipping and a complete degrade in speed because dx10 cards cant really support that much of a pixel shader overhead anyway.

Its actually gpu suicide, if you did that in software you wouldnt get a single frame per second, its just that video cards are so powerful these days they can nearly do it, but only just.

Hopefully when DX11 comes out well finally get displacement mapping properly, with tesselation.

If someone ends up finding a use for the geometry shader that you cant do without it, that would be something.

#17 ebray99

    New Member

  • Members
  • Pip
  • 7 posts

Posted 16 June 2009 - 09:23 PM

Quote

Hopefully when DX11 comes out well finally get displacement mapping properly, with tesselation.

Yes, DX11 does offer tessellation. It's exposed via an entirely new stage that I hope won't have the problems that the goemetry shader does. It doesn't have nearly the flexibility of the geometry-shader stage, so it will likely perform pretty well. It will actually allow for dynamic tessellation of patches or triangles, and will allow for fading between different tessellation levels along traingle/quad/patch edges so that you don't create t-junctions. You can use this to try and maintain a 1 to 2 triangle per pixel ratio. It's effectively compression for geometry, and should make a nice addition to the API. OpenGL has recently released this functionality for ATI cards via an extension if you want to play with this functionality early.

You can also use it for bicubic vertex attribute interpolation. =)

Kevin B

#18 V-man

    New Member

  • Members
  • Pip
  • 4 posts

Posted 17 June 2009 - 01:42 PM

I have wondered if there are any games released that use geometry shaders. This is the feature that most interests me. I checked it out (I use OpenGL) and frankly I couldn't see any use other than rendering to multiple cubemap faces in parallel and even this wasn't worthwhile.
Then there was this thing called buffer object. I could upload all the shader parameters in one shot. The problem was that it felt mis-conceived. I couldn't figure it out. Probably my fault but why doesn't the ARB release a few demoes and a nice document instead of nVidia just releasing 1 demo and a stupidly long extension specification.
PS : I've been with GL for something like 9 years. This has been a persistent problem.

#19 Sol_HSA

    Senior Member

  • Members
  • PipPipPipPip
  • 510 posts
  • LocationNowhere whenever

Posted 17 June 2009 - 06:58 PM

V-man said:

Probably my fault but why doesn't the ARB release a few demoes and a nice document instead of nVidia just releasing 1 demo and a stupidly long extension specification.
ARB isn't a single company, but a board that consists of members from a bunch of competing companies. While together they do wish to push opengl, whose resources should be used to make tutorials for this and that extension? =)

There's books, like the OpenGL SuperBible, which go through just about everything. They're never up to date, naturally, as new extensions pop up every now and then.

Aaanyhow, that would be a good idea for a tutorial site - since there's about 400 extensions now, it would take a while to cover, but would probably be popular.
http://iki.fi/sol - my schtuphh

#20 Kenneth Gorking

    Senior Member

  • Members
  • PipPipPipPip
  • 939 posts

Posted 17 June 2009 - 08:57 PM

Isn't the extensions details fully covered in the repository? I have always found them quite helpful when trying out a new extension...
"Stupid bug! You go squish now!!" - Homer Simpson





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users