Horde3D

Next-Generation Graphics Engine
It is currently 14.11.2024, 18:27

All times are UTC + 1 hour




Post new topic Reply to topic  [ 82 posts ]  Go to page 1, 2, 3, 4, 5, 6  Next
Author Message
 Post subject: Adding DirectX Support?
PostPosted: 22.05.2008, 18:54 
Offline

Joined: 05.03.2007, 19:38
Posts: 167
Location: Romania
Hi,

Will Horde3D have DirectX support?

_________________
Paul


Top
 Profile  
Reply with quote  
PostPosted: 22.05.2008, 23:42 
Offline

Joined: 08.11.2006, 03:10
Posts: 384
Location: Australia
Hmm... Is it required? Seems like a lot of work, and there won't be much benefit (besides easier porting to the XBox 360 :twisted: ).

I know there's a few engines that allow a runtime choice of GL or D3D, but I don't see the point in such an option. Don't they both do the same thing anyway?

It's definitely possible, as the Horde API is abstract enough to allow it. The only user-side issues is that the shaders would need to be re-written in Cg.


Top
 Profile  
Reply with quote  
PostPosted: 23.05.2008, 00:36 
Offline

Joined: 05.03.2007, 19:38
Posts: 167
Location: Romania
I am concerned regarding OpenGL's future. 3.0's specification is almost one year late. And even if it will be done by this year's siggraph it will just be only the specification that will still have to be implemented by hardware manufacturers. And that's the version that brings OO design to OpenGL. Not the version that's the equivalent of DX10. On windows this api is slowly killed.

This takes me to my next point. Which is lower performance than directx on the windows platforms. Especially Vista.

I've ran benchmarks on 2 computers. A low end machine,AMD Athlon 2400+, Nvidia 7300GT GPU, 1.78GB of RAM. Performance drop from xp was peeking at about -20% on the opengl applications and a few percents on for the dx ones.
A high end machine, Intel e8400 CPU, 2x Nvidia 8800GT OC SLI, 4GB of RAM. Performance drop close to -17% on the opengl apps, same dx performance decrease.

The benchmarks were Horde3D apps for opengl, and for dx, samples in the dx march sdk.

And if I like to admit it or not, Vista will be the new mainstream platform. Therefor if there is a business plan in mind regarding commercial game development this platform must be taken into consideration. And in a conflict where I fight for even 1% of performance improvement via perfkit and other tools, a performance drop of 17% is not acceptable.

I know that OpenGL has the crossplatform design over directx, but take into consideration the following business plan:

Company A develops a title for 2 platforms. Windows and linux. Support for each of them costs a 100K $/yr. The company gets its money back regarding the windows platform from the sales. We have to admit that windows being the most common os, it is also the main gaming os. But let's think about the linux sales and linux gamers in general. Let's not forget that people on linux are used to getting most things for free, and will have second thoughts about buying a 30$ game. And also their number is still quite small. The game for linux will not be able to sustain itself financially and will eventually be dropped.

The low number of other than windows gamers is one of the reasons that only a few games are being developed for multiple OSs, and still from those that are some are dropped from development from the same reasons. A good example is development of America's Army for Linux being stopped at version 2.5. This was a free game. And still the developer was forced to relinquish development in other to be able to further support the win version.

It boils down to what plans you have regarding game development. Having DirectX support offers both the reliability and performance needed for commercial dev that next to the OpenGL's multiple platform design.

_________________
Paul


Top
 Profile  
Reply with quote  
PostPosted: 23.05.2008, 01:47 
Offline

Joined: 22.11.2007, 17:05
Posts: 707
Location: Boston, MA
SpOOky wrote:
I am concerned regarding OpenGL's future. 3.0's specification is almost one year late. And even if it will be done by this year's siggraph it will just be only the specification that will still have to be implemented by hardware manufacturers. And that's the version that brings OO design to OpenGL. Not the version that's the equivalent of DX10.
As you note, OpenGL 3.0 has nothing to do with DX10 equivalence. In fact, almost all of the DX 10 features have been available as OpenGL extensions for some time now - almost as long as DX10 has been around.

Quote:
On windows this api is slowly killed.
I wont argue that Microsoft is not particularly GL friendly, but it isn't Microsoft that maintains GL on windows, it is the GPU manufacturers, and pretty much always has been. I doubt that any of ATI, NVidia or Intel are going to disrupt major customers like ID (ID Tech 5 is OpenGL based), and to a lesser extent Apple by dropping GL support.

Quote:
I've ran benchmarks on 2 computers. A low end machine,AMD Athlon 2400+, Nvidia 7300GT GPU, 1.78GB of RAM. Performance drop from xp was peeking at about -20% on the opengl applications and a few percents on for the dx ones.
A high end machine, Intel e8400 CPU, 2x Nvidia 8800GT OC SLI, 4GB of RAM. Performance drop close to -17% on the opengl apps, same dx performance decrease.

The benchmarks were Horde3D apps for opengl, and for dx, samples in the dx march sdk.
You can't benchmark different samples using different API's, and expect meaningful results - have you made sure that all of the samples are in fact GPU bound? I don't doubt that Vista performs worse on OpenGL, but recent drivers seem to be bringing it up to par.

Quote:
And if I like to admit it or not, Vista will be the new mainstream platform.
Glanced at this years Valve Hardware Survey? Note that only 15% of their users are on Vista, and only 10% also have a DX10 capable card. And lets not forget that with OpenGL, you can have all the DX10 features on Windows XP, where 85% of your gamers are.

Quote:
I know that OpenGL has the crossplatform design over directx, but take into consideration the following business plan:

Company A develops a title for 2 platforms. Windows and linux. Support for each of them costs a 100K $/yr. The company gets its money back regarding the windows platform from the sales. We have to admit that windows being the most common os, it is also the main gaming os. But let's think about the linux sales and linux gamers in general. Let's not forget that people on linux are used to getting most things for free, and will have second thoughts about buying a 30$ game. And also their number is still quite small. The game for linux will not be able to sustain itself financially and will eventually be dropped.
I can't comment on your support cost, but I will point out that both Blizzard and ID have both done very nicely for themselves over the years, developing for Mac and Windows simultaneously - it also seems likely that Valve will be adding linux support in the near future.

Quote:
A good example is development of America's Army for Linux being stopped at version 2.5. This was a free game. And still the developer was forced to relinquish development in other to be able to further support the win version.
Given that this was military funded, it is unlikely that cost was the primary issue. It would appear that the decision was made because Windows and XBox will reach a younger audience, more likely to join the military (you don't tend to see your average Mac user/linux hacker enlisting).

Quote:
Having DirectX support offers both the reliability and performance needed for commercial dev that next to the OpenGL's multiple platform design.
Lets not forget that the PS3 and the Wii both use variants of OpenGL, as do almost all 3D-capable smart phones.

While I agree that supporting both would be nice, it is a lot of work, and we would need full time maintainers for each of DX9 and DX10. With OpenGL, we can provide both DX9 and 10 level functionality in the same codebase, with little problem. There are many reasons why Horde is slim and than most of the alternatives, but OpenGL exclusivity ranks pretty high.

_________________
Tristam MacDonald - [swiftcoding]


Top
 Profile  
Reply with quote  
PostPosted: 23.05.2008, 06:18 
Offline
Tool Developer

Joined: 13.11.2007, 11:07
Posts: 1150
Location: Germany
Dispite the fact that OpenGL offers various advantages concerning the cross platform support, it shouldn't be too much work to add a DirectX renderer. Although I haven't inspected that myself yet, Nicolas told me some month ago, that his intention with the egRenderer(Base) class was that there should be a possibility to replace that class with a DirectX version. Of course you have to replace the shaders too as DarkAngle already mentioned.

We don't intend to realize that in the near future but if someone would do that, it would be interesting if a DirectX version would have an increased (or maybe decreased) performance, since the underlaying engine architecture should be quite comparable.


Top
 Profile  
Reply with quote  
PostPosted: 23.05.2008, 11:25 
Offline

Joined: 05.03.2007, 19:38
Posts: 167
Location: Romania
swiftcoder wrote:
As you note, OpenGL 3.0 has nothing to do with DX10 equivalence. In fact, almost all of the DX 10 features have been available as OpenGL extensions for some time now - almost as long as DX10 has been around.P
I wasn't supporting dx for it's features in version 10, but for being a strong well built api like ogl3.0 promises to be. Speaking about the dx10 features being available via the ogl extension system, i must admit that i never was a fan of it. Because some needed extensions are not supported by both the main hardware vendors. In this care you are forced to pick one of this scenarios.
1. Use the extension and it will only work for clients using hardware from a hw manufacturer that supports it.
2. Don't use that feature at all, so you won't have hw problems, but you will not be able to use those extension driven features as well. So you are back to square one.

swiftcoder wrote:
Glanced at this years Valve Hardware Survey? Note that only 15% of their users
15% is still a large number. 15% more or less sales for a platform that doesn't stand out for additional support can make the difference between profit and lose. Ignoring that part of the market won't be a wise decision with the vista users ever increasing.

swiftcoder wrote:
I can't comment on your support cost, but I will point out that both Blizzard and ID have both done very nicely for themselves over the years, developing for Mac and Windows simultaneously - it also seems likely that Valve will be adding linux support in the near future.
I do agree that it has been good for these particular companies, but we must keep in mind what titles have been ported to linux. Games like WOW, which are in the most played list, big games that made history and even without marketing will still have good sales. This is not the case for a small no-name balcanic publisher (for example)

swiftcoder wrote:
Lets not forget that the PS3 and the Wii both use variants of OpenGL, as do almost all 3D-capable smart phones.
Yes this is the case. But those variants are quite different from the opengl horde is made of. Sure it will be nice to see Horde getting ported to a console like PS3, but even more doors will be opened by porting it to both the ps3 and the 360.

As Volker pointed out adding a dx renderer shouldn't be to hard and if it confers the reliability that commercial game development needs it will be a smart move.

_________________
Paul


Top
 Profile  
Reply with quote  
PostPosted: 23.05.2008, 13:33 
Offline

Joined: 22.11.2007, 17:05
Posts: 707
Location: Boston, MA
SpOOky wrote:
Speaking about the dx10 features being available via the ogl extension system, i must admit that i never was a fan of it. Because some needed extensions are not supported by both the main hardware vendors. In this care you are forced to pick one of this scenarios.
1. Use the extension and it will only work for clients using hardware from a hw manufacturer that supports it.
2. Don't use that feature at all, so you won't have hw problems, but you will not be able to use those extension driven features as well. So you are back to square one.
I think that is more a problem of programmers not thinking out their fallbacks well enough - it is certainly more desirable to write a few fallbacks on missing extensions than to write an entirely separate renderer for DX9 and DX10.

Quote:
Yes this is the case. But those variants are quite different from the opengl horde is made of. Sure it will be nice to see Horde getting ported to a console like PS3, but even more doors will be opened by porting it to both the ps3 and the 360.
Porting to the 360 unfortunately requires rewriting in C#, as the C++ compiler is only available to large studios who have obtained a full DevKit - I don't see Horde beating out their in-house tools in the near future, so Vista is about all we can hope for.

Quote:
As Volker pointed out adding a dx renderer shouldn't be to hard and if it confers the reliability that commercial game development needs it will be a smart move.
I wholeheartedly agree that we should have a DX renderer at some point in the future, but I would argue that 'reliability' should not be the motivating factor - rather customer coverage.

I also wonder if it wouldn't do better as a fork of the main project, because synchronising the API at each release will be a pain without dedicated maintainers for each API, and DX9 has a lot of limitations not present in DX10 or OpenGL.

_________________
Tristam MacDonald - [swiftcoding]


Top
 Profile  
Reply with quote  
PostPosted: 23.05.2008, 13:49 
Offline
Tool Developer

Joined: 13.11.2007, 11:07
Posts: 1150
Location: Germany
swiftcoder wrote:
I also wonder if it wouldn't do better as a fork of the main project, because synchronising the API at each release will be a pain without dedicated maintainers for each API, and DX9 has a lot of limitations not present in DX10 or OpenGL.

Well, if it only differs in the shaders and the Renderer Class it shouldn't break the API.


Top
 Profile  
Reply with quote  
PostPosted: 23.05.2008, 14:35 
Offline

Joined: 22.11.2007, 17:05
Posts: 707
Location: Boston, MA
Volker wrote:
Well, if it only differs in the shaders and the Renderer Class it shouldn't break the API.

True, true, but it does mean that every time a feature gets added, it has to be added to 3 APIs, rather than one, so progress will be a bit slower. It makes sense post 1.0 though, when there is an API freeze.

_________________
Tristam MacDonald - [swiftcoding]


Top
 Profile  
Reply with quote  
PostPosted: 23.05.2008, 14:50 
Offline

Joined: 14.04.2008, 15:06
Posts: 183
Location: Germany
The DirectX coordinate system is very different from the OpenGL one: Different transformation matrices, pixel coordinates... That would break the API if it's not internally converted.


Top
 Profile  
Reply with quote  
PostPosted: 23.05.2008, 20:47 
Offline

Joined: 22.11.2007, 17:05
Posts: 707
Location: Boston, MA
Codepoet wrote:
The DirectX coordinate system is very different from the OpenGL one: Different transformation matrices, pixel coordinates... That would break the API if it's not internally converted.
That is mostly just a matter of transposing matrices before passing them to DirectX. Unfortunately DX is not as flexible as GL in these things. Pixel coordinate difference can probably be ignored - providing a DX renderer doe not mean guaranteeing that the output is identical (as Ogre often tries to do).

I wouldn't suggest providing runtime switching, as it complicates things a lot more - an initialisation or even compile time switch would make things very simple.

_________________
Tristam MacDonald - [swiftcoding]


Top
 Profile  
Reply with quote  
PostPosted: 27.05.2008, 11:55 
Offline

Joined: 25.01.2008, 08:45
Posts: 11
Location: Germany
I have to say I would be a fan of this endeavor.
OpenGL is plain pain in the butt when it comes to Vista and my Radeon hd2900xt. I have bugged the AMD support team multiple times but nothing happened. So it happens that I still can't run any Horde3d based app without having rendering errors and artifacts.
I really like the small footprint of Horde3d compared to say Ogre3d.
On top of that, my job as lead programmer doesnt leave me a lot of freetime to help with this matter (not in the near future) :(


Top
 Profile  
Reply with quote  
PostPosted: 30.05.2008, 07:32 
Offline
Engine Developer

Joined: 10.09.2006, 15:52
Posts: 1217
Volker wrote:
Although I haven't inspected that myself yet, Nicolas told me some month ago, that his intention with the egRenderer(Base) class was that there should be a possibility to replace that class with a DirectX version. Of course you have to replace the shaders too as DarkAngle already mentioned.

That's true, the engine was designed with some thoughts in the back of my head that the graphics API could need to be changed one day (especially to GL 3.0). So all API dependent code is encapsulated in the Renderer class. There are a few other smaller issues like handles to GL objects stored in resources but this is all solvable. Actually I think it shouldn't be too hard to make a DirectX port. But actually I don't see a strong reason for that at the moment, so better don't wait for a new renderer from us in forseeable time ;). Though if someone else wants to give it a try it could be an interesting project!


Top
 Profile  
Reply with quote  
PostPosted: 01.06.2008, 19:13 
Offline

Joined: 02.01.2008, 18:34
Posts: 14
I’ve kept up to date with the development of Horde since version .11 and used it on and off for pet projects, whilst evaluating its suitability for more serious uses.
I believe there are some very strong reasons that Horde would benefit from a DirectX port, but it depends on the goals the Horde team have for the engine. I see Horde as a potential alternative to other open source engines like Orge. I prefer its API, simplicity, Collada support and focus on next-gen technology, however lack of DirectX support I feel will greatly limit its wider adoption (it is certainly a stumbling block for me).

It would be interesting for myself and presumably the community in general to know the goals for Horde, and whether more widescale adoption is among them. Below are some of the reasons that I feel limit Horde’s out the box usefulness.


Graphics Card compatibility:
In general, it is my experience that the widest range of compatibility for graphics cards is given by DirectX on Windows. When adopting an engine for any type of project, from commercial game to University course work, graphics card support is probably the most important differentiating factor. Whilst I’m sure ATI will improve OpenGL support in future, I believe DirectX will always be the priority for new graphics card testing and driver support, for both ATI and Nvidia. Until Horde has a wider range of compatibility I don’t imagine it being used in earnest. No matter what the scale of a project there’s nothing more detrimental than users with bugs, glitches and framerate issues that are out of your control. The current lack of ATI support, for instance is very problematic, ruling out 30% to 40% of users.

Framerate:
In my experience, on modern GPUs, the focus from both Nvidia and ATI has understandably been on DirectX. In general I have seen many cases where OpenGL will run inexplicably slow or stall on some graphics cards, I have seen this much less using DirectX. Whilst there is no concrete proof or figures, I believe that this is widely agreed to be the case. As a quick example, I currently have some serious framerate issues on my 8600 GT using Horde, that do not exist on a 6600 GT on the same machine, from what I have read it is related to poor support for FBO in opengl drivers under Vista (I will post more when I have narrowed this issue down). This type of problem almost nullifies the usefulness of an engine.

Shading Language:
GLSL doesn’t tend to be used widely outside the open source community on PC, just an opinion, but a quick search backs it up. Most tutorials, resources and projects tend to focus on HLSL. Whilst lexically similar there are far better tools and support for HLSL from Nvidia and other 3rd parties.


Future Proof:
When adopting an engine, many projects begin on PC, with the intention of moving to other platforms. A piece of middleware that is problematic to port is often worse than no middleware. From this point of view API robustness is very important. Moving to DirectX would represent a fair test of the API, not just as successfully wrapping OpenGL, but as a working abstraction of a range of any future graphics layers.

Also, whilst Horde can’t currently be ported easily to work on 360, for developers of small games, DirectX support ensures that this is a much less daunting prospect if their project needs to move to XBLA or 360 in future. In contrast to what was posted earlier, most XBLA games do not use XNA or C# (I don’t know of any so far, that do) and moving from DirectX and HLSL to the XDK is a relatively straightforward task.



I recognise that the small size and simplicity of Horde is one of its most attractive features, however I don’t believe that a port would necessarily cause too much bloat. From what I have seen the abstraction could be handled relatively cleanly. I also don't feel DirectX 10 is a priority, or that runtime switching is needed.

Unfortunately I am not in a position to be able to help port Horde to DirectX, in general I use middleware engines, exactly because I don’t want to have to tackle such problems, and want to future proof that I will never have to. However if there were a potential port, I would gladly help with it. I would certainly be happy to maintain the port were it in place.

Apologies for the long post, but I think this is an interesting topic and helps us end users to get a feel for where Horde itself is directed as an engine.


Top
 Profile  
Reply with quote  
PostPosted: 01.06.2008, 22:10 
Offline

Joined: 18.05.2008, 17:47
Posts: 96
you can use opengl to make commercial games. see "id"
moreover I do not think playstation games are using directx.
I don't say "directx support won't be good".


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 82 posts ]  Go to page 1, 2, 3, 4, 5, 6  Next

All times are UTC + 1 hour


Who is online

Users browsing this forum: No registered users and 16 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group