Does a Direct3D port of Doom 3 exist?

Post Reply
DevilMaster
Two Eyed Hopeful
Posts: 97
Joined: Sat Dec 22, 2007 3:38 am

Does a Direct3D port of Doom 3 exist?

Post by DevilMaster »

Seeing the new Doom trailer makes me want to play Doom 3 again, but I want to play it in stereoscopy on my current computer, which I cannot do with the official version because it renders the scenes with OpenGL. Doom 3 has been open source for a long time, so did anyone make a port that uses Direct3D 9.0c instead of OpenGL for rendering?

P. S.
I know the console port of Doom 3 BFG edition supports stereoscopy, but it lacks the option to play custom levels.
geekmaster
Petrif-Eyed
Posts: 2708
Joined: Sat Sep 01, 2012 10:47 pm

Re: Does a Direct3D port of Doom 3 exist?

Post by geekmaster »

DevilMaster wrote:Seeing the new Doom trailer makes me want to play Doom 3 again, but I want to play it in stereoscopy on my current computer, which I cannot do with the official version because it renders the scenes with OpenGL. Doom 3 has been open source for a long time, so did anyone make a port that uses Direct3D 9.0c instead of OpenGL for rendering?

P. S.
I know the console port of Doom 3 BFG edition supports stereoscopy, but it lacks the option to play custom levels.
The Vavoom source port of Doom 3 is currently only OpenGL, but they do say that a Direct3D version "will come later".
http://vavoom-engine.com/forums/viewtopic.php?t=3311

I have not found any other ports that plan to include Direct3D support, but I did not invest much effort into that infoquest. If somebpdy finds one, please let me know. Thanks.
DevilMaster
Two Eyed Hopeful
Posts: 97
Joined: Sat Dec 22, 2007 3:38 am

Re: Does a Direct3D port of Doom 3 exist?

Post by DevilMaster »

geekmaster wrote:The Vavoom source port of Doom 3 is currently only OpenGL, but they do say that a Direct3D version "will come later".
http://vavoom-engine.com/forums/viewtopic.php?t=3311

I have not found any other ports that plan to include Direct3D support, but I did not invest much effort into that infoquest. If somebpdy finds one, please let me know. Thanks.
Sorry, but Vavoom is not a port of Doom 3, it's a port of Doom 1. The thread you linked only mentions Doom 3-style shadows, and it's 5 years old.
geekmaster
Petrif-Eyed
Posts: 2708
Joined: Sat Sep 01, 2012 10:47 pm

Re: Does a Direct3D port of Doom 3 exist?

Post by geekmaster »

DevilMaster wrote:
geekmaster wrote:The Vavoom source port of Doom 3 is currently only OpenGL, but they do say that a Direct3D version "will come later".
http://vavoom-engine.com/forums/viewtopic.php?t=3311

I have not found any other ports that plan to include Direct3D support, but I did not invest much effort into that infoquest. If somebpdy finds one, please let me know. Thanks.
Sorry, but Vavoom is not a port of Doom 3, it's a port of Doom 1. The thread you linked only mentions Doom 3-style shadows, and it's 5 years old.
Oops. Missed that. Yeah, there are already other Direct3D ports of Doom 1. Not seeing any Doom 3 Direct3D ports so far...

Though the source was opened FOUR years ago, and a challenge was made:
http://ngemu.com/threads/doom-3-source-is-out.145815/
Matthew
One Eyed Hopeful
Posts: 41
Joined: Tue Jun 25, 2013 11:45 pm

Re: Does a Direct3D port of Doom 3 exist?

Post by Matthew »

You know why a Direct3D port of Doom 3 does not exist? Because OpenGL is better. :)

Why not just modify the engine to have native stereoscopic rendering support with OpenGL quad buffered output?
DevilMaster
Two Eyed Hopeful
Posts: 97
Joined: Sat Dec 22, 2007 3:38 am

Re: Does a Direct3D port of Doom 3 exist?

Post by DevilMaster »

Matthew wrote:You know why a Direct3D port of Doom 3 does not exist? Because OpenGL is better. :)
If OpenGL is better, why isn't there such a thing as a stereoscopic driver for modern systems with OpenGL support?
In case you retort that stereoscopic drivers support quad buffer-based OpenGL stereoscopy, I'll rephrase the question as: "Direct3D-based stereoscopic drivers don't care about quad-buffered output. Why isn't there a driver that does the same thing with OpenGL?"
Matthew wrote:Why not just modify the engine to have native stereoscopic rendering support with OpenGL quad buffered output?
Because in that case, it would only work with video cards that support quad-buffered output in the first place.
A possibly quicker approach would be to modify the rendering so that the two views are generated by the engine itself. That would not require a video card with quad buffer.
Matthew
One Eyed Hopeful
Posts: 41
Joined: Tue Jun 25, 2013 11:45 pm

Re: Does a Direct3D port of Doom 3 exist?

Post by Matthew »

DevilMaster wrote:
Matthew wrote:You know why a Direct3D port of Doom 3 does not exist? Because OpenGL is better. :)
If OpenGL is better, why isn't there such a thing as a stereoscopic driver for modern systems with OpenGL support?
Because since DirectX is more widely used, it is considered a higher priority.

It takes a lot of work to write a stereo driver. And separate versions have to be made for each version of DirectX. There aren't even any modern stereo drivers for DirectX 7. This is too bad; many major classic games use DirectX 7.


DevilMaster wrote:In case you retort that stereoscopic drivers support quad buffer-based OpenGL stereoscopy, I'll rephrase the question as: "Direct3D-based stereoscopic drivers don't care about quad-buffered output. Why isn't there a driver that does the same thing with OpenGL?"
Quad buffering is used by Direct3D as well as OpenGL, and is the method of displaying the stereoscopic image. It simply means having separate buffers for the left and right eye images (this means four buffers total, since there are front and back buffers).

Quad buffering is always used with modern shutter glasses systems. Translating a game into stereoscopic 3D that wasn't programmed that way is a separate thing. Once it's translated into 3D, it's displayed using quad buffering.

As for why there isn't a driver that translates OpenGL games into stereoscopic 3D... Well actually, there ARE such drivers. I've used one myself (the eDimensional driver). It's just that the producers of modern stereo drivers have chosen not to support OpenGL anymore.

To get a sense of why they chose that, read the article I linked to in my previous post. :)

Writing an OpenGL stereo wrapper actually is very easy (a lot easier than with Direct3D). I could do it myself, but I have other priorities right now.


DevilMaster wrote:
Matthew wrote:Why not just modify the engine to have native stereoscopic rendering support with OpenGL quad buffered output?
Because in that case, it would only work with video cards that support quad-buffered output in the first place.
Are you aware that this means all modern cards by nVidia and ATI?

A little over two years ago, nVidia and ATI unlocked support for OpenGL quad buffering on their consumer cards.

DirectX only supports stereoscopic quad buffering in DirectX 11 and later.

But OpenGL has always supported it. Ever since OpenGL 1.0, which was released in 1992.

This means that adding native stereoscopic rendering support to legacy games is much, much easier with OpenGL than with DirectX.

With OpenGL, since it's always been part of the API, you can just use the now-enabled functionality.

With DirectX, since versions before DirectX 11 don't support it, you have to either modify the engine to use DirectX 11 or later, or use vendor-specific extensions.



These stereo drivers are not a substitute for native stereoscopic rendering support. Except with very old games, they tend to have a lot of graphics glitches.

I think one of the problems with nVidia 3D Vision is that nVidia has been too focused on the "automatic mode" support (translating games into 3D that weren't programmed to be that way). They should be focused on encouraging developers to include native stereoscopic rendering support in games.

"Automatic mode" support is mainly useful with legacy games. I think nVidia should have focused on maintaining support with legacy games, instead of dropping that (3D Vision only supports DirectX 8 and later) and focusing on modern games.

Modern games just don't work well in 3D unless they're programmed to render that way. The reason it worked with legacy games is that back then, GPUs used just a fixed function pipeline. Modern games use advanced effects and programmable shaders, which can't be properly translated into 3D at the API level.
DevilMaster
Two Eyed Hopeful
Posts: 97
Joined: Sat Dec 22, 2007 3:38 am

Re: Does a Direct3D port of Doom 3 exist?

Post by DevilMaster »

1) Okay, so I admit that I didn't follow the evolution of quad buffer support. I was so used to it not being available in consumer cards, I never searched anything related to it. I pessimistically assumed it would never be.

2) You mention shutterglasses systems, but can quad buffer also be used with HMDs that don't work like shutterglasses (e.g. in side-by-side mode)?

3) There's still one thing I don't understand. You say that the lack of a stereo driver with OpenGL support is only due to DirectX being more widely used, but such a driver would be the only way to play in stereoscopy on Linux. Why wasn't this ever attempted in the Linux community? Whenever I talk about this with a Linux advocate, the dialog goes like this (LA = Linux advocate, me = me):

LA: Linux will supplant Windows in every possible field! Windows is going to be as dead as the dodo!
Me: If Linux had stereoscopic drivers, I would have ditched Windows a long time ago! But Windows has had them since 2002, Linux never did! Why?
LA: Because Linux is not meant for gaming!
Me: (audible silence)
Matthew
One Eyed Hopeful
Posts: 41
Joined: Tue Jun 25, 2013 11:45 pm

Re: Does a Direct3D port of Doom 3 exist?

Post by Matthew »

I've been using OpenGL quad buffering with nVidia 3D Vision 2 since I got it last August. It is limited (it only works with certain window parameters, it only works in fullscreen exclusive mode, it enters that mode automatically when the window is activated, and if that mode is exited, it stops working and won't work again unless the window is recreated). I've only gotten it to work with code I've written. But if it's set up in the right way, it works.

I think that AMD HD3D's support is better (I've read that with AMD HD3D, in Windows 8+, OpenGL quad buffering works in windowed mode). But both systems work if it's programmed the right way.



Remember that modified version of OpenGlide with native stereoscopic rendering support I've made that I told you about in another thread? Since it uses OpenGL 3.3, and supports OpenGL quad buffering, both of which all modern cards from nVidia and AMD support, it will work with any nVidia 3D Vision or AMD HD3D system, if your drivers are up to date.

Since OpenGlide is very incomplete, it only works with some games. I have done a lot to improve it though, and it works with some games that the official version of OpenGlide is unplayable with (for example, King's Quest: Mask of Eternity and Recoil). And with most games it works with, the 3D works perfectly, without any graphical anomalies at all. I've even made it display LFB writes as 3D surfaces, and allow you to set the depth of them.

It works MUCH better than using a stereo driver on top of a Glide wrapper.



I've also made a modified version of Wolf4SDL which natively supports stereoscopic rendering with OpenGL quad buffered output. (Wolf4SDL is a fan SDL port of Wolfenstein 3D.) It still uses Wolf3D's software renderer; OpenGL is only used to display the screen image, and do post-processing.

It also has some other improvements, including support for a "free look" control scheme (ADWS + mouse), and an advanced AI system I've developed. (This is better than any other AI I've ever seen in a FPS game.)



I was heavily critical of nVidia for locking out OpenGL quad buffering support. I would not have purchased nVidia 3D Vision if they hadn't unlocked it.


DevilMaster wrote:You mention shutterglasses systems, but can quad buffer also be used with HMDs that don't work like shutterglasses (e.g. in side-by-side mode)?
Quad buffer is simply an output method. It can be used with any method of stereoscopic viewing, if the system supports it. It currently is mainly only supported by shutter glasses systems, though. I don't think that any HMDs currently support the OpenGL or DirectX quad buffer APIs.

It is possible to emulate quad buffering on systems that don't support it, using a wrapper library.


DevilMaster wrote:You say that the lack of a stereo driver with OpenGL support is only due to DirectX being more widely used, but such a driver would be the only way to play in stereoscopy on Linux. Why wasn't this ever attempted in the Linux community?
Although I've never used Linux, the impression I have is that there aren't many games available natively for Linux.

If you're running a Windows application on Linux, you have to use Windows emulation anyway. If you're running a DOS application, you have to use DOSBox (which is available natively for Linux, but emulates DOS).
Last edited by Matthew on Tue Jun 30, 2015 8:40 am, edited 1 time in total.
DevilMaster
Two Eyed Hopeful
Posts: 97
Joined: Sat Dec 22, 2007 3:38 am

Re: Does a Direct3D port of Doom 3 exist?

Post by DevilMaster »

Considering what you wrote...
Matthew wrote:It is limited (it only works with certain window parameters, it only works in fullscreen exclusive mode, it enters that mode automatically when the window is activated, and if that mode is exited, it stops working and won't work again unless the window is recreated). I've only gotten it to work with code I've written.
(cut)
It currently is mainly only supported by shutter glasses systems, though. I don't think that any HMDs currently support the OpenGL or DirectX quad buffer APIs.
...quad buffering-based stereoscopy is still of no attractive to me, especially because I've only used HMDs to play in stereoscopy since 2005 (first the Z800, then the HMZ-T1).
Matthew wrote:It is possible to emulate quad buffering on systems that don't support it, using a wrapper library.
Where can it be downloaded from?
Matthew wrote:Although I've never used Linux, the impression I have is that there aren't many games available natively for Linux.

If you're running a Windows application on Linux, you have to use Windows emulation anyway. If you're running a DOS application, you have to use DOSBox (which is available natively for Linux, but emulates DOS).
I have used Linux for work (to manage a network) and I have also experimented with Wine to see how it performed (it depends on the game: some run perfectly, some have glitches, some don't work at all. There's at least one case (Prey) where the Windows version runs better on Linux, with Wine, than it does on Windows itself).
With Wine, Windows games can be run on Linux without emulation (Wine translates library calls, it does not emulate any hardware). Linux has also native versions of id Tech-based games, as well as eDuke32.
Matthew
One Eyed Hopeful
Posts: 41
Joined: Tue Jun 25, 2013 11:45 pm

Re: Does a Direct3D port of Doom 3 exist?

Post by Matthew »

DevilMaster wrote:Considering what you wrote...
Matthew wrote:It is limited (it only works with certain window parameters, it only works in fullscreen exclusive mode, it enters that mode automatically when the window is activated, and if that mode is exited, it stops working and won't work again unless the window is recreated). I've only gotten it to work with code I've written.
(cut)
It currently is mainly only supported by shutter glasses systems, though. I don't think that any HMDs currently support the OpenGL or DirectX quad buffer APIs.
...quad buffering-based stereoscopy is still of no attractive to me, especially because I've only used HMDs to play in stereoscopy since 2005 (first the Z800, then the HMZ-T1).
It should be noted, however, that the limited support for OpenGL quad buffering is nVidia's fault. The API itself is great; it's the vendor's fault if they don't fully support it.

At least it works at all. It's adequate, if the game runs in fullscreen exclusive mode, which it should anyway.

It should also be noted that quad buffering is required for full resolution stereoscopic output. Shutter glasses systems are the only systems that currently allow for full resolution 3D.

If HMDs don't use quad buffered output, they have to have both images in one buffer, which reduces the resolution. They could double the resolution to compensate, but that is generally not done. HMDs have far lower resolution anyway.

Another advantage of quad buffering is that you don't have to deal with reversal of the left and right eye images. Since it is explicitly specified which buffer is the left and which is the right, the correct image will always be shown to each eye (assuming the driver is set up correctly, and the content itself isn't reversed).


DevilMaster wrote:
Matthew wrote:It is possible to emulate quad buffering on systems that don't support it, using a wrapper library.
Where can it be downloaded from?
Here is one such project:

https://github.com/magestik/glQuadBufferEmu

Note that it says that OpenGL quad buffering is only supported by professional graphics cards, but that it out of date.



Another thing I should mention: I've read that Doom 3 BFG Edition supports native stereoscopic rendering with OpenGL quad buffering. So it already supports it. :)
Post Reply

Return to “General Stereoscopic 3D Discussion”