Jump to content
The Dark Mod Forums

The Darkmod on Amd Eyefinity & nVidia Surround:


Bikerdude

Recommended Posts

That should be definitely added to our FAQ on the wiki!

 

 

 

I have some idea how to fix the stretched HUD, but yeah, multiple cameras would be bette. However, this also mean (very probably) multiple passes through the scene, so it might get slower, plus it is probably not easy to pull off with the closed source.

 

Regarding the rendering, I think most people have the horsepower to push three cameras, but yeah, again you might hit the wall of closed source. SoftTH usually just needs a few dlls thrown into the folder with the games .exe, and it will then show the resolutions in game. If you have TF2, give it a quick shot to see how it works. TF2 is not actually a great example, as you actually have to put it in two folders because of how steam has the HL2 engine, but you'll get the idea. See http://multimonitor....ng-with-softth/

 

Also, softTH might work out of the box with Doom 3 (see http://www.kegetys.n...hp?topic=130.0,) so most of your work may be taken care of (if not there are all kinds of instructions and community support). If you had a second HUD option which was super 'squished', then when running softTH, it would stretch out and fit on just the center monitor--you could just make selectable HUDs in the option menu--maybe a horizontal HUD scaling number that the user can plug in? They could interpolate the best number to fit whatever their resolution is so that you don't have to supply any specific resolution at all.

Edited by Taffer
Link to comment
Share on other sites

  • Replies 67
  • Created
  • Last Reply

Top Posters In This Topic

Regarding the rendering, I think most people have the horsepower to push three cameras, but yeah, again you might hit the wall of closed source. SoftTH usually just needs a few dlls thrown into the folder with the games .exe, and it will then show the resolutions in game. If you have TF2, give it a quick shot to see how it works. TF2 is not actually a great example, as you actually have to put it in two folders because of how steam has the HL2 engine, but you'll get the idea. See http://multimonitor....ng-with-softth/

 

Also, softTH might work out of the box with Doom 3 (see http://www.kegetys.n...hp?topic=130.0,) so most of your work may be taken care of (if not there are all kinds of instructions and community support). If you had a second HUD option which was super 'squished', then when running softTH, it would stretch out and fit on just the center monitor--you could just make selectable HUDs in the option menu--maybe a horizontal HUD scaling number that the user can plug in? They could interpolate the best number to fit whatever their resolution is so that you don't have to supply any specific resolution at all.

 

A: I don't have Windows, nor multiple monitors :)

B: Wether SoftTH works with D3 is irrelevant, because it would need to work with TDM. And we have our own "show and use resolution" code. (I wonder how this program "works" with D3, isn't in D3 the list of resolutions not hardcoded? Maybe the just hack the executable by overlaying DLL routines? That would be in my book a very ugly sort of "works"...)

C: And last but not last: Support for multiple-monitors/arbitrary resolutions is already in TDM (you can set them in the config file as you wish), so there is no need for SoftTH anyway. We only lacked an abitrary aspect ratio. In case you missed the post, this is now implemented and will be in TDM v1.06. :)

 

So that should all work except two things:

 

* multiple cameras

* stretched GUI

 

The first one is a lot of work, I don't have time nor experience with this, and there other things I should finish first. But if somebody has the time and experience, you are welcome!

 

As for the stretched GUI, there is only one call SetSize() for the entire UI, and so far I could not get it to work at all. (Even if it worked, you could not offset the GUI to one side, f.i.).

 

That only leaves us with "manually" stretching all GUI elements, which is kinda difficult, because the sizes of the GUI elements are hard-coded into our GUI files. I fear there is no quick solution, it would resolve into refactoring almost all of our GUIs and driving their size from the code - and it is unclear whether it would really work, too (fonts might not get stretched f.i.). I'll experiment with it a few more hours to see what we can get working.

"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Link to comment
Share on other sites

Good news, it is definitely possible to stretch the GUI elements. Bad news is, so far I could not get this to work for the outer "desktop" window def, only for single GUI elements. This means we would need to rewrite all our GUI files to include the scale/shift factors. Maybe this can be automated, tho.

 

Anyway, here is the proof of concept with the lightgem, it changes the size (but stays at the center) when you change r_guiWidth:

 

r_guiWidth 0.5:

 

 

 

r_guiWidth 0.2:

 

 

 

r_guiWidth 1.2:

 

 

 

The image changes in real-time as you change the CVAR in the console. (The aspect ratio of the images (see candle!) is off, because I used r_forRatio 3.2 to demonstrate the effect that this is independent of the GUI size).

 

Now I only need two more CVARs (to shift the GUI), and change all GUIs (or find a way to only change the outer rectangle and hopefully all buttons inside it will be scaled/shifted, too, that would save a lot of work).

"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Link to comment
Share on other sites

* multiple cameras

* stretched GUI

 

As for the stretched GUI, there is only one call SetSize() for the entire UI, and so far I could not get it to work at all. (Even if it worked, you could not offset the GUI to one side, f.i.).

 

That only leaves us with "manually" stretching all GUI elements, which is kinda difficult, because the sizes of the GUI elements are hard-coded into our GUI files. I fear there is no quick solution, it would resolve into refactoring almost all of our GUIs and driving their size from the code - and it is unclear whether it would really work, too (fonts might not get stretched f.i.). I'll experiment with it a few more hours to see what we can get working.

 

 

Congrats on the proof of concept, very impressive!

 

Disclaimer: Strong possibility I have no idea what I'm talking about; I'm just hoping some of this helps point you towards information which helps you.

 

I saw that there is selectable resolutions--but the reason that I brought up softTH is based on monitors. If I were to just select a random resolution, my video card would just try to display that resolution on my main monitor (which would just go out-of-range). There has to be another layer which does what SoftTH does--fool the video card (or game engine?) into thinking it is attached to (for example) a 5760x1080 monitor and knowing where the monitors which make up that resolution are. That's what eyefinity does as well--make a fake huge monitor. I don't think that functionality is present in D3/TDM. I haven't had a chance to try it yet, though. I'll be able to test on thursday.

 

Of course, there is no real reason to support any of this--just the fact you guys are doing this at all is amazing.

 

Also, I think you can assume the HUD can stay centered-there is almost no reason to have it off to one side--dual monitor FPS gaming is even more rare than triple monitor because you have these huge bezels right where the cross hair is.

 

I saw you said " Support for multiple-monitors/arbitrary resolutions is already in TDM" so maybe I'm not being useful at all. Just throwing some stuff out there since I saw you were working on it.

Edited by Taffer
Link to comment
Share on other sites

Congrats on the proof of concept, very impressive!

 

Let's wait with the praise until it works for the entire GUI, shall we :)

 

Disclaimer: Strong possibility I have no idea what I'm talking about; I'm just hoping some of this helps point you towards information which helps you.

 

I saw that there is selectable resolutions--but the reason that I brought up softTH is based on monitors. If I were to just select a random resolution, my video card would just try to display that resolution on my main monitor (which would just go out-of-range). There has to be another layer which does what SoftTH does--fool the video card (or game engine?) into thinking it is attached to (for example) a 5760x1080 monitor and knowing where the monitors which make up that resolution are. That's what eyefinity does as well--make a fake huge monitor. I don't think that functionality is present in D3/TDM. I haven't had a chance to try it yet, though. I'll be able to test on thursday.

 

Of course, there is no real reason to support any of this--just the fact you guys are doing this at all is amazing.

 

Also, I think you can assume the HUD can stay centered-there is almost no reason to have it off to one side--dual monitor FPS gaming is even more rare than triple monitor because you have these huge bezels right where the cross hair is.

 

I saw you said " Support for multiple-monitors/arbitrary resolutions is already in TDM" so maybe I'm not being useful at all. Just throwing some stuff out there since I saw you were working on it.

 

You are right, I was a bit fast about the multi-monitor thingy. I am using linux, with Nvidia, and there this is no problem at all, you can assign arbitrary resolutions to arbitrary monitors and have the displays mirrored, or aligned or whatever. And the assumption was the application just sees a big screen, and the driver is responsible to feed that to various monitors.

 

But that might not be true for ATI on Linux, Mac, or Windows.

 

OTOH, Bikerdude did run TDM on multiple monitors, so we know it works with ATI/AMD on Windows and uses the same assumption (app sees huge screen, driver does the rest). So I am unsure why SoftHT would be nec.? (Maybe it is only for some other users?)

"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Link to comment
Share on other sites

OTOH, Bikerdude did run TDM on multiple monitors, so we know it works with ATI/AMD on Windows and uses the same assumption (app sees huge screen, driver does the rest). So I am unsure why SoftHT would be nec.? (Maybe it is only for some other users?)

Well if like me I now have an mixed nVidia setup and if I get a third monitor 3d surround wont be possible without getting another GTX480 (not gonna happen) so SoftTH is the only way to go atm...

Link to comment
Share on other sites

Well if like me I now have an mixed nVidia setup and if I get a third monitor 3d surround wont be possible without getting another GTX480 (not gonna happen) so SoftTH is the only way to go atm...

 

Right this is just a way to have eyefinity without a 5000 or 6000 series ATI card or have it with any nvidia setup. For those who have eyefinity, TDM is close--custom resolution and FOV is there, just need scalable HUD.

 

You'd probably be better off just 'supporting' proper eyefinity. SoftTH is just an option for those who want to have triple monitor fun without a newish ATI card.

Link to comment
Share on other sites

Right this is just a way to have eyefinity without a 5000 or 6000 series ATI card or have it with any nvidia setup. For those who have eyefinity, TDM is close--custom resolution and FOV is there, just need scalable HUD.

 

I am working on that :)

 

I implemented two new spawnargs r_guiCenterX and r_guiCenterY (I am going probably to rename the lot from "r_guiXYZ" to "gui_XYZ", tho):

 

With these settings you get:

seta r_guiHeight "0.7"
seta r_guiWidth "0.6"
seta r_guiCenterY "0.5"
seta r_guiCenterX "0.3"

 

Here is a WIP screenshot, you can see that the GUI (red debug border) and thelightgem (green debug border) are aligned properly, together with the weapon and the "message" Game Saved. The inventory in the bottom is on a sep. GUI and I did not adjust it yet. Air bar and health bar are also missing (but invisible here):

 

 

 

The thing is a bit complicated, apparently the "offsets" in a GUI rect are relative to the parent window. The size, however, is not, you cannot scale the window rects, neither the parent, not the childs, except if you scale them manually. (It would have been so cool if you could just set "rect 100, 100, 320, 240" and get a 0.5,0.5 times GUI with all children at 0.5 the size...*sigh*)

 

Anyway, this position-is-relative-scale-not makes adjusting things rather tricky, fortunately, the effects all cancel each other and all you need to do is to convert:

 

rect 100, 50, 200, 60

 

to

 

rect 100 * "gui::gui_width", 50 * "gui::gui_height", 200 * "gui::gui_width", 60  * "gui::gui_height"

 

and it works! (The "gui::gui_width" etc variables are set each frame by the code. Technically you could even make the HUD shift and wobble :unsure: But I am not sure what that might be useful for :D

 

Anyway, there is one small problem: Font sizes. Text can only be scaled with one parameter, so I am using the average of X and Y for now. That means if yo stretch the GUI to be very tall or very narrow, you might end up with text that is slightly too big or too small (and not the proper aspect, anyway). Maybe I need to add a CVAR so players can override it.

 

For the normal "GUI covers 1/3 of the screen" usage case it will be ok, tho, as you can see above.

 

 

You'd probably be better off just 'supporting' proper eyefinity. SoftTH is just an option for those who want to have triple monitor fun without a newish ATI card.

 

Yeah. Does somebody know whether SoftHT atually works with TDM?

"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Link to comment
Share on other sites

SoftTH wont work, as far as I can see the OpenGL support isnt near complete tho there are random posts talking about it being in the works, it's inaccessible in the released versions, most likely not even compiled it. Doom3 is also listed as "Doesn't work" on that list. I doubt it would even work correctly with the lightgem if it did work as it seems to be some elaborate hook for rendering to texture then splitting the raster to fit the displays+bezels.

Link to comment
Share on other sites

 

and it works! (The "gui::gui_width" etc variables are set each frame by the code. Technically you could even make the HUD shift and wobble....

 

 

 

 

Very cool. I suppose you could make it wobble to be a visual cue when you get hit by an arrow or take some damage. With the 1/3 size HUD you can put eyefinity as a 'supported' mode on the next release :blink:. Pretty fancy. Although you'd still have stretched menus--but as long as it isn't stretched in-game, it doesn't even matter.

Link to comment
Share on other sites

Very cool. I suppose you could make it wobble to be a visual cue when you get hit by an arrow or take some damage.

 

I tried it, and without some sophisticated "time-base driving" (e.g. a slow sinus curve or something) it just looks really bad :D Let's forget wobble for now.

 

With the 1/3 size HUD you can put eyefinity as a 'supported' mode on the next release :blink:. Pretty fancy. Although you'd still have stretched menus--but as long as it isn't stretched in-game, it doesn't even matter.

 

That's the plan, but I need a few more GUIS to edit before it can be committed.

 

As for the menus, they are set to "fullscreen", and I don't think they could ever be scaled - unless we move them of from "fullscreen" (but then I don't know what other effects that will have, plus you would then need a suitable background to cover them.) Anyway, I have not yet tried to scale the menus. One thing after another :)

"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Link to comment
Share on other sites

  • 2 years later...

Excellent work you're doing here, Tels. I can't wait to have a scaled GUI! Very excited. I play only on a single 1920x1200 monitor now because the stretched GUI is off-putting to me but hopefully you'll get a full handle on this shortly.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recent Status Updates

    • nbohr1more

      Was checking out old translation packs and decided to fire up TDM 1.07. Rightful Property with sub-20 FPS areas yay! ( same areas run at 180FPS with cranked eye candy on 2.12 )
      · 0 replies
    • taffernicus

      i am so euphoric to see new FMs keep coming out and I am keen to try it out in my leisure time, then suddenly my PC is spouting a couple of S.M.A.R.T errors...
      tbf i cannot afford myself to miss my network emulator image file&progress, important ebooks, hyper-v checkpoint & hyper-v export and the precious thief & TDM gamesaves. Don't fall yourself into & lay your hands on crappy SSD
       
      · 3 replies
    • OrbWeaver

      Does anyone actually use the Normalise button in the Surface inspector? Even after looking at the code I'm not quite sure what it's for.
      · 7 replies
    • Ansome

      Turns out my 15th anniversary mission idea has already been done once or twice before! I've been beaten to the punch once again, but I suppose that's to be expected when there's over 170 FMs out there, eh? I'm not complaining though, I love learning new tricks and taking inspiration from past FMs. Best of luck on your own fan missions!
      · 4 replies
    • The Black Arrow

      I wanna play Doom 3, but fhDoom has much better features than dhewm3, yet fhDoom is old, outdated and probably not supported. Damn!
      Makes me think that TDM engine for Doom 3 itself would actually be perfect.
      · 6 replies
×
×
  • Create New...