Skip to content
View in the app

A better way to browse. Learn more.

The AVSIM Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Multi-Monitor Distortion Workaround Shader

Featured Replies

I've been experimenting with a workaround for the lack of multi-view for multi-monitor setups and reducing the distortion on the side screens.
I figured I could write a ReShade shader that squeezes the outside screens while leaving the center one unchanged.

I haven't had time to really test this much yet, but I wanted to share my efforts so far and see if that is of any benefit to any other multi-monitor simmers.

This requires Reshade installed for MSFS. Just save the shader code to a file called MultiMonitor.fx and copy it to your ReShade shader folder for MSFS and enable it in the Reshade menu. 
It only works with 3 monitors of the same size and resolution. You can either run in surround mode or drag the MSFS window to cover all 3 screens.

Yes, I know, some of the screen space is wasted, you can't click on anything in the outside views, performance impact, blah blah blah. 

The math still needs work but you can squeeze the side view with the Factor value and distort it with the Power value.

When I have more time I will revisit the math and also add bezel correction.

y4mbdfVUW61UmbQUZ91KUHQgjjoUf1XLNoMrp4ir

3 monitor setup distortion

y4mY2aMcg7YGf4o_FSAd_vZ2FPeoKckoMC0pNSLt

Shader squeezing outside views with default settings

ReShade shader Code:

#include "ReShadeUI.fxh"

uniform float factor < __UNIFORM_SLIDER_FLOAT1
	ui_min = 0.0; ui_max = 5;
	ui_tooltip = "Factor";
> = 1;

uniform float power < __UNIFORM_SLIDER_FLOAT1
	ui_min = 1; ui_max = 10;
ui_tooltip = "Power";
> = 2.5;

#include "ReShade.fxh"

float3 MultiMonitorPass(float4 vpos : SV_Position, float2 texcoord : TexCoord) : SV_Target
{
	float3 color;
	float2 sourceCoord;

	float texTimes3 = texcoord.x * 3.0;
	float monitorPos = texTimes3 - 1.0;
	float monitorIx = floor(monitorPos);

	float texTimes3Centered = texTimes3 - 1.5;
	float absTex3 = abs(texTimes3Centered) - 0.5;
	if (absTex3 > 0 && absTex3 < 1) absTex3 = pow(absTex3, power);
	float centerOffs = absTex3 * monitorIx;
	float finalOffs = centerOffs * factor;
	float sourceX = texcoord.x + finalOffs;

	sourceCoord.x = sourceX;
	sourceCoord.y = texcoord.y;

	color = (sourceX < 0 || sourceX > 1) ? 0 : tex2D(ReShade::BackBuffer, sourceCoord).rgb;
	return color;
}

technique MultiMonitor
{
	pass
	{
		VertexShader = PostProcessVS;
		PixelShader = MultiMonitorPass;
	}
}

 

Matthias - KCOS
         Sim: P3D 4.5, UTX V2, ORBX Base openLC NA EU, ASP3D, TOGA, RealityXP, SPAD.neXt, Carenado GA
          PC: i9-11900k, RTX 3090, Asus Rog Strix Z590-E
Home Cockpit: Honeycomb AFC, Thrustmaster T.Flight, RealSimGear GNS530, Logitech FIP FMP FRP FSP FTQ*2, 3x55" 4K TVs (View), 26" 21:9 (Gauges)

2 hours ago, Matthias1231 said:

I've been experimenting with a workaround for the lack of multi-view for multi-monitor setups and reducing the distortion on the side screens.
I figured I could write a ReShade shader that squeezes the outside screens while leaving the center one unchanged.

I haven't had time to really test this much yet, but I wanted to share my efforts so far and see if that is of any benefit to any other multi-monitor simmers.

This requires Reshade installed for MSFS. Just save the shader code to a file called MultiMonitor.fx and copy it to your ReShade shader folder for MSFS and enable it in the Reshade menu. 
It only works with 3 monitors of the same size and resolution. You can either run in surround mode or drag the MSFS window to cover all 3 screens.

Yes, I know, some of the screen space is wasted, you can't click on anything in the outside views, performance impact, blah blah blah. 

The math still needs work but you can squeeze the side view with the Factor value and distort it with the Power value.

When I have more time I will revisit the math and also add bezel correction.

y4mbdfVUW61UmbQUZ91KUHQgjjoUf1XLNoMrp4ir

3 monitor setup distortion

y4mY2aMcg7YGf4o_FSAd_vZ2FPeoKckoMC0pNSLt

 

I applaud the effort but surely this just gives the same result as using a narrower window and adjusting the zoom to achieve the same vertical FoV? To me this would only make sense if you ran a custom screen resolution at a wider-than-actual screen width and your tweak squashed it down to the actual screen width.

Edited by MarkDH

MarkH

https://www.youtube.com/@AlmostAviation
AMD Ryzen 7 9800X3D / 64Gb DDR5 / Zotac RTX 5070 Ti / 2560 x 1440 display

  • Author

It's not the same as an FOV change. The default projection using three monitors is based on the monitors being aligned on a flat surface. This shader results in a partial (fake) projection adjustment compensating for the angle at which the outside screens are turned towards the user.

Matthias - KCOS
         Sim: P3D 4.5, UTX V2, ORBX Base openLC NA EU, ASP3D, TOGA, RealityXP, SPAD.neXt, Carenado GA
          PC: i9-11900k, RTX 3090, Asus Rog Strix Z590-E
Home Cockpit: Honeycomb AFC, Thrustmaster T.Flight, RealSimGear GNS530, Logitech FIP FMP FRP FSP FTQ*2, 3x55" 4K TVs (View), 26" 21:9 (Gauges)

19 minutes ago, Matthias1231 said:

It's not the same as an FOV change. The default projection using three monitors is based on the monitors being aligned on a flat surface. This shader results in a partial (fake) projection adjustment compensating for the angle at which the outside screens are turned towards the user.

I maintain (at least on first glance) that you will get the same effect by running a narrower window and adjusting the zoom. The required zoom setting will be larger (longer effective focal length) and hence the distortion away from the centre of the image will be less extreme. I have yet to install MSFS but by all accounts it seems to behave pretty much exactly like FSX and P3D.

MarkH

https://www.youtube.com/@AlmostAviation
AMD Ryzen 7 9800X3D / 64Gb DDR5 / Zotac RTX 5070 Ti / 2560 x 1440 display

  • Author

You keep maintaining then. Thanks for participating.

 

Matthias - KCOS
         Sim: P3D 4.5, UTX V2, ORBX Base openLC NA EU, ASP3D, TOGA, RealityXP, SPAD.neXt, Carenado GA
          PC: i9-11900k, RTX 3090, Asus Rog Strix Z590-E
Home Cockpit: Honeycomb AFC, Thrustmaster T.Flight, RealSimGear GNS530, Logitech FIP FMP FRP FSP FTQ*2, 3x55" 4K TVs (View), 26" 21:9 (Gauges)

Archived

This topic is now archived and is closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.