The SoftTH Thread

Oldie

Mean Old Administrator
Staff member
Joined
Jan 12, 2004
Messages
21,888
Now, I know there are some SoftTH haters out there, and that's fine. HardOCP though, has always had a theme of getting more "bang for your buck", so finding free solutions that provide an alternative to spending more money (like OC'ing) are always welcome discussion here. ;)

So I'm currently running 3 Dell 2007fp's at 1600x1200 on a 4850 with a 2600xt as the card for the 3rd display. Using SoftTH to span the game does work, but I'm getting a horrid fisheye effect. Now I've seen several screenshots of people running it on SoftTH, and they were able to maintain a "normal" look for the side monitors.

In this photo, Louis (the black guy) is on the center screen, and you can see the fisheye effect progressing the farther out the shot goes as evidenced by Bill and Francis:

http://www.newoldie.com/forumpics/softthl4dfish.jpg <-Large Image

Here's my current config:

Code:
; SoftTH 1.08 configuration file
; by Kegetys, http://www.kegetys.net
;

[config]
; deviceIDLeft/right: Direct3D device ID&#8217;s of left and right monitor, or &#8216;auto&#8217; for automatic
; secondaryWidth/Height: Left&right monitor resolution, or &#8216;auto&#8217; to use same as middle screen resolution
; secondaryRefresh: Refresh rate of left & right monitors, or &#8216;auto&#8217; for automatic
; secondaryFormat: Secondary device image format, &#8216;RGB32', &#8216;RGB16' or &#8216;RGB16D&#8217;.
; borderSize: Size in pixels of frame border between monitors that is discarded
; noHotkeys: Set to 1 to disable all hotkeys
; noOSD: Set to 1 to disable on-screen display when changing settings
deviceIDLeft=1
deviceIDright=2
secondaryWidth=1600
secondaryHeight=1200
secondaryRefresh=auto
secondaryFormat=RGB32
borderSize=0
sideExtraWidth=0
noHotkeys=0
noOSD=0

[Direct3D]
; ** Advanced setting for Direct3D games **
; lensCorrection: Lens correction, set to 1 to enable support. >1 to enable by default
; lensCorrectionEdge: Lens correction edge offset
; hideNondefaultDevices: Hides all but the default adapter from the game
; forceHorizontalFOV: Forces horizontal FOV to be three times as wide
; forceResolutionWidth/Height: Forces device to be created with this resolution
; force16bitDepth: Force game to use 16bit depth buffer, can improve performance and reduce memory use
; sleepBeforeRead: Time in ms to sleep before reading back buffer data from video card
; useMultihead: Uses multihead features of primary card if available, can increase performance and reduce memory use
; delayedPresent: When useMultihead enabled, delay primary monitor present to sync with secondary head
; swapOrder: Swap order at which the frame contents are copied
; d3d8dll: Path to D3D8.dll/D3D9.dll to use or auto for automatic (system32 dir)
lensCorrection=1
lensCorrectionEdge=0
cylindicalCorretionAngle=0
hideNondefaultDevices=1
forceHorizontalFOV=0
forceResolutionWidth=4800
forceResolutionHeight=1200
force16bitDepth=0
sleepBeforeRead=2
useMultihead=0
delayedPresent=0
swapOrder=0
autoSquash=0
d3d8dll=auto

[hooks]
; Win32 API hooking settings &#8211; Used for some extra compatibility and game-specific fixes
; doHooking: Enable/disable hooks in Direct3D, with OpenGL hooks are always enabled
; doScaleMouseCoordinates: Scale mouse coordinates for getCursorPos to fix games which do not handle negative screen coordinates properly
; doScaleFromLeftScreen: Spread out mouse coordinates from left screen to full width
; doScaleWindowRects: Scale focus window WindowRect
; mouseXoffset: Number of pixels to offset mouse cursor position in X axis, to fix misplaced cursor due to negative screen coordinates. auto = use X resolution
doHooking=1
doScaleMouseCoordinates=0
doScaleFromLeftScreen=0
doScaleWindowRects=0
mouseXoffset=auto

; Triplehead screenmodes to add to resolutions list (width multiplied by 3 and border added)
; &#8216;auto&#8217; adds current primary monitor desktop resolution
; Must be last in this file
[modes]
1600×1200x60
1600×1200x60
1600×1200x60
auto

It's set to 16:9, 4800x1200 in game. Any recommendations for "normalizing" the image on the side monitors?

As a side note, while the graphics suffer a bit, I think if I can get the display issue fixed SoftTH is a pretty alright solution for the price. :)
 
i haven't used softTH, but from what i've read about how it works, i'm under the impression that it's the LensCorrectionEdge value that you need to adjust (up) to reduce the fisheye effect. have you tried the softTH forums? they're not super active, but there's usually a few people lurking around in there.
 
Yeah....they're not exactly functional forums. :p

No search at all, I'll give it a shot, but I figured I would ask here, and I know there are some [H] folk out there interested in it.
 
Hey Oldie, did you put the SoftTH files in the Steam Folder? or did you create a new folder? b/c I can't even open a game w/ the files in the "steam" folder...ie steam will open, but as soon as I open up L4D, I get the program is not responding message

thanks!
 
As I mentioned in the monitors thread, the side screens are correct, that distortion is supposed to be there. Even with an actual TripleHead2Go, the game looks the same.

Quoting my explaination:
The "distortion" you're describing on the side screens is an unavoidable consequence of how game cameras work; even on a single monitor, the farther an object gets from the center the wider it becomes.

This behavior is actually 100% correct for projecting onto the flat plane of a monitor. As long as you're sitting at a reasonable distance from the screens (so the side monitors are in your peripheral vision) and look straight ahead, the side screens line up with your eyes peripheral vision and everything looks perfect (yup, game cameras rely on you looking dead center on the screen for the perspective to line up properly, even on a single monitor).

Things don't look right only when you look directly at a side screen, because you're looking at what is supposed to be in your peripheral. Your eyes see the same distortion, but the way our brains work prevents us from looking directly out of our own peripheral to see the effect. The game has no way of tracking where you're looking, so by allowing your gaze to drift off the center monitor you take your own perspective out of alignment with the games assumed perspective.
In short, if the distortion is noticeable, you're either sitting too far away from your screens, or you have the game's FOV cranked up way too high.

SofTH does offer a "lens correction" feature, but it steals vertical resolution on your primary monitor to make the side screens match. Set "lensCorrection=2" (0 is off, 1 is off but makes it enable-able with an in-game key combo, 2 is forced on) and then try a setting of "lensCorrectionEdge=60" or "lensCorrectionEdge=80"
 
Last edited:
I'll try the config changes, thanks. :)

I get what you're saying, but the effect is FAR to pronounced like it is now, and causes more distraction than it does add to the experience. Look how distorted zoey is in this shot:

http://www.newoldie.com/forumpics/softthl4dfish1.jpg

I'll try the mods above and see if I like it better.
 
Last edited:
Hmm, this might be a consequence of 4800x1200 appearing under "16:9" in left4Dead's resolution options.

It scales the FOV as your screen gets wider, but it seems like it might be scaling assuming 16:9 screens instead of 4:3 screens. I would try adjusting Left4Dead's FOV setting before you mess with SoftTH's lens correction.
 
SofTH does offer a "lens correction" feature, but it steals vertical resolution on your primary monitor to make the side screens match. Set "lensCorrection=2" (0 is off, 1 is off but makes it enable-able with an in-game key combo, 2 is forced on) and then try a setting of "lensCorrectionEdge=60" or "lensCorrectionEdge=80"

Forcing LensCorrection causes the game to be un-viewable (thousands of triangles) so that's a no-go.

Hmm, this might be a consequence of 4800x1200 appearing under "16:9" in left4Dead's resolution options.

It scales the FOV as your screen gets wider, but it seems like it might be scaling assuming 16:9 screens instead of 4:3 screens. I would try adjusting Left4Dead's FOV setting before you mess with SoftTH's lens correction.

That's kind of what I was thinking. I've tried changing it, but there's been no noticeable effect.
 
I'm looking for a way to adjust Left4Dead's FOV now, the old commands that worked in Half-Life 2 don't appear to be doing anything. If it is assuming 16:9 screens, then the FOV is a bit too wide for my 16:10 screens (probably not hugely noticeable), and WAY too wide for your 4:3 screens.
 
Doh..I was using fov_desired # and apparently it does absolutely nothing now. :p
 
Well I finally got it to work, thanks yogaxi for the help, but I am getting horrible performance

14fps ouch and this is w/ nothing turned up, ie no AA or AF, oh and for poops and giggles, I even have CFX enabled (ie. 2 gpu's on the 30" and 1 gpu powering my 2x20"s) and no difference in FPS @ all, it looks great, but plays like garbage =(
 
Really? My performance hasn't really changed at all to be honest. If my 4850 can hack it, no idea why your 4890 can't.
 
Oldie:
Because he's spanning across three 2560x1600 monitors (combined resolution of 7680x1600) :p

yang88she:
Try changing "secondaryFormat" to RGB16 or RGB16D or YUV12, that will cut the required bandwidth for the secondary screens in half by reducing them to 16 bit color.
Instead of, or in addition to, reducing bit-depth, you could also try changing "secondaryWidth" and "secondaryHeight" to something smaller than 2560x1600 (perhaps 1920x1200 or 1680x1050).
Make sure you have two screens on your primary card and one screen on the secondary card. If you have two screens on the secondary card, that will kill performance.
 
Last edited:
Oldie:
Because he's spanning across three 2560x1600 monitors (combined resolution of 7680x1600) :p

yang88she:
Try changing "secondaryFormat" to RGB16 or RGB16D or YUV12, that will cut the required bandwidth for the secondary screens in half by reducing them to 16 bit color.
You have two screens on your primary card and one screen on the secondary card, right? If you have two screens on the secondary card, that will also kill performance.

thanks, I will try that...

my actual resolution is 4960x1600 =D I wish I had 3x30" for 7680x1600, that would incredibly insane and my wife would absolutely kill me
 
2560+1200+1200 (20's are vertical 1200x1600) =P

officef.jpg



damn tried all the RGB16 or RGB16D or YUV12 and still no difference =(

oh well
 
Last edited:
I've been playing around with it, and I'm getting to the point where I'm pretty happy with it. I have to admit...this is just dead sexy. :p

l4d3mon1.jpg
 
oldie what settings are you using and how's the fps?

I'm keeping it pretty light

4800x1200
4x/4x
Vsync enabled
Shader very high
effect and model medium
ppm high

I haven't checked the FPS but it's very smooth.
 
I was doing tri-screen until I start hatting those black bar that makes the distance between the screens...
it really annoy me to see 2 black bar during the game play :S
 
for some reason, i'm getting tapped out @ 14 fps, was there anything in particular that you tweaked Oldie?
 
Nope, and we're using the same card driver too. Here's my current config file:

Code:
; SoftTH 1.08 configuration file
; by Kegetys, http://www.kegetys.net
;

[config]
; deviceIDLeft/right: Direct3D device ID’s of left and right monitor, or ‘auto’ for automatic
; secondaryWidth/Height: Left&right monitor resolution, or ‘auto’ to use same as middle screen resolution
; secondaryRefresh: Refresh rate of left & right monitors, or ‘auto’ for automatic
; secondaryFormat: Secondary device image format, ‘RGB32', ‘RGB16' or ‘RGB16D’.
; borderSize: Size in pixels of frame border between monitors that is discarded
; noHotkeys: Set to 1 to disable all hotkeys
; noOSD: Set to 1 to disable on-screen display when changing settings
deviceIDLeft=1
deviceIDright=2
secondaryWidth=1600
secondaryHeight=1200
secondaryRefresh=auto
secondaryFormat=RGB32
borderSize=0
sideExtraWidth=0
noHotkeys=0
noOSD=0

[Direct3D]
; ** Advanced setting for Direct3D games **
; lensCorrection: Lens correction, set to 1 to enable support. >1 to enable by default
; lensCorrectionEdge: Lens correction edge offset
; hideNondefaultDevices: Hides all but the default adapter from the game
; forceHorizontalFOV: Forces horizontal FOV to be three times as wide
; forceResolutionWidth/Height: Forces device to be created with this resolution
; force16bitDepth: Force game to use 16bit depth buffer, can improve performance and reduce memory use
; sleepBeforeRead: Time in ms to sleep before reading back buffer data from video card
; useMultihead: Uses multihead features of primary card if available, can increase performance and reduce memory use
; delayedPresent: When useMultihead enabled, delay primary monitor present to sync with secondary head
; swapOrder: Swap order at which the frame contents are copied
; d3d8dll: Path to D3D8.dll/D3D9.dll to use or auto for automatic (system32 dir)
lensCorrection=1
lensCorrectionEdge=0
cylindicalCorretionAngle=0
hideNondefaultDevices=1
forceHorizontalFOV=70
forceResolutionWidth=4800
forceResolutionHeight=1200
force16bitDepth=0
sleepBeforeRead=2
useMultihead=0
delayedPresent=0
swapOrder=0
autoSquash=0
d3d8dll=auto

[hooks]
; Win32 API hooking settings – Used for some extra compatibility and game-specific fixes
; doHooking: Enable/disable hooks in Direct3D, with OpenGL hooks are always enabled
; doScaleMouseCoordinates: Scale mouse coordinates for getCursorPos to fix games which do not handle negative screen coordinates properly
; doScaleFromLeftScreen: Spread out mouse coordinates from left screen to full width
; doScaleWindowRects: Scale focus window WindowRect
; mouseXoffset: Number of pixels to offset mouse cursor position in X axis, to fix misplaced cursor due to negative screen coordinates. auto = use X resolution
doHooking=1
doScaleMouseCoordinates=0
doScaleFromLeftScreen=0
doScaleWindowRects=0
mouseXoffset=auto

; Triplehead screenmodes to add to resolutions list (width multiplied by 3 and border added)
; ‘auto’ adds current primary monitor desktop resolution
; Must be last in this file
[modes]
1600×1200x60
1600×1200x60
1600×1200x60
auto

If you copy it, make sure you adjust it for your resolution.
 
I've been playing around with it, and I'm getting to the point where I'm pretty happy with it. I have to admit...this is just dead sexy. :p

How did you finally change the FOV setting in Left4Dead?
 
can't seem to run your setting Oldie and I'm still being capped @ 15fps...oh well I'll figure it out later =D
 
Devil May Cry 4, also successful. The HUD even moves itself onto the center monitor, no tweaks required :D

40366703.jpg
 
Ok here is Call of Duty 4 , the sides are a bit too distorted for my taste :p

General fixes still apply; sit closer or turn the FOV down a tad (or try out lens correction), never look directly at the side screens, etc.
 
3 Monitor does look sexy but I still would rather have 1 monitor so there is no black between each.
 
3 Monitor does look sexy but I still would rather have 1 monitor so there is no black between each.
The separation between the screens honestly isn't that distracting. I would still rather have 3x the horizontal field of view with a couple one-inch separations than be reduced to a single monitor and 1/3rd of the FOV I had before.

alienware has a monitor like that, its like 28"? wide and curves.

GINORMOUS

EDIT: http://gadgets.boingboing.net/2008/01/07/alienwares-curved-lc.html
Seen it, not impressed. It only runs at 2880x900 (it's two low resolution widescreens stuck together). The lack of vertical space makes it bothersome for normal desktop work, and even then, triple 22" is wider and higher resolution all around.

Nice try though, but not quite good enough I'm afraid. Maybe if they had managed 3360x1050 it would be a bit more attractive.
 
although I was only getting 15fps. the gaming experience is definitely a change....I'm going to have to sit a little further back as I was not used to having to turn my head when I hear zombies approaching and the next thing you know it it's literally a zombie head on my right lcd hahaha
 
I know this seems like an obvious thing...but do you have VSync on? It could drop you all the way down to 15FPS if you can't quite maintain 30fps.
 
Ok COD5 works like a charm, i simply LOVE it :D

here is a video test

http://www.youtube.com/watch?v=ltnYCNQi_rY

but i noticed that the center monitor has different color compare to the sides, how can i fixe that ? My monitors do have the same setup :p

Thanks

edit: ok i tried to put secondaryFormat=RGB32 instead of RGB16D but none of my game work .

not a big deal, when i'm playing i do not notice it, after two days of testing i am completely excited with that new gaming experience :D
 
Last edited:
I have a 23 inch monitor (center) running at 1920x1200 and then 2 side 15" monitors running at 768x1024 (Portrait) but I'm unable to get call of duty 4 or any game going with SoftTH, does anyone have a successful story with a similar setup?
 
I been using softTH since I got my 3 Screens like 2 years ago.

Now I am just waiting to see if the ATI eyefinity thing is real.

If so then there will be no need for softTH. I am very excited.

I would swtich to ATI for the 1st in a blink of an eye for true multimon support.
 
Oldie: Found a fix for Source games assuming the wrong aspect ratio!

Open "..\Steam\steamapps\common\left 4 dead\left4dead\cfg\video.txt", the value you want to tweak is "setting.aspectratiomode"

"-1" is for 5:4
"0" is for 4:3
"1" is for 16:9
"2" is for 16:10
 
i still can't seem to get mine to run correctly...tried running the 2 side screens as the main but still get tapped out @ 15 fps w/ VS off
 
Back
Top