Euro Truck Simulator 2

Euro Truck Simulator 2

438 ratings
Dual Monitor / Screen Guide
By DC-GS
This guide shows how to configure a working dualscreen setup.
6
4
10
5
2
2
   
Award
Favorite
Favorited
Unfavorite
Introduction
In this guide I will show how to configure the OS and the game to work properly with two screens. This guide is updated in mid 2021 since DX9 isnt available anymore in current version of the game.


Let's get started.
This guide consist of two major parts.
First is to merge both screens to a single virtual screen because the game (stil) cant adress multiple screens.
Second Rearrange the camera, so the wheel isn't between both screens.

In my case I show the cabin with left mirrors on my primary screen. The right part of the cabin with my right sidemirrors are displayed on my secondary screen.

It will look like this:
Step 1 - Virtual screen
Like I allready said, first part is to merge both screens to a single virtual one.

Back in the days I made this guide, the game run on DX9. For DX9 there was an easy solution to combine multiple screens together for a single application - Soft TH[www.softth.net].
Unfortunately the latest version of the game doesnt support DX9. I gonna keep the old section for anyone still playing the old version though.

The only way now is to use Surrond (nVidia) or Eyefinity (AMD), see option B.
I will mention how it can be automated for nVidia cards.

Option C is removed, its now part of option B, since it rely on nVidia Surround.

All options have a thing in common: after combining the screens into a single big screen, you need to change the resolution ingame.
Step 1, option A - Soft TH - DEPRECATED
I keep this option in this guide for everyone playing an old version of ETS2. The game needs to be launched in DX9 for this to work!

Thanks to for Mr Stevens mentioning this great tool.
You can get the "latest" version from Soft TH homepage[www.softth.net].
It only change the screen for a single app.

You have to drop the d3d9.dll into the same folder the executeable is located
( like: \SteamApps\common\Euro Truck Simulator 2\bin\win_x86 ).
Launch the game in DirectX 9 mode and exit the game again.
A new file "config.SoftTHconfig" was created.
Edit it with any text editor of your choice.

I've two 24" screens, runnig HD and 1.8cm thick border.
Using a ruler measuring the gap between the screens I've placed the ruler on one of my screens and measured this gap in pixel - in my case 120px.

My final resolution is 3960x1080. ( 3960 = 1920 +120 +1920). The second screen starting at 2040 ( 1920 +120 ).
Soft TH has a great guide[www.softth.net] how to calculate all this values.

My config:
[main] renderResolution=3960x1080 nonlocalFormat=RGB16D keepComposition=0 smoothing=1 debugD3D=0 zClear=1 vsync=0 tripleBuffer=0 screenshotFormat=jpg dllPathD3D9=auto dllPathDXGI=auto dllPathD3D11=auto [overrides] forceResolution=0 antialiasing=0 processAffinity=0 FOVForceHorizontal=0 FOVForceVertical=0 [debug] compatibleIB=0 compatibleTex=0 compatibleVB=0 enableVBQuirk=0 [head_primary] sourceRect=0,0,1920,1080 screenMode=1920x1080 [head_1] devID=1 sourceRect=2040,0,1920,1080 transportResolution=1920x1080 transportMethod=auto noSync=0 fpsLimit=0
Step 1, option B - NVIDIA Surround / AMD Eyefinity
This is the only reliable way of combining two screens into a single virtual one. I only own NVIDIA cards, so i cant tell where you setup Eyefinity.

For NVIDIA Surround, open your NVIDIA control panel. Open the "Surround, PhysX" category. Enable Surround by clicking the checkbox:

In advanced settings you can add a bezel like in option A. The bezel is only needed, if you plan on using a single view (option A from step 2).

Like I said, no idea how it works for AMD, but I guess it cant be that difficult.

Warning! It will mess up your desktop. It will move around your icons, it will move around your apps. Fullscreen will span both screens, making it unsuitable for anything but very specific games. I hate it.

Step 1, option B Extension - Display Managers
To avoid the issues with running Surround 24/7, a display manager can be used. This manager will enable NVIDIA Surround as you start the game and switch back to your default desktop settings as soon the game shuts down. It will work for any DX version, for OpenGL, for any graphics API.

Some time ago I mentioned the Helios Display Manager[github.com], but the developer was quite busy and the product isnt finished yet. An alternative is the fork of Helios called DisplayMagician[github.com]. I've tested DisplayMagician and it does work fine.

Both Display Manager work on NVIDIA Surround only.
You could donate an AMD video card to Terry MacDonald[github.com], it may help developing AMD Eyefinity support. No, I dont know him, he dont know me, we are not affiliated.

Display Magician now supports both, Nvidia and AMD GPUs!

Both display managers (DM) have a guide on how to use them. It boils down to:
  • install Display Manager
  • Save current desktop a new profile in DM
  • Enable Surround in NVIDIA CP
  • Save Surround as second profile in DM
  • Switch back to default profile (optional)
  • Add a new shortcut in DM
  • Choose game - DisplayMagician can launch any Steam game, just click one from the list
  • Marry it with the Surround display profile
  • Save shortcut to desktop - ready to launch
Step 2 - Multimon Config
Now we have a picture on both of our screens. Unfortunanly in default settings the game center the view. The steering wheel is split on two screens.

To get started, we have to enable custom multimon config first.
Go to your user-ETS2 folder (the folder where your savegame etc is located ) and open "config.cfg" in texteditor. Find the line "r_multimon_mode" and set the value to 4. Other modes are documented in ETS2 Multi-Monitor Support[www.eurotrucksimulator2.com]
Launch the game once to generate the "multimon_config.sii" file.

Depending how the screens are placed, we can choose between different settings.
Open the "multimon_config.sii" file from the same folder in texteditor.
Step 2, option A - single view/camera - plane screens
In this mode we greatly increase the FOV and move the camera to the center of the first screen.
It will look like this:


To cut the chase, this is my final configuration:
SiiNunit { multimon_config : _nameless.0000.0000.0472.B1D0 { normalized_ui_x: 0.000000 normalized_ui_width: 0.500000 monitors: 1 monitors[0]: _nameless.0000.0000.06F3.CE30 } monitor_config : _nameless.0000.0000.06F3.CE30 { name: main normalized_x: 0.000000 normalized_y: 0.000000 normalized_width: 1.000000 normalized_height: 1.000000 horizontal_fov_relative_offset: 0.000000 vertical_fov_relative_offset: 0.000000 heading_offset: 0.000000 pitch_offset: 0.000000 roll_offset: 0.000000 camera_space_offset: (0.000000, 0.000000, 0.000000) horizontal_fov_override: 145.000000 vertical_fov_override: 60.000000 frustum_subrect_x: 0.333000 frustum_subrect_y: 0.000000 frustum_subrect_width: 0.666000 frustum_subrect_height: 1.000000 render_interior: true render_exterior: true } }

Basicly I create a view with very high FOV for 3 screens and cut out only the center and right screen using "frustum_subrect" parameters.
Step 2, option B - dual view/camera - angeled screens
To prevent the "fisheye" effect on the far side of the vew, it is possible to setup a second view. It works best, if the second screen is angeled and you look at it at a right angle.



You can see out of the right window all the time. Also you will have to adjust the right sidemirror since you see lot of your own truck.

SiiNunit { multimon_config : _nameless.04A6.56A8 { normalized_ui_x: 0.000000 normalized_ui_width: 1.000000 monitors: 2 monitors[0]: _nameless.0714.5590 monitors[1]: _nameless.0714.5618 } monitor_config : _nameless.0714.5590 { name: center normalized_x: 0.000000 normalized_y: 0.000000 normalized_width: 0.500000 normalized_height: 1.000000 horizontal_fov_relative_offset: 0.000000 vertical_fov_relative_offset: 0.000000 heading_offset: 0.000000 pitch_offset: 0.000000 roll_offset: 0.000000 camera_space_offset: (0.000000, 0.000000, 0.000000) horizontal_fov_override: 90.000000 vertical_fov_override: 0.000000 frustum_subrect_x: 0.000000 frustum_subrect_y: 0.000000 frustum_subrect_width: 1.000000 frustum_subrect_height: 1.000000 render_interior: true render_exterior: true } monitor_config : _nameless.0714.5618 { name: right normalized_x: 0.500000 normalized_y: 0.000000 normalized_width: 0.500000 normalized_height: 1.000000 horizontal_fov_relative_offset: 0.000000 vertical_fov_relative_offset: 0.000000 heading_offset: -90.000000 pitch_offset: 0.000000 roll_offset: 0.000000 camera_space_offset: (0.000000, 0.000000, 0.000000) horizontal_fov_override: 90.000000 vertical_fov_override: 0.000000 frustum_subrect_x: 0.000000 frustum_subrect_y: 0.000000 frustum_subrect_width: 1.000000 frustum_subrect_height: 1.000000 render_interior: true render_exterior: true } }
Step 2, option C - hybrid - screen at 40° angle
I wasn't happy with either of the two options.
Neither looked well on my setup: two screen at 40° angle.

I wanted to use option B with the camera only rotated by 40° not 90°.
In that case I would see lot of stuff on both screens. So I had to offset the right screen further to the right. I did so using knowledge from option A. That was the solution:



It took some serious math. Then it took some more math since I had some errors in my calculation. At the end I had my final values.
This is my current configuration:
SiiNunit { multimon_config : _nameless.04A6.56A8 { normalized_ui_x: 0.000000 normalized_ui_width: 0.625000 monitors: 2 monitors[0]: _nameless.0714.5590 monitors[1]: _nameless.0714.5618 } monitor_config : _nameless.0714.5590 { name: center normalized_x: 0.000000 normalized_y: 0.000000 normalized_width: 0.500000 normalized_height: 1.000000 horizontal_fov_relative_offset: 0.000000 vertical_fov_relative_offset: 0.000000 heading_offset: 0.000000 pitch_offset: 0.000000 roll_offset: 0.000000 camera_space_offset: (0.000000, 0.000000, 0.000000) horizontal_fov_override: 93.200000 vertical_fov_override: 60.000000 frustum_subrect_x: 0.000000 frustum_subrect_y: 0.000000 frustum_subrect_width: 1.000000 frustum_subrect_height: 1.000000 render_interior: true render_exterior: true } monitor_config : _nameless.0714.5618 { name: right normalized_x: 0.500000 normalized_y: 0.000000 normalized_width: 0.500000 normalized_height: 1.000000 horizontal_fov_relative_offset: 0.000000 vertical_fov_relative_offset: 0.000000 heading_offset: -40.000000 pitch_offset: 0.000000 roll_offset: 0.000000 camera_space_offset: (0.000000, 0.000000, 0.000000) horizontal_fov_override: 115.290000 vertical_fov_override: 43.500000 frustum_subrect_x: 0.536650 frustum_subrect_y: 0.000000 frustum_subrect_width: 0.463350 frustum_subrect_height: 1.000000 render_interior: true render_exterior: true } }

I had some issues with my right mirror, not being able to adjust it to how I wanted it. No issues with current game version, so that was fixed!

For custom setups I've published my spreadsheet with the calculations:
https://docs.google.com/spreadsheets/d/1LNAIA2uqw-3_Zj2zY5lnxc8n9qXvwfresYllwtJziH8
Green are input fields, orange are outputs.
Right hand wheel
The settings above are for most part of europe where the steering wheel is on the left side. For an UK truck, you probably want to mirror the settings.

For Step 2 you have to mirror the settings. For example option C (only different settings listed):

monitor_config : _nameless.0714.5590 { normalized_x: 0.500000 } monitor_config : _nameless.0714.5618 { name: left normalized_x: 0.000000 heading_offset: 40.000000 frustum_subrect_x: 0.000000 }
Use this example if you want to know what you need to change if you are using your own config.


To make it easier, that's how the finished config should look like:
( UI moved to right screen )

SiiNunit { multimon_config : _nameless.04A6.56A8 { normalized_ui_x: 0.500000 normalized_ui_width: 0.500000 monitors: 2 monitors[0]: _nameless.0714.5590 monitors[1]: _nameless.0714.5618 } monitor_config : _nameless.0714.5590 { name: center normalized_x: 0.500000 normalized_y: 0.000000 normalized_width: 0.500000 normalized_height: 1.000000 horizontal_fov_relative_offset: 0.000000 vertical_fov_relative_offset: 0.000000 heading_offset: 0.000000 pitch_offset: 0.000000 roll_offset: 0.000000 camera_space_offset: (0.000000, 0.000000, 0.000000) horizontal_fov_override: 93.200000 vertical_fov_override: 60.000000 frustum_subrect_x: 0.000000 frustum_subrect_y: 0.000000 frustum_subrect_width: 1.000000 frustum_subrect_height: 1.000000 render_interior: true render_exterior: true } monitor_config : _nameless.0714.5618 { name: left normalized_x: 0.000000 normalized_y: 0.000000 normalized_width: 0.500000 normalized_height: 1.000000 horizontal_fov_relative_offset: 0.000000 vertical_fov_relative_offset: 0.000000 heading_offset: 40.000000 pitch_offset: 0.000000 roll_offset: 0.000000 camera_space_offset: (0.000000, 0.000000, 0.000000) horizontal_fov_override: 115.290000 vertical_fov_override: 43.500000 frustum_subrect_x: 0.000000 frustum_subrect_y: 0.000000 frustum_subrect_width: 0.463350 frustum_subrect_height: 1.000000 render_interior: true render_exterior: true } }
351 Comments
Maïlare 30 Jun @ 12:57am 
Yes I have made this. But when I have tried to use to multimon commands in the in-game console, it say me : "This command can be only use with multimon mode 4". I don't understand why it doesn't work
DC-GS  [author] 30 Jun @ 12:38am 
Did you modify "config.cfg" in texteditor? Find the line "r_multimon_mode" and set the value to 4. Without it, it will just stretch the default view.
Maïlare 29 Jun @ 5:00pm 
Hello, I have a problem with the configuration. I have used the option C but the camera is centered and the steering wheel is split across the two screens. I work with AMD Eyefinity and the two screens are the same make and model. Have you any idea what is the problem ?
DC-GS  [author] 6 Jun @ 9:49am 
On which step do you struggle?
Last time I tried combining different resolution with Nvidia, it failed miserable. For Surroung, all Screens have to run an same resolution. That means, all screen run on the resolution of the smallest screen, in your case the the 27in.
Switched over to Eyefinity, but I replaced my screens too, having the same make and model. So no idea how AMD handles it.

For the second step, it may work without any changes. It would work for 2 ultrawides, the config uses relative dimensions. With different screen, it depends how step 1 works. If the 34in will run same resolution as 27in, no changes needed.
SirComeSizor 31 May @ 7:22pm 
Hey, I've got a 34 inch 3440x1440 ultrawide as my centre screen, and a 27 inch 2560x1440 acting as my right screen and i'm not too sure what modifications to make to the config to account for the ultrawide
DC-GS  [author] 25 May @ 5:38am 
Haven't run the game on default for ages. Also noticed newer maps have more details = lower FPS compared to older maps. A friend reported lower FPS without changing settings, just after few updates (games, driver).

Running on 2 screens with a single viewport (option A) will double the load on any GPU. Multiple viewports will further decrease FPS with same resolution. A better view will cost FPS.


Afaik I'm at High settings with RX7600, 3 screens, 3 viewports. Runs smooth.
ZorzoRs 23 May @ 1:04pm 
I get a huge drop on FPS after setting on Nvidia, somebody had the same issue?

I'm running with settings on Ultra, before i had close to 100fps and now i can go above 20.

My computer:

AMD Ryzen 5 8400F 6-Core Processor, 4200 Mhz, 6 Core(s), 12 Logical Processor(s)
RAM 32GB
RTX 4060
Slimpman 23 Mar @ 7:04am 
Hi, edited my own config (with author's excel tool) with 25 degree angle so you can just perfectly see through the right window and the passenger's seat is out of sight. I also raised fov a bit so you can (mostly) see the left mirror (I couldn't see my left mirror at all on fov set by author for some reason).

Only tested on some Iveco truck in driving academy, dual 1440p monitors and worked great for me!

https://pastebin.com/9APRHET6
DC-GS  [author] 20 Mar @ 10:12am 
My guess is, you tried to finetune the settings yourself. option B has the UI stretch over both screens, option C a bit onto second screen to move route advisor.

My recommendation is to start with the normalized_ values for both screens. Both screen should have 0.5 width, 1.0 height and 0.0 y. The center should have 0.0 x (screenshot looks like 0.5) and right screen should be 0.5 x (maybe it already has, but is covered by the center view).

So yeah, make sure normalized_x of your main screen is set to 0.0.
Ringo 20 Mar @ 8:39am 
Thank you, however, I tried following Step 2, options B and C, but it displays very strangely. The main center screen is almost black but shows the minimap, while the right secondary screen displays the main game.
The in-game image looks like this: https://gyazo.com/0ad894ce6900786586e4b9791288ac6c

As for Step 2, option A, the center screen seems to display fine, but the right secondary screen appears very large.

I used 2 monitor 27inch 1080p same model
Please help me resolve this