Migrating to Direct3D 10

In lots blogs I've seen rants about how difficult it would be to migrate a 3d engine to Direct3D 10. Most people agree that D3D10 is good and a must-have, but nearly all write that it would be a lot of work or even that they would have to rewrite their 3D engine almost from scratch to make it work with Direct3D 10.
Oh, come on.
The problem is not that D3D10 is that much different (in fact it isn't). The problem is that people are even calling a bunch of poorly written .cxx files which are somehow communicating with the IDirect3D interfaces a 3D engine. And that's just like calling a soap box a race car.
Real 3D engines are all about software design. Ok, speed and features are also important, but they are only secondary. If one component of a well designed software library changes, there should be no need to rewrite the whole library at all. That's the reason people invented paradigms known as OOP, abstraction, encapsulation etc.
Ever wondered why Irrlicht works on that much platforms, with that much drivers, and even with software rasterizers? Hell, it would even work with a ray caster as backend. That's because it was developed using those paradigms known as OOP, abstraction, encapsulation etc. Because of this, it won't be a big deal to migrate Irrlicht to D3D10 at all, it would only add some new features to it. Most of the changes like the removal of the fixed function pipeline, state objects and missing caps won't bother an Irrlicht user at all. The only change for him will be that instead of writing down
createDevice(EDT_DIRECT3D9);
he would write
createDevice(EDT_DIRECT3D10);
And that's it. Everything other will go on behind the scenes, and only make available more effects or better rendering speed etc.

When will Irrlicht add support for D3D10? As soon as Windows Vista and the needed hardware will be available to lots of users, it doesn't make sense for an open source 3d engine to do this earlier.

thirteen comments, already:

Great to see you’re actually thinking about the D3D1o migration.
But meanwhile… What about OpenGL 2.0?
JPeq - 14 07 06 - 20:39

many other engines i have seen put a much thinner wrapper on the underlying rendering architecture than irrlicht does. basic types like vectors and stuf are just renamed from the directx ones, they read their x models with the direct3d functions, etc. since you have done the somewhat odd thing of making a fully cross-platform engine that ALSO supports direct3d (not just opengl, like some other open source engines do) you will mostly just have to write the lowest level parts, a new directx10 driver, and…well that’s about it!
buhatkj - 14 07 06 - 22:01

Great! I’m waiting for the D3D10 driver…

Are you also implementing in irrlicht ShaderModel 4 ????
I know fixed pipeline is not implemented in D3D10 , only programmable rendering pipeline…. great!

I’m waiting the moment when irrlicht can run: – Unix Systems – MacOS X – Windows 95/.../XP – Windows Vista

Global Engine
Blizzard - 15 07 06 - 00:46

Aehm Blizzard, the important linux distries, macosx and windows 95-vista are already working. Making it useable in any unix system would be pretty sensless.

and niko. We already knew this one :P
Gauntlet - 15 07 06 - 00:53

Totally wicked, I can’t wait for D3D10… is there going to be support fot most of the D3D10 functions, I’m mostly wondering about High Dynamic Range Lighting. If Irrlicht had HDR it would be incredible!

Looking forward to Irrlicht with D3D10 support!
Andrew - 15 07 06 - 04:46

Can’t agree more. People should stop foaming at the mouth at Dx10 support and stop and look to see just how much of SM3.0 they’re actually using. Most of the time – none. Get up to speed with Dx9 before claiming you need Dx10 support guys.

Fact is that even now, SM3 hardware is not that mainstream. You can just about get away with requiring SM2 now, but not SM3. SM4? Come on. In a couple of years maybe – until then it’s limited to nice-but-pointless-in-practice tech demos and a handful of AAA games the hardcore people will upgrade for.

One point though – there are a few things in each shader model which require a bit of engineering to support, and aren’t just a case of migrating by changing a driver name. Things like SM3 instancing (requires a slightly different approach to geometry design, and needs to take into account SM2 fallbacks which are slightly more limited, and the fact that SM1 hardware can’t do it at all), and in Dx10 the render-to-buffer modes where you can effectively perform multiple iteration effects without ever leaving the GPU. These kinds of things require more awareness from the user, and that’s why we’re only introducing support for SM3-specific features now (that’s beyond basic support for just vs_3_0 et al, which has been a given for a couple of years) – because ‘support’ means more than just enabling vs_3_0. But I agree the time to do it (over other features) is when it’s useful to many people – Dx10 is useful to no-one but marketing men at the moment.
Steve () (link) - 15 07 06 - 12:51

The problem i have with dx10 is that it is supposedly heavly tied to vista… which will be a pain. I dont want anything to do with vista. I am one of those people who will go from WinXP to MacOS 10.5 when the time comes. I’m not saying i would like dx10 on OSX… but I would rather microsoft not tie there new 3d api to their overpriced clunky new OS and let there old OSes site in the rain.
SkaCahToa - 15 07 06 - 21:13

well its tied to vista because some of the features require the new driver model, which can’t be backported to the older kernel apparenlty
The Anaconda - 16 07 06 - 03:25

That’s nonsense. The real reason it’s tied to Vista is that Microsoft desperately need reasons to get people to upgrade, with most of Vista’s headline features either cut, or having made it into XP as patches for security reasons. The requirement for Vista is entirely artificial, don’t believe the marketing.
Steve () (link) - 16 07 06 - 18:22

...marketing? have you read any of the technical documentation for WDDM? the entire video driver model has to be redesinged in order to overcome the shortcomings of the current driver and the systems too-heavy reliance on GDI, which is needed for new DirectX10 features. backporting it would require major changes to previous operating systems, so they can take the new driver model.
The Anaconda - 16 07 06 - 18:33

What happened to the age when ggraphics was nothing and gameplay was everything, i say this because i notice some people just won’t stop the ‘i want this feature in irrlicht, it would be so great!’, don’t get me bad but what we have is more than enough, remember Syphon filter 3?, did it have pixel shaders? HDRC? was it a great game?
lalala - 17 07 06 - 01:55

@lalala = Wolfenstien 3D came out… but it is true that gameplay / storylines have went downhill extremly far in the last few years.

@The Araconda = I guess the dx10 might need vista for some of the features to work perfectly… or at least full speed, but there is no reason they can have a less speedy version of it for xp / 2000.
SkaCahToa - 17 07 06 - 23:00

@The Anaconda: yes, I have, and the changes you refer to have nothing to do with the features most people will want D3D10 for. The driver model changes required are to enable MS to run regular windowed applications and their widgets / menus / toolbars etc through the GPU, so that applications using GDI can be integrated into the Aero interface – they have nothing to do with all the new features of D3D10 as a library for dedicated apps (like games) that the majority of people get excited about (like geometry emission in shaders, unified shader model, iterative render buffer support). I’m telling you now – all those D3D10 features that people will use in games and similar applications can be achieved in existing operating system. The driver model change has everything to do with Aero and nothing to do with dedicated 3D apps. The fact that MS decided to merge these 2 streams of work together does not mean it was necessary – just convenient for them. Unfortunately a great many people swallow the line that the Vista dependency was required for all these new features in games, and that IS complete nonsense. I fully expect to see this dedicate app functionality exposed as GL extensions for people on other OSs sometime in the next 12 months (and in fact, some of it is already exposed, e.g. unified shader models in GLSL).
Steve () (link) - 18 07 06 - 11:48


Name:  
Remember personal info?
yes
no
Email (optional):
URL (optional):
Enter "layered" (antispam):
Comment:Emoticons / Textile

  ( Register your username / Log in )

Notify: Yes, send me email when someone replies.  

Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.
Note: If you type in your email adress above, it will be visible to other visitors, although it will be hidden for bots using javaScript.