What is DirectX 10?
#1
Posted 13 June 2009 - 06:55 AM
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
Posted 13 June 2009 - 08:31 AM
Bonecrusher said:
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
Posted 13 June 2009 - 10:04 AM
starstutter said:
#4
Posted 13 June 2009 - 12:03 PM
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
Posted 13 June 2009 - 02:54 PM
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
Posted 13 June 2009 - 05:47 PM
Goz said:
(='.'=) 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
Posted 13 June 2009 - 05:57 PM
starstutter said:
Shhh ... you'll give the game away!
#8
Posted 13 June 2009 - 06:16 PM
starstutter said:
This one?
#9
Posted 13 June 2009 - 06:18 PM
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.)
#10
Posted 13 June 2009 - 06:49 PM
#11
Posted 14 June 2009 - 05:29 AM
Bonecrusher said:
What? This has nothing to do with the rendering API.
Bonecrusher said:
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:
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. =)
#12
Posted 15 June 2009 - 05:42 AM
Beverly Sills
#13
Posted 15 June 2009 - 07:11 AM
#14
Posted 16 June 2009 - 12:51 AM
Sol_HSA said:
Yes, I hope someone will take the old Atari code of Pac Man and use DX10.
#15
Posted 16 June 2009 - 09:09 PM
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
Posted 16 June 2009 - 09:14 PM
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
Posted 16 June 2009 - 09:23 PM
Quote
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
Posted 17 June 2009 - 01:42 PM
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
Posted 17 June 2009 - 06:58 PM
V-man said:
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.
#20
Posted 17 June 2009 - 08:57 PM
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users











